А как Вы без as к Edit обратитесь?
Код делает не только проверку, но и само обращение к объекту на нужной форме.
Модератор: Модераторы
...
if fCreator is TFrm2 then
TFrm2(fCreator).Edit1.Text:='Test'
else
...
...
if fCreator is TFrm2 then
TFrm2(fCreator).Edit1.Text:='Test'
else
...
if Assigned(fCreator) And (fCreator is TFrm2) then
unit UFrmComment;
..........
public
{ public declarations }
ParentForm: TCustomForm;
.................
procedure TFrmAnkklient.SpeedButtonCommentClick(Sender: TObject);
begin
Application.CreateForm(TFrmComment,FrmComment);
FrmComment.ParentForm:=self;
FrmComment.UnSprava:=UnSprava;
FrmComment.SetFormStatus;
end;
if Assigned(ParentForm) And (ParentForm is TFrmAnkklient) then
ShowMessage('test');
evd писал(а):GAMER
Используйте код от Brainenjii плюс обнуляйте указатель fCreator при закрытии формы TFrm2.
Либо на OnDestroy fCreator:=nil;
Либо если вручную уничтожаете, то уничтожайте через FreeAndNil(fCreator)
...
if fCreator is TFrm2 then
TFrm2(fCreator).Edit1.Text:='Test'
else
...
IMyInterface = interface
...
end;
TMyClass = class(TInterfaceObject, IMyInterface)
...
end;
var I: IMyInterface;
begin
I:=TMyClass.Create as IMyInterface;
...
TMyClass(I).чего-то там...
end;
И это ошибка. В Delphi вполне законное обращение.
GAMER писал(а):Если форма TFrm2 закрыта, то получаю ошибку в строке if fCreator is TFrm2 then.
То есть указатель ненулевой, но формы там уже нет.
Как узнать, что формы уже нет?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54