Главная страница
    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.045 c
4-1162452106
novill
2006-11-02 10:21
2007.03.11
Как заставить логин-диалог WinXP открываться всегда в полном виде


15-1171461962
IMHO
2007-02-14 17:06
2007.03.11
Опрос: программа для создания иконок


3-1166092044
Alex1884
2006-12-14 13:27
2007.03.11
Не могу сделать связьмежду ComboBox и базой данных


5-1148542504
DimaBr
2006-05-25 11:35
2007.03.11
Сериализация дочернего


2-1171881801
Kvinta
2007-02-19 13:43
2007.03.11
AppendRecord в ADO





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