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/)
-   -   Delphi Wie funktioniert SetPropValue bei TMemo.Lines? (https://www.delphipraxis.net/133064-wie-funktioniert-setpropvalue-bei-tmemo-lines.html)

steffen_d 24. Apr 2009 17:16


Wie funktioniert SetPropValue bei TMemo.Lines?
 
Hallo,

ich komm hier irgendwie nicht weiter:

Ich versuche per SetPropValue an einem TMemo die Lines zu verändern.
Da verträgt sich aber Variant nicht mit TStrings.

Also probierte ich die spezielleren Methoden setOrdProp und setObjectProp.

Mit GetObjectProp bekomme ich die Lines, kann sie auch mit ShowMessage anzeigen.
Adde ich dann "Zeile 3" und schreibe mit SetObjectProp zurück, dann sind die Lines leer.

Mit einfachen Typen funktioniert SetPropValue, ich kann z.B. bei einem TButton die Caption oder Left, Top usw. verändern.

Ich nutze Delphi 7 Professional und Win XP Professional.

Hat vielleicht jemand eine Idee?

Danke im Voraus
Steffen

Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
  ts                         : TStrings;
begin
  Memo1.Lines.Add('Zeile 1');
  Memo1.Lines.Add('Zeile 2');
  ts := TStrings(getObjectProp(Memo1, 'Lines'));
//  ts := TStrings(getOrdProp(Memo1, 'Lines'));
  ShowMessage(ts.text);
  ts.Add('Zeile 3');
  setObjectProp(Memo1, 'Lines', ts);
//  setOrdProp(Memo1, 'Lines', integer(ts));
  ts := TStrings(getOrdProp(Memo1, 'Lines'));
end;

Apollonius 24. Apr 2009 17:18

Re: Wie funktioniert SetPropValue bei TMemo.Lines?
 
Lass das SetObjectProp. Allein durch das Add wird die Zeile schon hinzugefügt.

steffen_d 24. Apr 2009 17:28

Re: Wie funktioniert SetPropValue bei TMemo.Lines?
 
Danke :-D ,

stimmt, ts ist ja ein Pointer auf die Lines. :wall:

Komisch ist nur, dass die Lines leer sind, wenn ich ts nochmal zuweise.
Eigentlich dürfte dass doch nichts verändern, oder?

Danke und Gruß
Steffen

Apollonius 24. Apr 2009 17:39

Re: Wie funktioniert SetPropValue bei TMemo.Lines?
 
Durch die Zuweisung wird im Prinzip ts.Assign(ts) aufgerufen. Nun wird in der Assign-Methode aber erst Self.Clear aufgerufen und dann die Zeilen der anderen Liste hinzugefügt. Das funktioniert natürlich nicht, wenn Self und Argument identisch sind.

steffen_d 24. Apr 2009 19:00

Re: Wie funktioniert SetPropValue bei TMemo.Lines?
 
Hallo,

ja, das leuchtet ein :-D .

Danke nochmal.
Steffen


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