![]() |
nicht-Vererbte private-Methode überschreiben
ich möcht für mein Formular gern den Cursor setzen.
Ganz einfach ginge das ja mit Cursor := crMeinCursor; oder so. Nun möcht ich aber (da ich schon jede menge von Cursor-zuweisungen drinnenhab) noch ein paar kleinigkeiten erledigen, wenn der Cursor gesetzt wird. Deshalb hab ich mir gedacht, einfach so was zu machen:
Delphi-Quellcode:
in der Klasse TControl (oder TWinControl) ist ja die Eigenschaft Cursor enthalten. die schaut so aus:
private
procedure SetCursor(Value: TCursor); override; end; implementation procedure TForm1.SetCursor(Value: TCursor); begin inherited; //Kleinigkeiten... end;
Delphi-Quellcode:
in der selben Klasse ist dann auch die Methode SetCursor in private deklariert.
property Cursor: TCursor; read fCursor write SetCursor;
Deshalb funktioniert die obrige Methode nicht, weil er mir beim override meckert, dass es keine vererbte Methode namens SetCursor gibt (private wird nicht vererbt) weiß jemand, wie ich das Problem irgendwie lösen könnte? |
Re: nicht-Vererbte private-Methode überschreiben
Ich glaub es reicht die Property-Defintion nochmals vorzunehmen und dann nochmals die SetCursor-Defintion/Implementierung (ohne Override)
(Ohne Gewähr - Hab gerade kein Delphi offen). |
Re: nicht-Vererbte private-Methode überschreiben
Jetzt hab ich so was gemacht:
Delphi-Quellcode:
Wenn ich aber den Cursor setz, kommt keine Messagebox!
TForm1 = class(TForm)
//.. private { Private declarations } procedure SetCursor(Value: TCursor); public { Public declarations } property Cursor; end; //... procedure TForm1.SetCursor(Value: TCursor); begin inherited; ShowMessage(''); end; Und ich kanns nicht so schreiben
Delphi-Quellcode:
weil er dann FCursor nicht kennt...
property Cursor: TCursor read FCursor write SetCursor default crDefault;
|
Re: nicht-Vererbte private-Methode überschreiben
ich habs grad pobiert und eigentlich warst du schon nah dran...
so gehts
Delphi-Quellcode:
[...]
private function FGetCursor: TCursor; procedure fSetCursor(ACursor: TCursor); published property Cursor: TCursor read FGetCursor write fSetCursor; [...] function TForm1.FGetCursor: TCursor; begin result := inherited Cursor; end; procedure TForm1.fSetCursor(ACursor: TCursor); begin inherited Cursor := ACursor; ShowMessage(''); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:08 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