+ 1 ко всем. Спасибо за ваши ответы, особенно Abelisto et Jeroen, теперь я решил все проблемы. Пока Абелисто не предложил PostMessage, я сталкивался с множеством ошибок. Все решение ниже:
первый кадр или FrmMain:
const WM_MY_MESSAGE = WM_USER + 0;
type
TfraMain = class(TFrame)
...
private
FFraChild : TFraChild;//second frame
procedure OnMyMessage(var Msg: TMessage); message WM_MY_MESSAGE;
procedure ComingBackFromFrame(aFrame:TFrame);
....
//step when the second frame is created
FFraChild := TFraChild.Create(Application);
with FFraChild do
begin
GoBack:= ComingBackFromFrame;
parent:=Self;
Show;
end; //with
....
procedure TfraMain.ComingBackFromFrame(aFrame:TFrame);
begin
if aFrame<>nil then
begin
try
aFrame.Hide;
PostMessage(Self.Handle,WM_MY_MESSAGE,0,0);
except on e:Exception do
// log error
end;
end;
end;
procedure TfraMain.OnMyMessage(var Msg: TMessage);
begin
FreeAndNil(FFraChild);
end;
второй кадр или кадр 'child'
type
TCallBack = procedure(aFrame:TFrame) of object;
TFraChild = class(TFrame)
...
private
FGoBack:TCallBack;
public
property GoBack:TCallBack read FGoBack write FGoBack;
....
//after all operations with it are finished
if Assigned(fgoback) then
FGoBack(Self);
@ Jeroen, я не нашел что-то связанное с Frames как «Release», существующий в реализации TForm.
С уважением,
1012 * Radu *