Const
MAX_FORMS = 20;
Var
forms: array[1..MAX_FORMS] of TForm;
nextForm: Integer;
initialize
nextForm := 1;
End;
function CreateForm(): TForm;
Begin
if (next >= MAX_FORMS)
return nil; // or somehow other report the error
forms[nextForm] := TForm.CreateObject(Self);
Result := forms[nexForm];
Inc(nextForm);
End;
For Form
Я столкнулся с проблемой:
У меня есть на форме кнопка Button1
Как сделать что бы при нажатии неоднократно раз появлялось форма такое же кол.
И постоянно новые! Не одно Ито же окно!
Как бы форма в цикле!
объявляешь массив форм и индекс следующей доступной ячейки массива.
Код:
потом в обаботчике нажатия кнопки
Код:
pocedure Button1Click(..)
Var
f: TForm;
Begin
f := CreateForm();
if (f <> nil)
f.Show();
End;
Var
f: TForm;
Begin
f := CreateForm();
if (f <> nil)
f.Show();
End;
сорри, если чё-то напутал -- на делфи лет сто не писал
Спасибо! Если что я сам дальше!
Код:
procedure TForm1.FormCreate(Sender: TObject);
var n: integer;
begin
// при создании формы выбираем список всех форм
for n:=0 to Screen.FormCount-1 do
ListBox1.AddItem(Screen.Forms[n].Caption,Screen.Forms[n]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var form: TForm;
begin
// создаём новую форму
Form:=TForm1.Create(Application);
// передаём ей фокус
form.Show;
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
// передаём фокус форме присвоеной пункту списка
((Sender as TListBox).Items.Objects[(Sender as TListBox).ItemIndex] as TForm).Show;
end;
var n: integer;
begin
// при создании формы выбираем список всех форм
for n:=0 to Screen.FormCount-1 do
ListBox1.AddItem(Screen.Forms[n].Caption,Screen.Forms[n]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var form: TForm;
begin
// создаём новую форму
Form:=TForm1.Create(Application);
// передаём ей фокус
form.Show;
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
// передаём фокус форме присвоеной пункту списка
((Sender as TListBox).Items.Objects[(Sender as TListBox).ItemIndex] as TForm).Show;
end;
И обрати вимание, что созданные формы я не удаляю, при завершении программы. Это сделает объект Application.
Полный вариант приложения в архиве.
Цитата: misha_turist
// создаём новую форму
Обожаю писать без лишних переменных:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
// создаём новую форму и отображаем её
TForm1.Create(Application).Show;
end;
begin
// создаём новую форму и отображаем её
TForm1.Create(Application).Show;
end;