AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi verschiedene label mittels variable ansteuern/eigenschaften ändern
Thema durchsuchen
Ansicht
Themen-Optionen

verschiedene label mittels variable ansteuern/eigenschaften ändern

Ein Thema von Biotonnenmixxer · begonnen am 15. Jan 2013 · letzter Beitrag vom 15. Jan 2013
 
terence14
(Gast)

n/a Beiträge
 
#3

AW: verschiedene label mittels variable ansteuern/eigenschaften ändern

  Alt 15. Jan 2013, 09:43
Hallo,
Du kannst die Komponenten dynamisch zur Laufzeit
erstellen. Der Vorteil, Du kannst die dann per
for-Schleife durchlaufen und die Properties setzen.

Beispiel:

Delphi-Quellcode:

Komponenten zur Laufzeit erzeugen

Normalerweise werden die meisten Komponenten, die ein
Programm benötigt, schon zur Entwicklungszeit auf dem
Formular platziert. Ist die Anzahl der benötigten
Komponenten zur Entwicklungszeit noch nicht absehbar,
müssen sie dynamisch erstellt werden.

Dieses Beispiel erstellt einen TButton und weist ihm
eine OnClick-Routine zu:

procedure TForm1.Button1Click(Sender: TObject);
var
**Button: TButton;
begin
**Button:=TButton.Create(Self);
**Button.Parent := Self;
**Button.Caption := 'Alter Titel';
**Button.Left := 100;
**Button.Top := 100;
**Button.OnClick := Button2Click;
end;

Wichtig ist, dass die Eigenschaft Parent gesetzt wird,
um die Komponente eindeutig einer übergeordneten
Komponente zuzuordnen. Dies ist häufig ein Formular oder
ein TPanel oder TGroupbox. Self bezieht sich immer auf
die aktuelle Klasseninstanz also in diesem Fall auf Form1.
Man könnte also statt Self auch Form1 schreiben. Das
funktioniert aber dann nicht mehr, wenn es mehr als
eine Formularinstanz gibt. Deshalb sollte man self
immer vorziehen.

In der Behandungsroutine des OnClicks-Ereignis wird die
Sender-Variable ausgewertet, um die auslösende Komponente
des Klicks zu ermitteln:

procedure TForm1.Button2Click(Sender: TObject);
begin
**if Sender is TButton then
****TButton(Sender).Caption:='Neuer Titel';
end;

Die Button2Click-Prozedur muss noch in der Klassendeklaration
von TForm1 aufgenommen werden:

private
**procedure Button2Click(Sender: TObject);

Mit einem Klick auf den dynamisch erstellten Button sollte
sich der Titel des Buttons ändern.

Eine weitere Lösung ist die Verwendung eines dynamischen
Arrays. Dadurch wird der Zugriff auf die Komponenten später
einfacherer.

Im folgenden Beispiel wird eine zufällige Zahl von
TEdit-Feldern erstellt und untereinander auf dem Formular
platziert.

Zunächst muss das Array als Feld-Variable in der
Klassendeklaration des Formulars erstellt werden:

private
**EditArray: array of TEdit;

Der Quelltext zum Erstellen sieht folgendermaßen aus:

procedure TForm1.Button1Click(Sender: TObject);
var
**i: Integer;
begin
**SetLength(EditArray, Count);
**for i:=0 to 4 do
**begin
****EditArray[i] := TEdit.Create(Self);
****EditArray[i].Parent := Form1;
****EditArray[i].Left := 20;
****EditArray[i].Top := 20 + ((EditArray[i].Height + 10) * i);
**end;
end;

Über den Array-Index lassen sich die einzelnen Controls
ansprechen.
MfG,
terence
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz