Einzelnen Beitrag anzeigen

bogdan

Registriert seit: 15. Apr 2013
77 Beiträge
 
#11

AW: Object Property Values zur Laufzeit erzeugen

  Alt 31. Okt 2013, 15:54
Ich versuche es nochmal:

zb.: Eigenschaften eines TLabel werden zur Laufzeit geändert:

TLabel.Color
funktioniert mit SetPropValue(TLabel, 'Color', StringToColor('clBlue'));

oder

TLabel.Align
funktioniert mit SetPropValue(TLabel, 'Color', 'alTop');

was nicht funktioniert ist:
TLabel.Font.Color
also so geht das nicht SetPropValue(TLabel, 'Font.Color', StringToColor('clBlue'));

geht aber so:
SetObjectProp(TLabel, 'Font', SetProperty_Font);

also mit einem Functionsaufruf:

Delphi-Quellcode:
function SetProperty_Font:TObject;
var A : TFont;
begin
  A := TFont.Create;
  A.Color := clBlue;
  A.Name := 'Tahoma';
  A.Size := 12;
  Result := A;
end;
oder weitere Eigenschaften eines TShapes ändern:

TShape.Shape
funktioniert mit SetPropValue(TLabel, 'Shape', 'stCircle');

oder

TShape.Height
funktioniert mit SetPropValue(TLabel, 'Height', StrToInt(100));

was nicht funktioniert ist:
TShape.Pen.Color
also so geht das nicht SetPropValue(TShape, 'Pen.Color', StringToColor('clBlue'));

geht aber so:
SetObjectProp(TShape, 'Pen', SetProperty_Pen);

also auch wieder mit einer Function:

Delphi-Quellcode:
function SetProperty_Pen:TObject;
var A : TPen;
begin
  A := TPen.Create;
  A.Color := clBlue;
  A.Width := 10;
  A.Style := psDot;
  Result := A;
end;
Die Funktionen können mit den diversen Eigenschaften erweitert und die Parameter der Eigenschaften auch variabel geändert werden. Das ist jetzt nicht das Problem.

Das Problem ist:

In den diversen Objekten wie TLabel, TEdit, TStringGrid, TShape, TPanel, usw. gibt es Eigenschaften'.'Eigenschaften, die ich dann in einer Funktion erst mal selbst zerlegen muss. Und genau das möchte ich nicht.

Einen fertigen Code habe ich nicht, da ich jetzt schon die unfeine Lösung mit den Funktionen habe und ich das so nicht anwenden möchte.

Anderst weiß ich nicht wie ich es erklären soll.
Kann aber sein, dass ich für die Lösung einen komplett falschen Ansatz habe oder ich checke es einfach nicht wie ich auf die '.'Eigenschaften zugreifen muss.
  Mit Zitat antworten Zitat