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.