Home » Tipps & Tricks » Komponenten » Allgemein » Eigenschaften von Komponenten zur Laufzeit ändern

Eigenschaften von Komponenten zur Laufzeit ändern

Komponenten werden im Quelltext über ihre Referenz angesprochen, die bei Komponenten, die bereits zur Entwicklungszeit erstellt wurden, mit der Eigenschaft „Name“ identisch ist:

//Zuweisung einer String-Eigenschaft
Edit1.Text:='Dies ist der neue Text';

//Zuweisung einer Aufzählung
Edit1.Color:=clYellow;

//Zuweisung einer Menge
Edit1.Font.Style:=Edit1.Font.Style+[fsBold] ;

//Zweisung eines Integers
Edit1.Tag:=10;

//Zuweisungen eines Boolean
Edit1.Enabled:=True;

//Sichtbarkeit umdrehen
Edit1.Visible:=not Edit1.Visible;

//Button ist nur verfügbar, wenn Edit1
//einen Text enthält.
Button1.Enabled := Edit1.Text'';

Lesen Sie in den Verweisen, wie Sie auch dynamische Komponenten über ihren Namen ansprechen.Sollte sich hinter einer Eigenschaft ein Record verbergen, können Sie einzelne Variablen nicht verändern:

 Komponent1.Eigenschaft.Feld:=10;

Das Property „Eigenschaft“ soll folgenden Aufbau haben:

type
 TRecordEigenschaft = record
   Feld: Integer;
   Feld2: String;
 end;

Es kommt zu der Fehlermeldung „Der linke Seite kann nicht zugewiesen werden.“. Sie müssen stets den kompletten Record zuweisen:

procedure TForm1.Button1Click(Sender: TObject);
var
 R: TRecordEigenschaft;
begin
 R:=Komponent1.Eigenschaft;
 R.Feld:=10;

 Komponent1.Eigenschaft:=R;
end;

Bei eigenen Objekten kann man diese Problematik umgehen, indem man statt Records Objekte mit entsprechenden öffentlichen Variablen verwendet.Über ein with-Konstrukt kann man ebenfalls dem Problem aus dem Weg gehen, wobei dieser Weg sehr unsauber ist und nicht empfohlen wird.