Главная страница
    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.48 MB
Время: 0.034 c
4-1122545484
ingine
2005-07-28 14:11
2005.09.25
Проблема с потоками


14-1125405446
AlexG
2005-08-30 16:37
2005.09.25
Сколько стоит Delphi 6 лицензионный?


5-1100092024
Змей
2004-11-10 16:07
2005.09.25
установка компоненты


3-1123259807
Оран Гутангович
2005-08-05 20:36
2005.09.25
could not convert variant of type(Null) into type (String)


4-1122276695
NeoMaster
2005-07-25 11:31
2005.09.25
Неправильная работа потока





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский