Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.009 c
2-1288563898
Германн
2010-11-01 01:24
2011.01.23
Отладка компонент


2-1288609551
s_t_d
2010-11-01 14:05
2011.01.23
Как проверить создавался Frame или нет?


2-1288533798
Gu
2010-10-31 17:03
2011.01.23
ListView с внешним скролом


15-1286272079
LDV
2010-10-05 13:47
2011.01.23
FastMM


15-1286517291
oxffff
2010-10-08 09:54
2011.01.23
Нужен совет. Скачать контент с Microsoft.