Я считаю, что я слишком устал, и я не понимаю, почему небольшой обратный вызов не работает. У меня есть 2 кадра, созданных динамически, я показываю первый и одним щелчком показываю второй. Когда я закончу работу со вторым, я хочу показать первый кадр и освободить второй кадр. Кодекс ниже:Delphi - callback неправильный код
код для первого кадра:
procedure CommingBackFromFrame(aFrame:TFrame);
procedure TfraMain.ComingBackFromFrame(aFrame:TFrame);
begin
if Assigned(aFrame) then
begin
try
aFrame.Hide;
FreeAndNil(aFrame);
except on e:Exception do
//make a log
end;
Self.Show;//first frame show
end;
//code which creates the second frame
wFrm := TFrameType.Create(Application);//create the second frame
with wFrm do
begin
GoBack:=ComingBackFromFrame(wFrm);//error here
parent:=Self;
Show;
end; //with
Application.ProcessMessages;
код для второго кадра:
TCallBack = procedure(aFrame:TFrame) of object;//callback declaration
TFrameType = class(Tframe)
...
private
FGoBack:TCallBack;
public
property GoBack:TCallBack read FGoBack write FGoBack;//publish callback
....
//at a moment, return to frame 1
if Assigned(fgoback) then
GoBack(Self);
Может кто-нибудь помочь мне эту простую вещь?
Он никогда не мудрая вещь, чтобы освободить параметр метода события; базовый объект все еще может использоваться где-то в стеке вызовов. Я не уверен, что есть «релиз» для фреймов (например, для форм), но вы должны сделать что-то подобное. –