Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.027 c
5-1099875575
AZ
2004-11-08 03:59
2005.09.25
Сохранение свойства типа array - линкер не пущает


4-1122901949
Shopot
2005-08-01 17:12
2005.09.25
Как отловить сообщение в дочернем потоке?


5-1100013922
Vcoder
2004-11-09 18:25
2005.09.25
Как отличить DesignTime и RunTime?


14-1124983655
Juice
2005-08-25 19:27
2005.09.25
Покупка FIBPLUS 6


6-1117738965
GEEK
2005-06-02 23:02
2005.09.25
Кто работал с idHttpProxyServer? Ошибка вощем...




   Наверх