Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Buttons o.ä. dynamisch erzeugen


Adrian - Do 20.03.03 20:52
Titel: Buttons o.ä. dynamisch erzeugen
Hallo,

ich will Buttons oder auch CheckBoxen usw. während der Laufzeit erstellen und frei in meinem Formular platzieren. Relativ hilfreich war mir schon die Antwort von Millo auf die Anfrage von Raps, aber ganz glücklich wurde ich noch nicht damit. Gerade das freie Platzieren macht mir noch Schwierigkeiten. Vielleicht kann mir ja einer von euch helfen, ehe mir noch mehr von den grauen Haaren ausgehen.
Servus,

Adrian


Christian S. - Do 20.03.03 21:02


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
VAR my_button : TButton;

procedure TForm1.FormCreate(Sender: TObject);
begin
    my_button:=TButton.Create(self);
    with my_button do
    begin
      parent:=form1;
      left:=10;
      top:=i*50;
      name:='my_button';
      caption:='My Button';
    end;
end;


Ohne Delphi geschrieben, können also noch Fehler drin sein. Besonders wichtig ist parent:=form1.

MfG,
Peter


Adrian - Do 20.03.03 21:25
Titel: Dynamische Buttons
Danke, danke, danke!!!


MSCH - Do 20.03.03 21:47

Ups, das wird nicht gehen, da nur Button mit Name:='my_Button' exisitieren darf. *brrr* Hier unbedingt eine Laufnummer mitgeben:

Quelltext
1:
2:
3:
4:
for I:=0 to Maxbutton do 
  Button.Name:= Format('MyButton%d',[i]);
  Button.Tag:= I;
  ...

Wenns denn noch ein Button ist, mußt du Ihm wenigstens auch die Methode mitgeben, die ausgeführt wird, wenn er gedrückt wird. Zwecks Auswertung würde dann die TAG Var in Frage kommen.

nur mal so als Denkansatz
Greezz
MSch

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


Christian S. - Do 20.03.03 22:48

Zitat:
Ups, das wird nicht gehen, da nur Button mit Name:='my_Button' exisitieren darf.
Das ganze war als Beispiel gedacht, wie es prinzipiell geht. Und wenn ich genau weiß, wie die Buttons heißen, die ich erstelle, ist das auch kein Problem!

Bei Deinem Beispiel würde ich sowieso ein Array of TButton vorschlagen. Wie das geht, steht in dem Tutorial "Grundlagen von Arrays und Komponentenarrays" oder so ähnlich.


Tino - Fr 21.03.03 09:17

Der Sourcecode von MSCH sollte wie folgt korrigiert werden:

Quelltext
1:
2:
3:
4:
5:
for I:=0 to Maxbutton do 
  begin
    Button.Name:= Format('MyButton%d',[i]); 
    Button.Tag:= I; 
  end;

Gruß
Tino