![]() |
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. |
Re: SetText überschreiben?
Zeig mal Code, wie du es versucht hast. Die Klassen Deklaration und die Implementierung.
|
Re: SetText überschreiben?
Wenn du einen anderen Text darstellen möchtest
Überschreib:
Delphi-Quellcode:
function GetLabelText: string; override;
|
Re: SetText überschreiben?
Das wird wohl die read Property sein. ;)
|
Re: SetText überschreiben?
Nicht ganz!
GetLabelText wird in der Paint Methode gerufen! |
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.. |
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. |
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
|
Re: SetText überschreiben?
Nochmal falls es nicht deutlich war:
Caption-Eigenschaft wird gesetzt und gelesen über die Nachrichten
Code:
Damit sollte die Frage eigentlich beantwortet sein
[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 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 |
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 09:11 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-2025 by Thomas Breitkreuz