|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : octobre 2012 Messages : 2 ![]() |
Bonjour,
J'ai deux forms identiques (Form1 et Form2) qui changent chacune l'état d'une checkbox lorsqu'on click sur un bouton. Lorsque ces deux formes sont indépendantes, cela marche. Par contre, lorsque la Form2 appelle la Form1 par ShowModal, je ne peux plus changer l'état de la checkbox1 de la Form1 en appuyant sur le Bouton de la Form1. C'est comme si l'appel par ShowModal bloquait l'accès aux propriétés de la checkbox. Quelqu'un peut-il m'aider à comprendre cela ? Et comment résoudre ce problème? Merci Les codes des unit2 et unit1 sont les suivants: Code :
Code :
|
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() Yves LemaireBiologiste ; Progr(amateur) Inscription : mars 2005 Messages : 1 680 ![]() |
Quelles sont les options de création automatique des fiches ?
Si Form1 est en création automatique, l'application exécute Form1:=TForm1.Create et Form1 référence cette fiche. Si Form1 n'est créée qu'en dynamique, la création se fait dans la fiche 2 par MyForm := TForm1.Create, et Form1 ne pointe sur rien (il devrait y avoir une violation d'accès). Donc la solution est de ne pas utiliser Form1 mais self, qui référence l'objet dans lequel se produit l'événement : Code :
__________________
Delphi 5 Pro et Code Typhon 2.80 sous Win 7 64 bits - Code Typhon 2.70 / Ubuntu 12.04 64 bits |
||
|
|
00
|
|
|
#3 | ||||||
|
Expert Confirmé
![]() ![]() |
Bonjour,
Il y a des horreurs dans ce code ! On n'utilise pas la variable Form2 dans une méthode de la classe TForm2. On n'utilise Self, au pire on ne l'indique pas. Il en est de même pour Form1 dans une méthode de la classe TForm1 ! Le jour où vous utilisez une autre variable pour cette classe, au mieux cela ne compile pas, pire à l'exécution vous aurez droit à une exception pour violation d'accès (la variable (=objet) n'est pas initialisée), pire du pire, cela va affecter une autre variable (= un autre objet) de cette même classe, au final un bug qui peut être difficile à identifier... Maintenant, j'aimerais bien voir le code du projet et comment sont appelées ces fiches... Voici un code remanié : Code :
Code :
Une application dont une fiche est affichée via un ShowModal voit ses autres fiches désactivées (au niveau de l'interface graphique) et ce tant que la fiche en question n'est pas fermée... Si vous voulez que les 2 fiches restent actives, il faut utiliser Show, mais ATTENTION, le code de gestion de l'événement OnClick du Button1 doit être revu. la fiche MyForm ne doit être créée que lors du 1° appel et pas des suivants, sa libération doit se faire lors de la fermeture de la fiche parente. Le code de la fiche Form2 ressemblerait à : Code :
__________________
Philippe. |
||||||
|
|
00
|
|
|
#4 | |||
|
Invité de passage
![]() Inscription : octobre 2012 Messages : 2 ![]() |
Merci pour ces explications. Comme vous l'avez sans doute deviné je suis très très débutant dans ce type de programmation. Cela me permettra de mieux comprendre comment ca marche.
où puis-je trouver ces paramètres? Citation:
Code :
|
|||
|
|
00
|
|
|
#5 | ||
![]() ![]() Yves LemaireBiologiste ; Progr(amateur) Inscription : mars 2005 Messages : 1 680 ![]() |
Code :
__________________
Delphi 5 Pro et Code Typhon 2.80 sous Win 7 64 bits - Code Typhon 2.70 / Ubuntu 12.04 64 bits |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com