Текущий архив: 2005.09.25;
Скачать: CL | DM;
Вниз
Как динамически добавить компонент на форму Найти похожие ветки
← →
Cherrex © (2005-08-29 16:19) [0]Нужно сделать так: по нажатию на кнопку появляласьеще одна. Не мспользуя конечно свойства Visible.
← →
Reindeer Moss Eater © (2005-08-29 16:24) [1]Ну ты и задачку подкинул.
Это же на нобелевскую тянет.
Да еще если без visible, то вообще мрак.
← →
Pearled © (2005-08-29 16:28) [2]Пример:
procedure TForm1.Button1Click(Sender: TObject);
var
b: TButton;
begin
b:= TButton.Create(Form1);
b.Parent:= Form1;
b.Left:= 10;
b.Top:= 10;
b.Width:= 100;
b.Height:= 30;
b.Caption:= "Button2";
end;
← →
Александр Иванов © (2005-08-29 16:36) [3]
var MyForm:TForm1;
begin
MyForm:=TMyForm.Create(Application);
try
MyForm.Show;
finally
MyForm.Free;
end;
end;
← →
Александр Иванов © (2005-08-29 16:36) [4]
var MyForm:TForm1;
begin
MyForm:=TMyForm.Create(Application);
try
MyForm.Show;
finally
MyForm.Free;
end;
end;
← →
Pearled © (2005-08-29 16:41) [5]Александр Иванов
а при чем тут создание формы?
← →
Александр Иванов © (2005-08-29 16:44) [6]Pearled © (29.08.05 16:41) [5]
Решил, что под "еще одна", он подразумевает форму, похоже ошибся.
← →
Reindeer Moss Eater © (2005-08-29 17:04) [7]Pearled
А при чем здесь переменная Form1?
Экземпляров класса TForm1 может быть великое множество и создающий эти экземпляры вовсе не обязан инициализировать глобальную переменную Form1.
← →
Desdechado © (2005-08-29 18:51) [8]Pearled
указатель на твою кнопку потеряется нафиг, а память останется занятой
добраться только через свойства формы можно будет до такой кнопки
← →
Cherrex © (2005-08-30 09:39) [9]Добавить понятно А удолить можно?
← →
злобная танька (2005-08-30 09:44) [10]
> Cherrex © (30.08.05 09:39) [9]
делаем как в [2], только переменную b делаем глобальной. Если надо удалить - b.free
← →
Александр Иванов © (2005-08-30 09:45) [11]
count:=Form1.Components.Count-1;
for i:=0 to count do
if (Form1.Components[i] is TButton) then
(Form1.Components[i] as TButton).Free;
← →
Reindeer Moss Eater © (2005-08-30 09:47) [12]Ага. Щаз.
← →
tesseract © (2005-08-30 13:49) [13]Проще Так
var butArray:Tlist;
procedure Tform1.FormShow(Sender:Tobject);
var tempButton:Tbutton;
begin
buArray:=Tlist.create;
tempButton:=Tbutton.create(form1);
with tempButton do
begin
parent:=form1; //(или panel1)
width:=NeedBtWitdh;
height:=NeedBtHeight;
top:=NeedBtTop;
left:=NeedBtLeft;
onClick:=MybtClick;// Внимательней здесь без этого параметра кнопка ни фига делать не будет;
end;
butArray.add(tempButton);
end.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
for i:=0 to butArray.count-1 do
(butArray as Tbutton).free;
end;
← →
afanasic (2005-08-30 14:42) [14]var
a: array of TButton;
...
procedure TForm1.btClick(Sender: TObject);
begin
ShowMessage("Новая кнопка!");
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(a,Length(a)+1);
a[High(a)] := TButton.Create(self);
with a[High(a)] do
try
Width := btWidth;
Height := btHeight;
Left := btLeft;
Right := btRight;
Parent := self;
OnClick := btClick;
except
on E: Exception do
ShowMessage("Блин...");
end;
end;
← →
tesseract © (2005-08-30 22:28) [15]>> a[High(a)] := TButton.Create(self);
Думаешь a[length(a)-1] будет работать не стабильнее :-)
Страницы: 1 вся ветка
Текущий архив: 2005.09.25;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.034 c