Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-65701
SasaR
2003-11-03 10:24
2003.11.20
Максимальное количество столбцов - ?


6-66051
Анатолий
2003-09-25 11:52
2003.11.20
Sniffer


3-65716
SergP
2003-11-02 22:46
2003.11.20
Проблема с


1-65919
Poof-poof
2003-11-08 03:21
2003.11.20
Как вызвать вторую форму?


1-65925
Hyzhak
2003-11-11 16:09
2003.11.20
группа кнопок на разных панелях





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский