Alors j'ai deux fiches, l'une que j'ouvre dans l'autre en modal, celle qui est modale possède un bouton fermer, g mit des procédures dans l'événements onclick, mais lorsque je click sur fermer mon prog ne passe pas par cet événement, il passe direct à la procédure formdestroy, je n'arrive pas à comprendre pourquoi il ne passe pas par onclick lorsque je click?
rocedure Tfiche_saisie.ButtonFermerClick(Sender: TObject);
var
I,L: integer;
Line,Id: string;
begin
inherited;
GenereRecordV;
MAJ_RecordH;
Show_Histo;
MAJ_Ind;
L:=MemoFichier.Lines.Count-1;
if AFichier^.Etat=2 then
if Messagedlg('Les analyses sont complétées, le fichier vas etre transféré vers l''export.',mtInformation,[mbYes],0)=mrYes then
begin
with MemoFichier do with Lines do
for I:=L-1 downto 1 do
begin
Line:=Strings[I];
Id:=Copy(Line,0,1);
if Id='V' then Continue
else Delete(I);
end;
GenereFichier(AFichier^.Etat);
end
else if AFichier^.Etat=1 then
if Messagedlg('Désirez vous transférer les réponses saisies vers l''export?',mtInformation,[mbYes,mbNo],0)=mrYes then
begin
GenereFichier(AFichier^.Etat);
with MemoFichier do with Lines do
for I:=L-1 downto 1 do
begin
Line:=Strings[I];
Id:=Copy(Line,0,1);
if Id='V' then Continue
else Delete(I);
end;
GenereFichier(2);
end
else GenereFichier(AFichier^.Etat);
rocedure Tfiche_saisie.ButtonFermerClick(Sender: TObject);
var
I,L: integer;
Line,Id: string;
begin
inherited;
GenereRecordV;
MAJ_RecordH;
Show_Histo;
MAJ_Ind;
L:=MemoFichier.Lines.Count-1;
if AFichier^.Etat=2 then
if Messagedlg('Les analyses sont complétées, le fichier vas etre transféré vers l''export.',mtInformation,[mbYes],0)=mrYes then
begin
with MemoFichier do with Lines do
for I:=L-1 downto 1 do
begin
Line:=Strings[I];
Id:=Copy(Line,0,1);
if Id='V' then Continue
else Delete(I);
end;
GenereFichier(AFichier^.Etat);
end
else if AFichier^.Etat=1 then
if Messagedlg('Désirez vous transférer les réponses saisies vers l''export?',mtInformation,[mbYes,mbNo],0)=mrYes then
begin
GenereFichier(AFichier^.Etat);
with MemoFichier do with Lines do
for I:=L-1 downto 1 do
begin
Line:=Strings[I];
Id:=Copy(Line,0,1);
if Id='V' then Continue
else Delete(I);
end;
GenereFichier(2);
end
else GenereFichier(AFichier^.Etat);
Le fait d'avoir d'avoir changé ModalResult à mrOK n'est pas la vraie solution à ton problème. La fenêtre devrait pouvoir se fermer toute seule si tu as mis une instruction Close;
Explication du fonctionnement de ModalResult :
L'attribution d'une valeur autre que mrNone à la propriété ModalResult
d'un bouton entraîne la fermeture de la fenêtre qui le contient si
celle-ci est modale tout en fournissant un résultat à la fenêtre
appelante (le résultat sera idOKsi la propriété ModalResult du bouton est réglée sur mrOk).
Ce principe est par exemple utilisé pour la gestion des boîtes de
dialogue (comme celles demandant la confirmation de suppression d'un
fichier) permettant un choix de boutons ("OK", "Annuler", "Oui", "Non",
etc...). Dans ces cas-là, la fenêtre appelante reçoit la valeur
retournée par le bouton sur lequel on a appuyé.
Pour plus d'infos, consultez l'aide de Delphi...
@+
Bonne Prog'
Nico [www.ni69.new.fr]
<hr size="2" width="100%">
N'oubliez pas de cliquer sur Réponse acceptéelorsque la réponse vous convient !
sous delphi il est possible de blocker la femeture d'une fenêtre dans
l'évènement OnCloseQuery en modifiant la variable canClose à false.
Peut-être que le bouton jou avec ça ?