Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Prism erweiterte Komponente - kein Zugriff auf neue Properties (https://www.delphipraxis.net/76210-erweiterte-komponente-kein-zugriff-auf-neue-properties.html)

gfjs 31. Aug 2006 12:30


erweiterte Komponente - kein Zugriff auf neue Properties
 
:gruebel: Ich habe eine Komponente (Label) wie folgt (Kurzform) erweitert:
Delphi-Quellcode:
TMyLabel = class(System.Windows.Forms.&Label)
private
  FVar1 : integer;
  FVar2 : string;
public
  constructor Create; overload;
  destructor Destroy; override;
  property Var1 : integer read FVar1 write FVar2;
  property Var2 : string read FVar2 write FVar2;
end;
In Form.Create habe ich eine Reihe von Labels erzeugt und die Eigenschaften gesetzt. Ohne dass der Compile gemeckert hätte, konnte ich auch den neuen Properties Werte zuweisen.

In einer weiteren Procedur versuche ich nun mit
Delphi-Quellcode:
for i := 0 to Panel1.Controls.Count - 1 do
begin
  Panel1.Controls[i].Var1 := 10;
  Panel1.Controls[i].Var2 := '10:00';
end;
vergeblich auf die neuen Properites zuzugreifen - ich habe nur Zugriff auf die Standard-Properties. Was habe ich falsch gemacht?

Gruß Jürgen.

Christian Seehase 31. Aug 2006 12:34

Re: erweiterte Komponente - kein Zugriff auf neue Properties
 
Moin Jürgen,

Du hast vergessen den Typ des Controls mit anzugeben:

Delphi-Quellcode:
(Panel1.Controls[i] as TMyLabel).Var1 := 10;
Ausserdem solltest Du vor dem Zugriff sicherheitshalber auch prüfen, ob das jeweilige Control auch den Typ hat:

Delphi-Quellcode:
if (Panel1.Controls[i] is TMyLabel then ...
(Ich hoffe in .NET erfolgt der TypeCast auch so ;-))

gfjs 31. Aug 2006 12:41

Re: erweiterte Komponente - kein Zugriff auf neue Properties
 
:wall: Danke!

Ich hatte
Delphi-Quellcode:
(Panel1.Controls[i] as System.Windows.Forms.&Label).Var1 := 10;
geschrieben. Klar, dass ich da nur die Properties des Standard-Labels bekomme.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:42 Uhr.

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