Форум: "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