Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.07.14;
Скачать: CL | DM;

Вниз

Фрейм: как обрабатывать его закрытие и открытие   Найти похожие ветки 

 
lesstab ©   (2011-07-12 14:51) [0]

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


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

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


 
lesstab ©   (2011-07-12 15:56) [2]

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

========================================
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;
===================================


 
MBo ©   (2011-07-12 16:08) [3]

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


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


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


AfterConstruction, BeforeDestruction


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

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


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


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


удобно


 
DVM ©   (2011-07-14 21:32) [7]


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

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


 
lesstab ©   (2011-07-15 10:02) [8]

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

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


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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2013.07.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.006 c
8-1231354672
SuperPROgrammist
2009-01-07 21:57
2013.07.14
Быстрый доступ к пикселям растра.


15-1361901394
O'ShinW
2013-02-26 21:56
2013.07.14
Подскажите про ТЭН для WD-10130N. Мощность интересует


1-1310536350
ruslan_as
2011-07-13 09:52
2013.07.14
Проблемы с запуском от имени


3-1289455456
daniyar
2010-11-11 09:04
2013.07.14
Как вывести в TreeView базу данных SQL Server с таблицами


2-1353323720
Данилыч
2012-11-19 15:15
2013.07.14
Глюк StringGrid