Probleme avec fenêtre showmodal [Résolu]

cs_philpas 77 Messages postés lundi 17 octobre 2005Date d'inscription 4 septembre 2008 Dernière intervention - 7 févr. 2006 à 13:40 - Dernière réponse : ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention
- 8 févr. 2006 à 10:19
bonjour, j'ai un problème que j'arrive pas à résoudre avec la fenêtre showmodal.
j'ai 3 fenetres. form1 form2 et form3
1) dans form1 (fiche principal)
j'ai 2 boutons
- bouton1 pour lancer form2 en showmodal
- bouton2 pour fermer la form1
2) dans form2 (fiche pour mot de passe)
- j'ai 1 edit et 2 boutons
- edit1 pour la saisi du mot de passe
- bouton1 pour tester le mot de passe et lancer form3 si Ok
- bouton2 pour annuler et revenir sur form1
3) dans form3
j'ai
- edit1 dans un groupbox1
- bouton1

le probleme est le suivant: lorsque la form3 s'ouvre l'évènement OnActivate de cette fiche me met le focus sur edit1 de form3. jusque là R.A.S. Mais lorsque je clique sur le bouton1 de form3, la fenêtre form3 semble figé. le focus ne va pas sur le bouton. Il faut que je clique une 2ème fois pour que le focus soit sur le bouton et que le bouton s'enfonce. Comment résoudre ce problème?
Apparemment lorsque je fais la vérif en mode pas à pas, l'évènement OnActivate serait exécuté 2 fois ce qui expliquerait pourquoi je ne peux pas avoir le focus sur le bouton au 1er clic. pourquoi exécuterait il 2 fois OnActivate?

voici ce que j'ai ecrit dans form1

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal; // ouvre form2 en modal
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
close; // ferme form1
end
;

voici ce que j'ai ecrit dans form2

procedure TForm2.Button1Click(Sender: TObject);
begin
if Edit1.Text='oui' then // si le mot est oui j'entre
begin
close; // je ferme form2
ShowWindow(Form1.Handle, SW_HIDE); // je rend invisible form1
form3.show; // j'ouvre form3
end;
end;

voici ce que j'ai ecrit dans form3

procedure TForm3.Button1Click(Sender: TObject);
begin
form3.Close; // je ferme form2
ShowWindow(Form1.Handle, SW_SHOW); Je rend visible form1
end;


procedure TForm3.FormActivate(Sender: TObject);
begin
Edit1.SetFocus; // je mets le focus sur edit1 de form3
end;

si je change dans form1 la ligne Form2.ShowModal; en Form2.Show; cela fonctionne comme je le voudrais mais je n'ai pas la fenêtre form2 en modal

Merci
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
cs_philpas 77 Messages postés lundi 17 octobre 2005Date d'inscription 4 septembre 2008 Dernière intervention - 7 févr. 2006 à 16:27
3
Merci
je pense avoir résolu le problème
la solution est de mettre à la place de l'évènement OnActivate, l'évènement OnShow

Merci cs_philpas 3

codes-sources a aidé 81 internautes ce mois-ci

Commenter la réponse de cs_philpas
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 8 févr. 2006 à 10:19
0
Merci
C'est bien, tu as résolu ton problème, c'est tout à ton honneur !

Maintenant, n'oublie pas de cliquer sur le bouton "Réponse Acceptée" à côté de ton cernier post pour que d'autres puissent trouver facilement une réponse à leurs propres questions, et pour que ceux qui pensent que ton problème n'est pas encore résolu ne passent plus ici en pensant que le sujet n'est pas clôs !


@+

Nico { http://www.ni69.new.fr/ }



<hr size="2" width="100%">

N'oubliez pas de cliquer sur Réponse Acceptée lorsque la réponse vous convient !
Commenter la réponse de ni69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.