Форум: "Основная";
Текущий архив: 2013.07.14;
Скачать: [xml.tar.bz2];
ВнизФрейм: как обрабатывать его закрытие и открытие Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c