Форум: "KOL";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];
ВнизМодальная форма Найти похожие ветки
← →
Юрий (2003-04-08 19:06) [0]Добавил вторую форму согласно описанию.
Но при запуске приложения показаваются обе формы.
Что делать, почему обе формы сразу видны при запуске?
Привожу используемый код (для этой второй формы):
Application.Initialize;
Application.CreateForm(TFORM1, FORM1);
//Application.CreateForm(TFORM2, FORM2);
//Здесь закоментировал, чтобы форма создавалась когда нужно
Application.Run;
В главном юните:
...
implementation
uses unit2; //юнит второй формы подключаю
...
//При нажатии на пункт меню создаю вторую форму и показываю
begin
NewFORM2( FORM2, Applet );
FORM2.Form.ShowModal;
FORM2.Form.Free;
end;
Почему сразу обе формы видны после запуска приложения, не понятно. Причём обе доступны.
← →
Юрий (2003-04-08 19:14) [1]В KOLForm поставил visible = False, стало работать.
Но всё же почему форма создаётся изначально?
По коду, который я приводил, она не должна создаваться вроде как.
← →
Юрий (2003-04-08 19:19) [2]Application.Initialize;
//Application.CreateForm(TFORM1, FORM1);
//Application.CreateForm(TFORM2, FORM2);
Application.Run;
Главная форма и дополнительная создаются при наличии такого кода.
Это правильно? Для чего тогда нужно включать в код строки типа
Application.CreateForm(TFORM, FORM)? Если и без них формы создаются?
← →
Boguslaw (2003-04-08 23:13) [3]Application.Initialize;
//Application.CreateForm(TFORM1, FORM1);
//Application.CreateForm(TFORM2, FORM2);
Application.Run;
This code is wrong !
In KOL Applet needs to be created and Applet.Run invoked in main unit of program
Look also in include files ????_2.inc where forms are created in KOL
← →
Юрий (2003-04-09 15:44) [4]Чтобы не создавалась вторая форма сразу после запуска приложения, следует в ????_2.inc подправить код следующим образом, правильно?
NewFORM1( FORM1, Pointer( Applet ) );
//NewFORM2( FORM2, Pointer( Applet ) );
Почему же в FAQ про это ничего не написано, тогда бы не было лишних вопросов? Не я первый вроде задаю вопрос про то, что все формы видны после запуска приложения. Либо комментируем создание формы в ????_2.inc, либо в KOLForm компоненте свойство Visible меняем на False. Правильнее будет написать про это в соответствующих справках ( например в KOLmirrorReadme в пункте IV. ДОБАВЛЕНИЕ ФОРМЫ ).
← →
Юрий (2003-04-09 16:12) [5]Сделал так:
NewFORM1( FORM1, Pointer( Applet ) );
//NewFORM2( FORM2, Pointer( Applet ) );
Но периодически этот код перезаписывается на
NewFORM1( FORM1, Pointer( Applet ) );
NewFORM2( FORM2, Pointer( Applet ) );
То есть формы по замыслу должны создаваться изначально при запуске приложения. И это правильно? Почему код перезаписывается? Почему нельзя закомментировать создание какой-то из форм?
← →
Boguslaw (2003-04-09 23:03) [6]What do You want ?
If You want to create form and do not display on program start do not delete NewForm2 from ???_2.inc , but set Visible := false for that form.(and later in program use Show or ShowMOdal)
Form is created on program start (and thus uses resources) but is hidden and showing is faster.
If You want to create form by hand : check Program options -> Forms , move this form from AutoCreate to Available (this prevent MCK from autocreating form) and also delete NewForm2 (MCK do not do this automatically - it seems to be a BUG)
Boguslaw
← →
Юрий (2003-04-10 16:26) [7]Вот что в FAQ:
"// показ модального диалога с его созданием непосредственно перед
// началом диалога и с разрушением - после
procedure TForm1.Button1Click(Sender: PObj);
begin
NewForm2( Form2, Applet );
{ insert here any code to make changes before showing Form2 }
Form2.Form.ShowModal;
{ insert here any code to read some data from Form2 }
Form2.Form.Free; // нельзя использовать Close !
//ShowMessage( "End of TForm1.Button1Click" );
end;"
Там ведь ничего не написано про то, что в этом случае надо в Program options -> Forms переместить Form2 из AutoCreate в Available. До пробы KOL в VCL мне лично было достаточно закоментировать созданние формы в файле проекта, так что о пункте меню Program options -> Forms я ничего не запомнил.
Так что подробнее нужно составлять FAQ, тогда не будет лишних вопросов. В справке про добавление второй формы также ничего не сказано про то, что следует изменить свойство Visible в KolForm на False. Приходится методом проб и ошибок и задаванием вопросов на форум узнавать то, что могло бы быть сразу написано в справках.
← →
Юрий (2003-04-10 18:01) [8]Наблюдение:
Если закомментировать создание второй формы в файле проекта, то в Program options -> Forms FORM2 из автоматически создаваемой становится доступной, и в файле ????_2.inc можно закомментировать создание второй формы - уже не перезаписывается:
в файле проекта:
Application.Initialize;
Application.CreateForm(TFORM1, FORM1);
//Application.CreateForm(TFORM2, FORM2);
Application.Run;
и в файле ????_2.inc:
NewFORM1( FORM1, Pointer( Applet ) );
//NewFORM2( FORM2, Pointer( Applet ) );
При добавлении второй формы и при желании, чтобы эта форма не создавалась автоматически, комментируем создание формы в двух местах, и в этом случае не нужно лезть в меню.
← →
Boguslaw (2003-04-10 21:05) [9]All those problems are simply becouse MCK preprocess KOL project each time he"s opened. Well, this is the worst thing in KOL/MCK, but since KOL does"nt have own IDE we cannot do much.(imagine ideal solution when there is no need for MCK and only pure KOL objects are sufficient to generate form preview in own KOL IDE)
Many times MCK caused bugs in my projects when for example generated applet creation in DLL project in ???_1.inc file which I commented previously
Boguslaw
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c