AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[RTTI] setzen von klasseneigenschaften

Ein Thema von _frank_ · begonnen am 12. Jul 2006 · letzter Beitrag vom 19. Jul 2006
 
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#8

Re: [RTTI] setzen von klasseneigenschaften

  Alt 12. Jul 2006, 14:14
Zitat von dataspider:
Also erst mal ein Beispiel, wie man eine Bitmap z.B. per RTTI lädt:

Delphi-Quellcode:
...
procedure TForm1.LoadBitmapPerRTTI(AObject: TObject);
Var
  ATmpObj: TObject;
  ABitMap: TBitMap;
begin
  ATmpObj := nil;
  ABitMap := nil;

  if IsPublishedProp(AObject, 'Picture') then
    ATmpObj := GetObjectProp(AObject, 'Picture');
  if Assigned(ATmpObj) and (ATmpObj is TPicture) then
    ABitMap := TPicture(ATmpObj).Bitmap;
  ABitMap.LoadFromFile('d:\buffer\uts1.bmp');


end;
du machst letztendlich auch nur reine Pointeraktionen. Holst den pointer castest den nach TPicture und weist das bitmap zu...beim setzen ist das nicht so einfach...da das Quellobjekt nicht das zielobjekt ist (bei mir).
//edit: soll das Loadfromfile nicht saveToFile heisen? weil so wäre die ganze Procedure sinnlos, da immer aus der datei gelesen würde.

aber da man eh prüfen muss, von welchem typ das ziel ist, kann man doch auch folgendes machen, oder:

Delphi-Quellcode:
...
if Assigned(ATmpObj) then
begin
  if (ATmpObj is TPicture) then
    TPicture(ATmpObj).Bitmap.assign(ABitMap) else
  if (ATmpObj is TBitmap) then
    TBitmap(ATmpObj).assign(ABitMap) else
  if (ATmpObj is TStrings) then
    TStrings(ATmpObj).assign(AStringlist) else
...
end;
...
das geht aber nicht bei t-collections...weil der grundtyp kapselt nicht die jeweiligen objecteigenschaften, daher komme ich mit assign nicht weiter.
Zitat von dataspider:
Das Setzen von Eigenschaften wie z.B. ein Propertie vom Typ TStrings
auf eine selbsterstellte Stringliste halte ich für gefährlich.
Man sollte so etwas wirklich am konkreten Beispiel diskutieren. Da gerade die Methode Assign sehr unterschiedlich bis gar nicht implementiert ist, muss m an dann entscheiden, ob man diese benutzt oder in einer abgeleiteten Kalsse neu implementiert.

Frank
bei typen wie tstrings dürfte sich nicht viel ändern, da ich zum editieren nur ein memo habe hat man da z.B. keine sondereigenschaften wie z.B. in TRichedit.

Gruß Frank
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz