Главная страница
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.028 c
15-1171574284
Альберт
2007-02-16 00:18
2007.03.11
Чем же занимаются профессионалы?))))


9-1143544075
STALIN
2006-03-28 15:07
2007.03.11
GLFreeform - GlScene как сделать так, чтобы через Freeform...


2-1171716285
@gent
2007-02-17 15:44
2007.03.11
Дирректория запуска программы.


11-1150184429
DevilDevil
2006-06-13 11:40
2007.03.11
эквивалент SpinEdit? Key preview?


15-1171537147
ryslan56
2007-02-15 13:59
2007.03.11
HTML