Je avais pu le faire en utilisant les boutons delphi simples:Comment libérer un cadre dans un événement de clic sur un bouton du cadre?
Dans le premier cadre, je l'ai (simplifié)
procedure FirstFrame.ButtonClick(Sender: TObject)
Begin
if TButton(Sender).ModalResult = mrOK then
ChildFrame.DoOKStuff
else
ChildFrame.DoCancelStuff;
ChildFrame.Free;
end;
procedure FirstFrame.ShowFranme;
begin
ChildFrame := TFrameWithButtons.Create(Owner);
ChildFrame.Parent := self;
ChildFrame.OKButton.OnClick := ButtonClick;
ChildFrame.CancelButton.OnClick := ButtonClick;
ChildFrame.Visible := True;
end;
Dans le Childframe je ne fais rien pour traiter le bouton clic sur le bouton ... le clic est déjà défini pour renvoyer le contrôle à la première image.
Avec certains boutons tiers, cela occasionne parfois un AV. Je comprends pourquoi - à un moment donné dans le traitement de code 3ème partie renvoie à un cadre ou un bouton maintenant libéré MAIS le code appelé est dans la première image ... Annoyingly cela fonctionne seulement 99.99% du temps :)
est aucune procédure de libération pour les cadres. Donc, ma question est de savoir quelle est la bonne façon de gérer cette situation?
Utilisation de Delphi 6 et Delphi 2009.
Que diriez-vous reprocucing comportement TCutsomForm.Release dans votre cadre? –
En supposant que 'ChildFrame' est un champ de' FirstFrame', vous devriez probablement appeler 'FreeAndNil (ChildFrame)' au lieu de 'ChildFrame.Free'. Cela aurait probablement l'effet secondaire de travailler 0% du temps après ... mais même si cela fonctionne 99% du temps en ce moment, cela ne donnera pas toujours le bon résultat. –
Excuses aux affiches de réponse - je ne suis pas revenu à ceci en raison d'autres pressions - mais il ressemble à CMRelease :) – Despatcher