Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сделать кучу форм


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;


Работоспособность не гарантирую, не проверял :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо