Текущий архив: 2011.01.23;
Скачать: CL | DM;
Вниз
Как проверить создавался Frame или нет? Найти похожие ветки
← →
s_t_d (2010-11-01 14:05) [0]Уважаемые мастера, пожалуйста подскажите, как можно определить был создан frame, или еще не создавался?
← →
clickmaker © (2010-11-01 14:09) [1](frame <> nil) and IsWindow(frame.Handle)
← →
Медвежонок Пятачок © (2010-11-01 14:12) [2]никак.
begin
....
TMyFrame.Create(Self);
//и все. ищи свищщи его.....
end;
или
begin
....
myframe := TMyFrame.Create(Self);
myframe := TMyFrame1.Create(Self);
//и аналогично. ищи свищщи его.....
end;
как можно определить был создан frame, или еще не создавался?
Учиться структурировать свой код, чтобы не возникало подобных вопросов.
← →
s_t_d (2010-11-01 14:25) [3]clickmaker © (01.11.10 14:09) [1]
(frame <> nil)
Большое спасибо, помогло.
← →
Юрий Зотов © (2010-11-01 15:18) [4]> s_t_d (01.11.10 14:25) [3]
Помогло, но вряд ли надолго. Следующий вопрос будет примерно таким:
"frame <> nil, но при обращении к фрейму вылетает ошибка Access Violation".
← →
s_t_d (2010-11-01 17:45) [5]Юрий Зотов © (01.11.10 15:18) [4]
> s_t_d (01.11.10 14:25) [3]
Пожалуйста подскажите, что делать, чтобы к этому не приходить.
← →
Юрий Зотов © (2010-11-01 17:53) [6]> s_t_d (01.11.10 17:45) [5]
При уничтожении фрейма очищать ссылку на него (переменную frame). Или руками, или используя процедуру FreeAndNil.
← →
s_t_d (2010-11-01 18:08) [7]Юрий Зотов © (01.11.10 17:53) [6]
> s_t_d (01.11.10 17:45) [5]
При уничтожении фрейма очищать ссылку на него (переменную frame). Или руками, или используя процедуру FreeAndNil.
Пытался делать так:
в обработчике нажатия на кнопке, находящейся на фрейме
...
Fr_compl.Free;
где Fr_compl - имя фрейма, но, к сожалению, к ожидаемому рез-ту это не привело.
← →
s_t_d (2010-11-01 18:30) [8]s_t_d (01.11.10 18:08) [7]
Юрий Зотов © (01.11.10 17:53) [6]
> s_t_d (01.11.10 17:45) [5]
При уничтожении фрейма очищать ссылку на него (переменную frame). Или руками, или используя процедуру FreeAndNil.
Разобрался, спасибо за помощь.
← →
Leonid Troyanovsky © (2010-11-01 21:42) [9]
> s_t_d (01.11.10 18:08) [7]
> Пытался делать так:
> в обработчике нажатия на кнопке, находящейся на фрейме
> ...
> Fr_compl.Free;
Не надо рушить контролы из их методов или обработчиков.
See also: TCustomForm.Release.
Ссылки на фреймы не следует хранить в переменных, а токмо
в полях, в т.ч. и в списках, see also TWinControl.Controls.
See also TComponent.Notification.
--
Regards, LVT.
← →
s_t_d (2010-11-02 04:12) [10]Leonid Troyanovsky © (01.11.10 21:42) [9]
> s_t_d (01.11.10 18:08) [7]
Ссылки на фреймы не следует хранить в переменных, а токмо
в полях, в т.ч. и в списках, see also TWinControl.Controls.
See also TComponent.Notification.
--
Regards, LVT.
Если можно, пожалуйста чуть подробнее
← →
Leonid Troyanovsky © (2010-11-02 11:33) [11]
> s_t_d (02.11.10 04:12) [10]
> Если можно, пожалуйста чуть подробнее
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Frame: TFrame;
procedure Notification(AComponent: TComponent; oper: TOperation); override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
unit2; // TFrame2
procedure TForm1.Notification;
begin
inherited;
if (oper = opRemove) then
if (AComponent = Frame) then
Frame := nil; // где бы не разрушили фрейм, ссылка будет обнилена.
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(Frame) then
begin
Frame := TFrame2.Create(nil);
Frame.FreeNotification(Self);
Frame.Parent := Self;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Frame.Free;
end;
--
Regards, LVT.
Страницы: 1 вся ветка
Текущий архив: 2011.01.23;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.008 c