Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Фрейм: как обрабатывать его закрытие и открытие [D6, WinXP]


lesstab ©   (2011-07-12 14:51:00) 

Проект основан на фреймах в которых должны отображаться данные. Таблица БД расположены на модуле данных.
Как простым способом обрабатывать события открытия и закрытия Фрейма? Есть ли альтернатива?
Благодарю заранее за ответы.


_Юрий   (2011-07-15 20:19:00) [1]


> procedure CloseOpenPage(OP : TFrame);
> begin
>
> // ==== Здесь, ли писать Обработчик Закрытия Фрейма?
>
>   formMain.OpenPage.Free;


У фрейма, как и у любого другого объекта, есть деструктор. Он виртуальный, и ничто не мешает его перекрыть.
ЧТо касается инициализации, то у фрейма, как и у любого другого компонента, есть виртуальный конструктор, который тоже никто не мешает переопределить.
Кроме того, есть виртуальные AfterConstruction, BeforeDestruction.

На мой взгляд, вообще событийная парадигма в том виде, в котором она реализована в VCL - не самая удачная идея. Хотя бы потому, что если начинается присвоение событий в ран тайм, бывает достаточно сложно найти концы, и понять, что же происходит, например когда ссылки начинают присваивать с двух сторон. Поэтому я предпочитаю использовать виртуализацию, даже в формах, где есть OnCreate и OnDestroy


lesstab   (2011-07-15 10:02:00) [2]

Решил так: Создать форму (formCurr) на котором будут размещены фреймы. Когда главная форма вызывает formCurr, тогда и будут обрабатываться события создания размещенных фреймов.

П.С. Фреймы мне нужны по прямому назначению, т.е. для одновременного использования на нескольких формах.


DVM   (2011-07-14 21:32:00) [3]


> Игорь Шевченко ©   (14.07.11 19:31) [6]

А чем они удобнее форм? Я что-то для себя никаких преимуществ не нашел. И перешел на формы. А с фреймами были какие то множественные мелкие проблемы постоянно (правда давно это было, как сейчас не знаю).


Игорь Шевченко   (2011-07-14 19:31:00) [4]


> Какой особый смысл в использовании фреймов, когда формы
> ничуть не хуже?


удобно


DVM   (2011-07-12 21:10:00) [5]

Какой особый смысл в использовании фреймов, когда формы ничуть не хуже?


Игорь Шевченко   (2011-07-12 18:12:00) [6]


> Как простым способом обрабатывать события открытия и закрытия
> Фрейма


AfterConstruction, BeforeDestruction


MBo   (2011-07-12 16:08:00) [7]

http://stackoverflow.com/questions/3979298/how-to-simulate-an-ondestroy-event-on-a-tframe-in-delphi


lesstab   (2011-07-12 15:56:00) [8]

Ну, тогда что же делать? Что бы Вы делали в таких ситуациях?

========================================
procedure CloseOpenPage(OP : TFrame);
begin

// ==== Здесь, ли писать Обработчик Закрытия Фрейма?

  formMain.OpenPage.Free;
  formMain.OpenPage := nil;

end;

procedure TformMain.actCurriCulumShowExecute(Sender: TObject);
var
  frmCurriculum1 : TFrame;
begin
   if not (OpenPage = frmCurriculum1)  then
   begin
       if not (OpenPage=nil) then CloseOpenPage(OpenPage);
       frmCurriculum1 := TfrmCurriculum.Create(formMain);
       frmCurriculum1.Parent :=  Panel1;
       frmCurriculum1.Align := alClient;
       frmCurriculum1.Visible := True ;
       OpenPage := frmCurriculum1;

       datamodul.tblCurriculum.Open;
   end;
===================================


Медвежонок Пятачок   (2011-07-12 14:53:00) [9]

как обрабатывать события, которых нет.
хороший вопрос.


Наверх

Титульная страница Поиск, карта сайта Написать письмо