Форум: "Основная";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
ВнизMDI форма Найти похожие ветки
← →
GSVSerg (2003-11-10 18:24) [0]Доброго времени суток! Проблема в следующем. Есть MDI приложение. Из некоторой Mdichild-формы, открывается следующая Mdichild-форма, из нее еще одна и т.п. При закрытиии первой формы у остальных не срабатывает OnClose. Что можно сделать чтобы OnClose срабатывал? Заранее благодарю.
← →
Silver Alex (2003-11-10 18:30) [1]пришли код, как там все открывается и закрывается, и в чем именно проблема, что значит "не срабатывает OnClose".
← →
gsvserg (2003-11-10 18:38) [2]Mdichild"ы создаются
procedure TFpost_perelikorg.DBGrid1DblClick(Sender: TObject);
begin
parametr:=0;
f_postorg:=tf_postorg.Create(self);
end;
На закрытии
action:=free;
На OnClose одной из форм происходит проверка изменялись ли данные, и если изменялись, то делаю сохранение
← →
Игорь Шевченко (2003-11-10 18:44) [3]Вообще-то не дело так MDI-формы создавать...
А созданные формы закрываются при закрытии первой ?
← →
Silver Alex (2003-11-10 18:46) [4]ну, во первых
>
> procedure TFpost_perelikorg.DBGrid1DblClick(Sender: TObject);
> begin
> parametr:=0;
> f_postorg:=tf_postorg.Create(self);
> end;
если это из MDI формы, тогда может и не Self, лучше уж nil или Application
а на закрытие что-то не понятно, наверное все таки
Action:=caFree;
да, и что просто не заходит в оброботчик OnClose ?или что?
и что значит
> На OnClose одной из форм ...
а на других то он есть , оброботчик этот?
← →
gsvserg (2003-11-10 18:50) [5]Игорь Шевченко © (10.11.03 18:44) [3]
Да, все закрываются
Silver Alex © (10.11.03 18:46) [4]
только у одной формы(пока у одной) нужно обрабатывать OnClose
Первая форма - список объектов, во второй(открывается из первой) эти обекты редактируются, в ней и нужно при закрытии спрашивать пользователя сохранять или нет.
← →
gsvserg (2003-11-10 19:02) [6]>>если это из MDI формы, тогда может и не Self, лучше уж nil или Application
Если создавать с помощью nil или application, то вторая форма не закрывается при закрытии первой, а нужно чтобы закрывалась.
А можно как-то узнать при закрытии первой формы открыта ли вторая?
← →
Silver Alex (2003-11-10 19:02) [7]а зачем форма редактирования MDI, вызывай ее просто модально.По крайней мере я так делаю,но даже если так как ,ты, делаешь. Все равно не пойму ..
оброботчик есть, ты закрываешь форму методом Close ? и не попадаешь в этот обработчик?так?
← →
gsvserg (2003-11-10 19:06) [8]Первую форму закрываю form1.close и если вторая создана так form2:=tform2.create(self), то она закрывается тоже и OnClose не срабатывает.
← →
Silver Alex (2003-11-10 19:12) [9]ага, теперь более понятно, так это же совсем другой компот :))
ну как варианты я уже предложил вызывать форму редактирования модально, но если все равно тебе надо именно так как уже есть, ну делай принудительно в OnClose первой формы типа
form2.close;
но это как-то коряво выглядит , но должно работать
← →
gsvserg (2003-11-10 19:17) [10]Silver Alex © (10.11.03 19:12) [9]
А если form2 не открывалась?
Тогда ошибка.
← →
Плохиш_ (2003-11-10 19:27) [11]>gsvserg © (10.11.03 19:06) [8]
используй OnCloseQuery
← →
Silver Alex (2003-11-10 19:35) [12]ну ,ты, даешь ,блин :))
тогда так
на оброботчик OnClose первой формы дописуешь
так
begin
if assigned(form2) then
form2.close;
form2:=nil;
...
end;
что-то типа этого
← →
Игорь Шевченко (2003-11-10 20:32) [13]MDI-формы (да и любые формы, созданные таким образом) получать события OnClose не будут. Почему - см. Forms.pas в VCL
Как один из выходов, рекомендую попробовать обрабатывать события OnDestroy..
А вообще-то надо архитектуру приложения пересматривать...Либо не создавать так формы, либо не полагаться на событие OnClose
← →
Silver Alex (2003-11-11 09:20) [14]
> Игорь Шевченко
ну надо ему именно так, понимаешь :))
← →
gsvserg (2003-11-11 10:38) [15]Silver Alex © (10.11.03 19:35) [12]
assigned(form2) - всегда true
← →
gsvserg (2003-11-11 11:22) [16]gsvserg © (11.11.03 10:38) [15]
притормозил ... :())))
всем спасибо! все работает
← →
Silver Alex (2003-11-11 11:56) [17]ну наконец-то :))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c