![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фрейм: как обрабатывать его закрытие и открытие [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]как обрабатывать события, которых нет.
хороший вопрос.