Probleme avec fenêtre showmodal

Résolu
cs_philpas Messages postés 77 Date d'inscription lundi 17 octobre 2005 Statut Membre Dernière intervention 4 septembre 2008 - 7 févr. 2006 à 13:40
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 - 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

2 réponses

cs_philpas Messages postés 77 Date d'inscription lundi 17 octobre 2005 Statut Membre Dernière intervention 4 septembre 2008
7 févr. 2006 à 16:27
je pense avoir résolu le problème
la solution est de mettre à la place de l'évènement OnActivate, l'évènement OnShow
3
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
8 févr. 2006 à 10:19
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 !
0
Rejoignez-nous