Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Object Property Values zur Laufzeit erzeugen (https://www.delphipraxis.net/177292-object-property-values-zur-laufzeit-erzeugen.html)

bogdan 31. Okt 2013 14:54

AW: Object Property Values zur Laufzeit erzeugen
 
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.

stahli 31. Okt 2013 16:17

AW: Object Property Values zur Laufzeit erzeugen
 
Ich habe dafür eine Funktion geschrieben. Sieh mal in der oben angehängten pas nach GetSubObject.

Das ist Teil meines Frameworks (http://www.delphipraxis.net/173360-s...framework.html), mit dem ich im Rahmen des Databinding auch Unterobjekte auflösen kann (Label1.Font.Color).

Ganz ohne eigene Funktion dürfte das m.E. nicht funktionieren.

Furtbichler 31. Okt 2013 18:22

AW: Object Property Values zur Laufzeit erzeugen
 
Ich frage mich wirklich, was das soll.

Ich frage, weil das nun gar nichts mit OOP zu tun hat.

bogdan 2. Nov 2013 16:49

AW: Object Property Values zur Laufzeit erzeugen
 
Hi Stahli, danke für deine Zeit, werde mir mal den Code genauer anschauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
Seite 2 von 2     12   

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