IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

ShowModal ne donne pas le focus ?


Sujet :

Composants VCL Delphi

  1. #1
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut ShowModal ne donne pas le focus ?
    Bonjour

    Je dois déboguer un vieux programme, et me trouve devant le symptôme suivant, au moins sous Windows 7 avec Delphi 2010 :

    Il y a Form1 et Form2 qui sont créées automatiquement.

    Dans Form1, il y a d'abord création d'une instance Excel OLE, et début de remplissage de WorkSheets sans problème. Ensuite, il y a un Form2.ShowModal

    La Form2 s'affiche correctement, "modalement" mais ne semble pas avoir le focus.
    Form2 a un ActiveControl mais il n'a pas le curseur, si on tape directement, rien ne se passe.
    Si on clique et tape du texte dans un champ de saisie, ça marche mais il y a ensuite un plantage quand on continue à utiliser l'instance Excel.
    Enfin, si on clique dans le titre de la fenêtre d'abord, puis dans le champ de saisie et qu'on tape du texte, tout est parfaitement normal.

    Auriez-vous une idée de ce qui pourrait a priori provoquer ce comportement anormal ?

    Je n'ai pas trouvé de propriété exotique dans la Form.

    Ne me dites pas qu'il faudrait créer l'instance Excel après affichage de Form2. C'est ce que je ferais de préférence, mais là il est impossible de restructurer ce programme qui est très mal écrit.

    Merci pour vos lumières !
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 846
    Points
    24 846
    Par défaut
    Créer une instance d'Excel ne va-t-il pas justement prendre le focus à la place de ton appli !
    Tu pourras juste jouer sur UserInteractive de Excel
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Oui c'est vrai, mais j'ai oublié de préciser que, juste après sa création, l'instance Excel est rendue invisible.

    Avec cette précaution, dans un petit programme éprouvette, je n'ai pas de problème. Form2 contient un TEdit qui est ActiveControl, j'ai le focus sans problème sur lui.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      Xl:=CreateOLEObject('Excel.Application');
      Xl.Visible := false;
      Xl.WorkBooks.add;
      Xl.DisplayAlerts:= false;
      Form2.ShowModal ;
    Mais avec le programme usine-à-gaz que je dois corriger, le bug existe bien, je n'ai pas le focus. Sauf erreur, l'instance reste aussi tout le temps invisible.

    Il doit y avoir autre chose...
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  4. #4
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Un indice...

    Si j'ajoute ShowMessage(' hello ! ') dans Form1, juste avant Form2.ShowModal, il n'y a pas de problème, j'ai mon focus.

    De même, si je mets un point d'arrêt.
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

Discussions similaires

  1. [WinCE/PDA] Pourquoi touche TAB ne change pas le focus ?
    Par zitoun dans le forum Windows Mobile
    Réponses: 7
    Dernier message: 24/04/2006, 09h26
  2. Réponses: 14
    Dernier message: 25/11/2005, 14h22
  3. ensemble de données pas en mode edition
    Par XloX dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/06/2005, 12h17
  4. Rnd qui ne donne pas que des bonnes valeurs
    Par kubito dans le forum Access
    Réponses: 2
    Dernier message: 08/10/2004, 18h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo