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

Вниз

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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.462 c
15-1171438394
Rouse_
2007-02-14 10:33
2007.03.11
А вы говорите зачем в Москве много зарабатывать?


2-1171712728
Nija
2007-02-17 14:45
2007.03.11
Нужна срочная помощь


15-1171547496
mdaaaaaaa
2007-02-15 16:51
2007.03.11
сетевое подключение


2-1171650178
Kolan
2007-02-16 21:22
2007.03.11
Создание формы динамически &amp;#151; говорит ресурс не найден.


11-1150407283
parovoZZ
2006-06-16 01:34
2007.03.11
Demo2Forms - не понял юмора