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 nicht-Vererbte private-Methode überschreiben (https://www.delphipraxis.net/23109-nicht-vererbte-private-methode-ueberschreiben.html)

Skiron 28. Mai 2004 20:50


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:
private
  procedure SetCursor(Value: TCursor); override;
end;

implementation

procedure TForm1.SetCursor(Value: TCursor);
begin
  inherited;
//Kleinigkeiten...
end;
in der Klasse TControl (oder TWinControl) ist ja die Eigenschaft Cursor enthalten. die schaut so aus:

Delphi-Quellcode:
property Cursor: TCursor; read fCursor write SetCursor;
in der selben Klasse ist dann auch die Methode SetCursor in private deklariert.
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?

Bernhard Geyer 28. Mai 2004 21:14

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).

Skiron 29. Mai 2004 13:08

Re: nicht-Vererbte private-Methode überschreiben
 
Jetzt hab ich so was gemacht:
Delphi-Quellcode:
  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;
Wenn ich aber den Cursor setz, kommt keine Messagebox!

Und ich kanns nicht so schreiben
Delphi-Quellcode:
 property Cursor: TCursor read FCursor write SetCursor default crDefault;
weil er dann FCursor nicht kennt...

SirThornberry 29. Mai 2004 13:20

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 00:44 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