![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сделать кучу форм
Vinum © (2008-03-18 20:39:00)Здравствуйте. На форме кнопка. Подскажите пожалуйста, как мне сделать так, чтоб по нажатию этой кнопки появлялась точно такая же форма с такой же кнопкой, чтоб при нажатии этой кнопки появилась опять еще одна такая же форма с кнопкой....и чтоб все формы были рабочие и их можно было закрыть в любой момент
RusSun (2009-09-13 13:28:00) [1]program Project1;
uses kol;
//{$DEFINE SMALLEST_CODE}
{$R *.res}
var
form,form2,Button1,CheckBox1:PControl;
//область для процедур
procedure clickbutton1(Sender:PControl; var mouse:TMouseEventData);
begin
if not Assigned( Form2 ) then
NewForm( Applet ,'Form2');
Form2.Show;
end;
procedure Close_form2(DummySelf,Sender: PControl; var Accept: Boolean);
begin
if CheckBox1.Checked then
begin
Accept := FALSE;
Form2.Hide;button1.Focused:=true;
end;
if Assigned( Form2 ) then begin
accept:=false;
form2.Hide;button1.Focused:=true;
end else
accept:=true;
end;
Begin
form:=NewForm(Applet,'Form1').SetPosition( 246, 107 ).SetClientSize( 205, 138 );
Button1 := NewButton( form, 'Form2.Show' ).SetPosition( 32, 64 ).SetSize( 137, 0 );
Button1.OnClick:=TonEvent(MakeMethod(nil,@clickbutton1));
Form2:= NewForm( Applet,'Form2').SetPosition( 245, 272 ).SetClientSize( 206, 152 );
CheckBox1 := NewCheckBox( Form2, 'Just Hide, not Close' ).SetPosition( 16, 16 ).SetSize( 177, 0 );
form2.OnClose:=TOnEventAccept(MakeMethod(nil,@Close_form2));
Run(form);
end.
Compiler (2008-03-20 22:34:00) [2]> Vinum (20.03.08 16:00) [6]
Это уже будет куча запущенных экземпляров приложения
Vinum (2008-03-20 16:00:00) [3]а вот такое решение правильное?
shellexecute(form.Handle,nil,'forms.exe',nil,nil,sw_normal)
Compiler (2008-03-18 23:46:00) [4]> >И вообще, правильно ли это?
Формы без родителя (Aparent=nil), Free для форм не вызывается. Наверное будет утечка памяти
Vinum (2008-03-18 22:32:00) [5]>Заменить Applet на nil?
спасибо, заработало.
>Наверное нет.
очень жаль.
>И вообще, правильно ли это?
не понял :)
Compiler (2008-03-18 22:22:00) [6]> только на таскбаре не показываются
Заменить Applet на nil?
> закрываешь самую первую форму, то закрываются все
Первая-главная.
> Это лечится
Наверное нет.
P.S. И вообще, правильно ли это?
Vinum (2008-03-18 22:16:00) [7]Работает прекрасно :) только на таскбаре не показываются новые окна и если закрываешь самую первую форму, то закрываются все остальные.Это лечится? :)
Compiler (2008-03-18 22:09:00) [8]На вскидку
Кинуть на форму Applet и
var
CloneForm:PForm1;
begin
NewForm1(CloneForm,Applet);
CloneForm.Form.Show;
end;
Работоспособность не гарантирую, не проверял :)