Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi IsPublishedProp liefert für Published-Property False - wieso (https://www.delphipraxis.net/127864-ispublishedprop-liefert-fuer-published-property-false-wieso.html)

worker 20. Jan 2009 13:05


IsPublishedProp liefert für Published-Property False - wieso
 
Hallo,

ich habe eine Property, welche ich 'published' gesetzt habe.
Frage ich diese Property nun auf 'published' ab, so erhalte ich False - ich verstehe nicht warum, und hoffe, dass mir jemand von Euch helfen kann.

Delphi-Quellcode:
Unit Unit2;

Interface

Uses
   Windows,
   Messages,
   SysUtils,
   Variants,
   Classes,
   Graphics,
   Controls,
   Forms,
   Dialogs,
   TypInfo;

Type
   TTestClass = Class
   private
      FTest: Integer;

      Procedure SetTest(Const Value: Integer);
   published
      Property Test: Integer read FTest write SetTest;
   End;

   TForm2 = Class(TForm)
      Procedure FormCreate(Sender: TObject);
   private
      Testklasse: TTestClass;
   End;

Var
   Form2: TForm2;

Implementation

{$R *.dfm}

{ TTestClass }

Procedure TTestClass.SetTest(Const Value: Integer);
Begin
   FTest := Value;
End;

Procedure TForm2.FormCreate(Sender: TObject);

Begin
   Testklasse := TTestClass.Create;

   If IsPublishedProp(Testklasse, 'Test') Then
      SetPropValue(Testklasse, 'Test', 5);

   ShowMessage(IntToStr(Testklasse.Test));
End;

End.

dataspider 20. Jan 2009 13:39

Re: IsPublishedProp liefert für Published-Property False - w
 
Hi,

da liegt daran, dass du von TObject abgeleitet hast.
Hier gibt es normalerweise keine Published Props.
Du musst dann explizit für die Klasse Code für RTTI erzeugen lassen (Compilerschalter {$M+}) oder z.B. von TCompoenet ableiten.

Cu, Frank

Hawkeye219 20. Jan 2009 13:39

Re: IsPublishedProp liefert für Published-Property False - w
 
Hallo,

deine Klasse muss entweder von TPersistent abgeleitet sein oder mit dem Compilerschalter {$M} eingefasst werden:

Delphi-Quellcode:
{$M+}
TTestClass = Class
  [...]
End;
{$M-}
Gruß Hawkeye

worker 20. Jan 2009 13:48

Re: IsPublishedProp liefert für Published-Property False - w
 
Klingt einleuchtend - danke Euch :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 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