DruckenMister WongFacebook

Eigenschaften von Komponenten zur Laufzeit ändern

System Win9x, WinNT, Win2000, WinXP, Vista, Win7
Ab Delphi-Version Delphi 1
Letzte Änderung 28.09.2010

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

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.