Bonjour à toutes et à tous,
J'ai créé un composant "Formulaire" que vous trouverez en fichier joint. Je travaille avec Lazarus 0.9.30.
Dans l'environnement Windows, que j'appelle ce composant à partir de la fenêtre principale d'un programme ou à partir d'une fenêtre appelée à partir de la fenêtre principale, tout fonctionne très bien.
Dans l'environnement Linux (Ubuntu 11.04), pas de problème si j'appelle le composant à partir de la fenêtre principale, par contre, à partir d'une fenêtre appelée par la fenêtre principale, le composant s'affiche, mais il ne m'est pas possible d'écrire dans les TEdit du composant, les boutons sont inactifs, les fenêtres de mon programme sont bloquées.
Quand, dans ces conditions, je passe par le débogueur, je vois que je tourne bien dans la boucle (voir ci-dessous) appelant "Application.ProcessMessage", mais c'est comme si je ne captais aucun message.
Dans ce composant, sa visualisation se fait par un appel interne à la procédure "Show". Si je la remplace par "ShowModal", à ce moment, je peux entrer des données dans mon formulaire, agir sur les boutons, mais cette fois, que l'appel soit fait à partir de la fenêtre principale ou autre, il n'y a pas de retour au programme (Ubuntu et Windows) : c'est pire !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function TFormulR.Execute: Boolean; begin AffFrm.DoShow; AffFrm.Fin:= 0; repeat Application.ProcessMessages; until AffFrm.Fin > 0; if AffFrm.Fin = 1 then Result:= True else Result:= False; end;
Avez-vous une idée de ce qui peut se passer et comment y remédier ?
Merci de votre aide.
Pierre
Partager