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 propety write geht nicht ??!! (https://www.delphipraxis.net/3523-propety-write-geht-nicht.html)

Snoop007 17. Mär 2003 02:11


propety write geht nicht ??!!
 
hi,
ich schreibe gerade eine komponente
wenn ein neuer string hinzugefügt wurde, muss ich die komponente neu zeichnen lassen
meine property hat folgende strucktur
Delphi-Quellcode:
    procedure schreiben(value : TStringlist);
    procedure buttonszeigen;
    function lesen :TStringlist ;
  public
    constructor create(AOwner : TComponent); override;
  published
    property Items : TStringlist read lesen write schreiben;
  end;
aber die procedure schreiben wird nicht aufgerufen, lesen geht

wieso frage ich mich bloss ??!!

APP 17. Mär 2003 06:13

Hallo,
poste mal Deine Procedure 'schreiben', um zu sehen was Du machst.

p.s. Nach dem (in)-offiziellen Styleguide sollte die write Prozedur mit SetDeineProcedure und read Funktion mit GetDeineFunction benamst sein...

jbg 17. Mär 2003 06:44

schreiben wird nur aufgerufen, wenn du Items eine Stringliste zuweist. Für das Abfangen von Änderungen musst du bei der Stringliste das OnChange Ereignis abfangen.

Snoop007 17. Mär 2003 10:11

die procedure schreiben wird auch gar nicht ausgeführt, er spring da nicht rein

wie kann ich denn das OnChange ereignis von FItems in die Komponente hinzufügen ?
Delphi-Quellcode:
procedure TOvaleLeiste.schreiben(value : TStringlist);
begin
  FItems := value;
  refresh;
end;

Snoop007 17. Mär 2003 10:29

habs hinbekommen das ereignis zu schreiben

bei der erstellung eine procedure von OnChange zuweisen
Delphi-Quellcode:
  FItems.OnChange := aendern;
und die prodedure defenieren und anweisungen reinpacken
Delphi-Quellcode:
procedure TOvaleLeiste.aendern(Sender : TObject);
begin
  refresh;
end;

jbg 17. Mär 2003 12:54

Zitat:

Zitat von Snoop007
Delphi-Quellcode:
procedure TOvaleLeiste.schreiben(value : TStringlist);
begin
  FItems := value;
  refresh;
end;

´
Damit produzierst du nur Speicherlecks. Bei einem Objekt sollte (außer man weiß genau was man macht) das schreiben so ablaufen:
Delphi-Quellcode:
procedure TOvaleLeiste.schreiben(value : TStringlist);
begin
  FItems.Assign(value);
  refresh;
end;


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