Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];

Вниз

Demo2Forms - не понял юмора   Найти похожие ветки 

 
parovoZZ ©   (2006-06-16 01:34) [0]

Здарова

Скачал сабж. Запускаю прямо из архива ехе - если закрыть form2, то потом при нажатии на кнопку она опять создаётся (всего глубокого смысла с Just Hide не понял. Мне, как конечному юзеру, до потолка - скрывается она или закрывается). Ладно, компилирую исходники. В результате при закрытии form2 она больше никогда не показывается.
Оказывается, в обработчике события кнопки form2show
if not Assigned( Form2 ) then
   NewForm2( Form2, Applet );
 Form2.Form.Show;

ничего не происходит, потому как Assigned( Form2 ) всегда возвращает true (исключение только в одном случае - если убрать form2 из списка автосоздаваемых. Но и тут непонятки - чем NewForm2( Form2, Applet ); отличается от NewForm2( Form2, Pointer( Applet ) );?). А Form2.Form.Show не работает - вроде как Form убила себя..

В процедуре
procedure TForm2.KOLForm2Close(Sender: PObj; var Accept: Boolean);
begin
 if CheckBox1.Checked then
 begin
   Accept := FALSE;
   Form.Hide;
 end;
end;

вроде ничего криминального нет, но тем не менее Form2 не уничтожается.
Если подправить
procedure TForm2.KOLForm2Close(Sender: PObj; var Accept: Boolean);
begin
 if CheckBox1.Checked then
 begin
   Accept := FALSE;
   Form.Hide;
   Exit
 end;
 Form2.Form.Free;
end;
,
то всё работает.
Accept - что за флаг? Перехватывает событие?


 
ECM ©   (2006-06-16 14:11) [1]

Просветление что то всё никак не наступит :)
KOL.PAS
   property OnClose: TOnEventAccept read fOnClose write SetOnClose;
   {* |<#form>
      |<#applet>
      Called before closing the window. It is possible to set Accept
      parameter to False to prevent closing the window. This event events
      is not called when windows session is finishing (to handle this
      event, handle WM_QUERYENDSESSION message, or assign OnQueryEndSession
      event to another or the same event handler). }

Если вера не позволяет заглядывать в исходники - воспользуйтесь генератором справки
http://bonanzas.rinet.ru/r_helpdoc.htm


 
parovoZZ ©   (2006-06-16 18:35) [2]

А почему же форма не показывается?


 
ECM ©   (2006-06-16 19:01) [3]

Демонстрашка достаточно древняя. Похоже она собиралась с версией KOL. При которой если Accept=TRUE то вместе с закрытием окна (объект windows) происходило освобождение его KOL-обёртки (Form). В текущей версии - окно закрывается , но обёртка не уничтожается. Возможно баг...
Для того чтобы пример действовал корректно - исправьте код:
procedure TForm2.KOLForm2Close(Sender: PObj; var Accept: Boolean);
begin
 if CheckBox1.Checked then
 begin
   Accept := FALSE;
   Form.Hide;
 end else Form.Free;
end;



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

Форум: "KOL";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.039 c
3-1166107397
Shaman_
2006-12-14 17:43
2007.03.11
Не могу динамически задать TClientDataSet.ProviderName


11-1142601519
sff
2006-03-17 16:18
2007.03.11
передача данных в Excel


15-1171350348
ryslan56
2007-02-13 10:05
2007.03.11
HTML


5-1149516103
Любопытствующий
2006-06-05 18:01
2007.03.11
Компонент на основе TLabel и TRichEdit?


15-1171606301
Loginov Dmitry
2007-02-16 09:11
2007.03.11
Ловушка для сишника MidStr()





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский