Bonjour bonjour, voilà j'aimerai tester si une fiche est ouverte avant d'ouvrir la seconde ?!
petit exemple concret:
procedure TF_Principale.xxxxxxxxClick(Sender: TObject);
begin
if tf_yyyyyyyy.???? then // comment tester si yyyyy est ouvert ?
begin
tf_yyyyyyyy.close;
end
application.createform(tf_xxxxxxxx, f_xxxxxxxx);
f_xxxxxxxx.show;
end;
j'aurai voulu automatiser le tout et faire qque chose de propre en fait.
procedure TF_Principale.FactureClick(Sender: TObject);
begin
if F_GestionDevis.Showing = true then
begin
F_GestionDevis.Close;
end;
application.createform(tf_facture, f_facture);
f_facture.show;
end;
Pourquoi ça marche pas comme ça ?
ps: ma touche f1 marche pas, ça tente de dl qqchose sur le net mais ça veut pas :S
Pourquoi faire de la création dynamique de f_facture?
Autant laisser delphi créer la fiche dés le début. Je pense que c'est ton create qui ne fonctionne pas
dynamique ? bon j'ai du mal m'exprimer. je reprends :
Application MDI, deux feuilles MDIChild : Facture et devis. En fait je voulais que chaque fois qu'on ouvre une d'elle, ça ferme l'autre. Tout ça pour éviter d'ouvrir plusieurs feuilles de chaque. Je m'y prend peut-être pas du tout comme il faut..
procedure TMainForm.ClickOpenFactureForm(Sender : TObject);
begin
DevisForm.Hidde; { cache devis }
FactureForm.Reset; { procedure qui reinitialise l'etat de FactureForm }
FactureForm.Show; { affiche facture }
FactureForm.BringToFront; { met au premier plan facture }
end;
procedure TMainForm.ClickOpenDevisForm(Sender : TObject);
begin
FactureForm.Hidde; { cache facture }
DevisForm.Reset; { procedure qui reinitialise l'etat de DevisForm }
DevisForm.Show; { affiche devis }
DevisForm.BringToFront; { mets au premier plan devis }
end;
access violation. Je pense que ça vient du fait que vu que devis n'est pas forcément lancé, toi tu tente de cacher quelque chose qui n'existe pas encore. C'est la tout mon problème, faire une condition pour voir si la fiche existe. Mais showing me renvoie un message d'erreur. A moins que l'erreur ne vienne pas de là mais bon...
Si tu avais recherché un peu tu serais tombé sur une de mes réponses :
<hr size="2" width="100%" />Je ne pense pas qu'en Delphi on puisse, comme en VB, continuer le
programme comme si ne rien n'était s'il arrive une erreur et cela
parait logique (le role du developpeur est aussi (et essentiellement)
de débugger ses programmes pour qu'ils ne se plantent pas).
Mais
le try..except..end est très pratique et fonctionne merveilleusement
bien. (heureusement) Tu devrais t'y mettre car en Delphi (je ne sais
pas en VB) on ne publie pas un programme à moitié défaillant : on
traite les erreurs grâce à ce magnifique try..except..end; (ou
try..finally..end qui ne fait pas le même chose).
Si c'était possible en delphi de
faire cela, le Pascal ne serait plus ce qu'il était.
<hr size="2" width="100%" />
++
Bien je suis désolé mais aucune ne me convient :(
Je pensais que ce que je cherchais était simple, je voulais, à l'ouverture d'une MDIChild, que toutes les autres se ferment, pour ne pas avoir plusieurs feuilles ouvertes en même temps :-/
Va falloir que je trouve une autre solution je crois :(