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

Вниз

Событие закрытия дочернего окна в среде MDI   Найти похожие ветки 

 
Big ©   (2004-01-08 16:41) [0]

Как перехватить событие закрытия дочернего окна в среде MDI из главной формы?
Если говорить конкретно, то мне нужно обновлять состояние меню, в зависимости от существования и типов дочерних окон.
Из дочернего окна обновлять не получается - оно уничтожается позже чем выполняется обновление меню (соответсвенно меню обновляется некорректно - только что существующая форма уже не сущетвует).


 
Конница   (2004-01-08 16:46) [1]

OnCloseQuery
f1


 
Игорь Шевченко ©   (2004-01-08 17:55) [2]

Big © (08.01.04 16:41)

Посылать сообщение главному окну из дочернего, о том, что какое-то дочернее окно закрылось и надо обновить меню или что-то еще.


 
Тимохов ©   (2004-01-08 17:59) [3]

1. У меня сделано в formdestroy и formactivate PostMessage(Form_Main.Handle, MSG_MAIN_UpdateFormsList, 0, 0);
2. Обработчик события в главной форме
VAR
kNewItem: TMenuItem;
kI: Integer;
kNewItems: TList;
BEGIN
// Сначала очищаем список окон
for kI := miWindowsSeparator.MenuIndex + 1 to miWindows.Count-1 do
miWindows.Items[miWindowsSeparator.MenuIndex + 1].Free();

// Строим список окон
kNewItems := TList.Create();
try
for kI := MDIChildCount-1 downto 0 do
begin
if MDIChildren[kI] is TForm_MDIChild then
begin
kNewItem := TMenuItem.Create(Self);
kNewItems.Add(kNewItem);
kNewItem.Caption := MDIChildren[kI].Caption;
kNewItem.Tag := Integer(MDIChildren[kI]);
kNewItem.Checked := MDIChildren[kI] = Screen.ActiveForm;
kNewItem.OnClick := fOnWindowsClickMenu;
end;
end;
if kNewItems.Count > 0 then
begin
miWindowsSeparator.Visible := True;
kNewItems.Sort(fDoSort);
for kI := 0 to kNewItems.Count-1 do
begin
TMenuItem(kNewItems[kI]).Caption :=
IntToStr(kI+1) + ". "+ TMenuItem(kNewItems[kI]).Caption;
miWindows.Add(TMenuItem(kNewItems[kI]));
end;
end else
begin
miWindowsSeparator.Visible := False;
end;
finally
kNewItems.Free();
end;


 
Big ©   (2004-01-09 10:47) [4]

Спасибо! Все получилось. Использовал PostMessage.



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

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

Наверх




Память: 0.47 MB
Время: 0.038 c
1-63093
Zheks
2004-01-07 19:14
2004.01.20
Поочерёдная запись в файл двумя разними программами.


1-63136
афвуд
2004-01-07 16:31
2004.01.20
Полосатый ListBox


3-63002
ksan
2003-12-22 18:56
2004.01.20
ХП и пользователи


14-63402
Holy
2003-12-27 11:47
2004.01.20
Уходящий год


1-63158
Rimd
2004-01-06 16:51
2004.01.20
Rave Report