![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как создать копию Form [D7, WinXP]
Black © (2004-09-07 12:45:00)Помогите, пожалуйста.
Мне в моей программе нужно создавать копии Form а потом менять их свойста (цвет и т.д.) и св-ва элементов на созданных формах.
Как мне это организовать. Может кто знает.
Reindeer Moss Eater (2004-09-08 11:20:00) [1]Кроме того это к теме ветки не относится.
Новый вопрос - новая тема.
Reindeer Moss Eater (2004-09-08 11:19:00) [2]написано во встроенной документации.
Black (2004-09-08 11:06:00) [3]Reindeer Moss Eater © (08.09.04 10:56) [24]
type
TMyArray = array of TForm;
А как потом изменять кол-во эллементов в этом массиве
Reindeer Moss Eater (2004-09-08 10:56:00) [4]type
TMyArray = array of TForm;
Black (2004-09-08 10:53:00) [5]Vlad © (07.09.04 13:17) [16]
.......................
Если количество экземпляров форм заранее неизвестно, то вместо переменных можешь использовать дин. массив of TSomeForm
Пытаюсь создать дин. массив of Tform1 но при компиляции он мне выдаёт, что типы Tform1 и дин. массив не совместимы.
Может подскажете как сделать массив элементов Tform!!
KSergey (2004-09-08 08:03:00) [6]> Black © (07.09.04 12:45)
http://www.delphikingdom.com/helloworld/runtime_comp.htm
TUser (2004-09-07 14:42:00) [7]Если пишешь это в методе класса TForm1 (напр., в Button1Click), то там определена переманная Self - указатель на самого себя. Таким образом Assign(Self) - это создание собственной копии.
Если это написать где-то еще, то Self м.б. указателем на экземпляр формы2, на что-угодно еще или вообще м.б. не определен. Там надо будет написать Form1 или иную переменную - указатель на копируемый экземпляр формы.
MANGOL (2004-09-07 14:12:00) [8]>TUser © (07.09.04 13:57) [19]
> Или Form1, если это не метод класса TForm1
А можно прояснить это высказывание? F.Assign(Form1), если методом класса TForm1 не является что? assign?
как-то сумбурно изложено :)
TUser (2004-09-07 13:57:00) [9]А можно описать по подробней как этим пользоваться!
Assign назчит св-ва одного объекта в соотвествии со св-вами др-го объекта того же класса (или его наследника).
Например, есть у тебя Form1. Ты можешь создать еще однй такую же форму
F:=TForm1.Create;
F.Assign(Self); // Или Form1, если это не метод класса TForm1
Black (2004-09-07 13:38:00) [10]Спасибо
Vlad (2004-09-07 13:19:00) [11]ошибочка...
> F1.Height := '100';
> F2.Width := '200';
читать как
F1.Height := 100;
F2.Width := 200;
Vlad (2004-09-07 13:17:00) [12]
> Black © (07.09.04 13:09) [14]
Тебе судя по всему нужно просто создать несколько экземпляров одного класса (TSomeForm)
Вот и создай их:
var
F1, F2, ... FN: TSomeForm;
begin
F1:=TSomeForm.Create(...);
F2:=TSomeForm.Create(...);
...
FN:=TSomeForm.Create(...);
затем меняй наздоровье любые свойства, напр.:
F1.Height := '100';
F2.Width := '200';
Если количество экземпляров форм заранее неизвестно, то вместо переменных можешь использовать дин. массив of TSomeForm
Black (2004-09-07 13:11:00) [13]> Black © (07.09.04 13:05) [11]
см PS в [7]
Если найду хорошую книжку то обязательно почитаю
Black (2004-09-07 13:09:00) [14]TUser © (07.09.04 12:47) [1]
Create, Assing, :=?
А можно описать по подробней как этим пользоваться!
Плохиш (2004-09-07 13:09:00) [15]
> Black © (07.09.04 13:05) [11]
см PS в [7]
begin...end (2004-09-07 13:08:00) [16]
> [11] Black © (07.09.04 13:05)
See [1] carefully.
Black (2004-09-07 13:05:00) [17]Плохиш © (07.09.04 12:53) [3]
Form.<свойство> := ...
Form.<елемент>.<свойство> := ...
Это понятно. Но как мне узнать название нужной мне формы
Ведь мне сначало нужно программно создать копию Form1 и только потом изменить свойство созданной формы и элементов на ней?
Плохиш (2004-09-07 13:04:00) [18]
> TUser © (07.09.04 13:02) [8]
f[i];-)
begin...end (2004-09-07 13:03:00) [19]
> [8] TUser © (07.09.04 13:02)
- А зачем так много?
- Так ведь праздники же!
:-)
TUser (2004-09-07 13:02:00) [20]var f:array [0..125] of TYourForm
i:integer;
begin
for i:=0 to 125 do begin
f:=TYourForm.Create(Application);
f.top:=i mod 25;
f.left:=i mod 25;
f.Panel1.Caption:='За создание этой формы положено '+inttostr(i+1)+' глотков пива';
end;
end;