Delphi-PRAXiS
Seite 1 von 2  1 2      

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 SetText überschreiben? (https://www.delphipraxis.net/16591-settext-ueberschreiben.html)

marvin.maybe 19. Feb 2004 17:19


SetText überschreiben?
 
Hallo,

von TLabel leite ich meine eigene Label-Klasse ab, bei der ich etwas spezielles tun möchte, wenn dem Property Caption ein Wert zugewiesen wird. Also dachte ich mir einfach die Methode SetText zu überschreiben. Leider finde ich nirgendwo eine der Doku diese Methode und der Compiler meckert, dass meine Methode anders definiert wäre...

Ein Workaround für mein eigentliches Problem habe ich gefunden aber grundsätzlich würde mich interessieren, wo man in solchen Fällen am besten nachschaut. Gibt es irgendwo die Source der Interfaces?

Gruß, Marvin.

Luckie 19. Feb 2004 17:23

Re: SetText überschreiben?
 
Zeig mal Code, wie du es versucht hast. Die Klassen Deklaration und die Implementierung.

neolithos 19. Feb 2004 17:26

Re: SetText überschreiben?
 
Wenn du einen anderen Text darstellen möchtest
Überschreib:

Delphi-Quellcode:
    function GetLabelText: string; override;

Luckie 19. Feb 2004 17:29

Re: SetText überschreiben?
 
Das wird wohl die read Property sein. ;)

neolithos 19. Feb 2004 17:32

Re: SetText überschreiben?
 
Nicht ganz!

GetLabelText wird in der Paint Methode gerufen!

SirThornberry 19. Feb 2004 18:13

Re: SetText überschreiben?
 
überschreib doch einfach das property caption...

GetLabelText wird in der Paint Methode gerufen = Read

denn wenn ich auf die canvas male muss ich ja nur die aktuelle caption lesen und nicht neu setzen..

neolithos 19. Feb 2004 18:19

Re: SetText überschreiben?
 
GetLabelText ist deshalb nicht die Read-Property, weil es den Caption-Text anpasst, dazu kann er gelesen werden. Ich könnte aber auch etwas ganz anderes wie in der Caption Property steht zurückgeben!

Caption wurde übrigens von TControl geerbt. Und kann über die Nachrichten WM_GETTEXT (read) und WM_SETTEXT (write) beeinflusst werden.

SirThornberry 19. Feb 2004 18:23

Re: SetText überschreiben?
 
ähm, für mich ist "function GetLabelText: string" eindeutig ein Readproperty da der funktion nix übergeben wird und als result etwas zurückgegeben. Anhand der Funktion kann man die Caption nicht ändern nur "falsch" zurückgeben. Der Wert der gesetzt wird wenn ich "caption := 'xyz';" aufrufe wird auf keinen fall durch GetLabelText geändert außer die Methode wurde bereits geändert, im orginalzustand (Delphiauslieferung) ist es ein höchstwahrscheinlich das read-property von Caption

neolithos 19. Feb 2004 18:37

Re: SetText überschreiben?
 
Nochmal falls es nicht deutlich war:

Caption-Eigenschaft wird gesetzt und gelesen über die Nachrichten
Code:
[b]read[/b] WM_GETTEXT
   wParam = BufSize Integer
   lParam = Buffer PChar
   Result = Länge des Textes

[b]read[/b] WM_GETTEXTLENGTH
   wParam = 0
   lParam = 0
   Result = Länge des Textes

[b]write[/b] WM_SETTEXT
   wParam = 0
   lParam = Buffer PChar
Damit sollte die Frage eigentlich beantwortet sein

GetLabelText gibt zwar Std.-mäßig die Caption zurück, kann sie aber auch modifiziert zurückgeben.

Nochmal klar:

per Def. GetLabelText <> Caption nur im Std. GetLabelText = Caption

marvin.maybe 20. Feb 2004 11:30

Re: SetText überschreiben?
 
Es geht mir nicht um GetText. Meine Operation soll durchgeführt (der neue Text wird analysiert und damit werden spezielle Datenstrukturen gefüllt, die ich später brauche) werden , wenn neuer Text dem Property Caption zugewiesen wird. In der Deklaration vom property TCustomLabel.Caption wird laut Doku die SetText Methode verwendet. Diese möchte ich überschreiben, was mir nicht gelingt, da ich die Deklaration nicht kenne (in der Doku habe ich nichts gefunden).
Vielleicht ist es ein Fehler in der Doku: Entweder wird beim Schreiben des Property Caption nicht die Methode SetText aufgerufen oder SetText wurde in der Doku vergessen?

(Ich habe mit einem Delphi 8 .Net herumgespielt)

Gruß, Marvin.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr.
Seite 1 von 2  1 2      

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