Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.025 c
4-1122890368
Fin
2005-08-01 13:59
2005.09.25
Электронный справочник по Api


5-1100428686
xkiller
2004-11-14 13:38
2005.09.25
Скинообразная кнопка


4-1123062262
MegaVolt
2005-08-03 13:44
2005.09.25
Какие сообщения регулируют рисование GridLines в ListView?


14-1125134032
Windows
2005-08-27 13:13
2005.09.25
Доработать >>>Соединить и сжать несколько файлов в один.<<<


14-1125469097
stud
2005-08-31 10:18
2005.09.25
SQL books online это так должно быть?