there is no method to override

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Anonymus
Beiträge: 31
Registriert: Di 15. Dez 2015, 10:36

there is no method to override

Beitrag von Anonymus »

Hallo,

ich experimentiere gerade ein wenig mit den FCLImage Units.

Ich will mit TFFPixelCanvas als Basisklasse anfangen, muss aber festellen, dass die Methoden SetColor() und GetColor() noch nicht implementiert sind. Die existieren nur als virtual; abstract; in der Klasse FPCustomCanvas.

Ich habe nun von TFPPixelCanvas eine witere Klasse abgeleitet, in der ich die beiden genannten Methoden überschreiben will. Sie setzen die Pixelfarbe auf dem Bildschirm unter Verwendung der Eigenschaft Colors[x,y]

Wie kann ich nun diese beiden Methoden:

procedure SetColor(x,y: Integer; Value: TFPColor); override;

function GetColor(x,Y: Integer): TFPColor; override;

überschreiben?

Ich könnte natürlich TFPPixelcanvas um diese Methodden erweitern. Aber wenn schon diese Methoden in FPCustomCanvas bereits abstrkt deklariert sind, Schutzklasse protected, sollte es doch einen Weg geben in einer beliebigen Nachfolgerklasse die Überschreibung vorzunehemen.

Der Compiler sagt mir, es gebe keine zu überschreibenden Methoden dieses Namens.

Code: Alles auswählen

 
type
  TMeineCanvasKlasse = class(TFPPixelCanvas)
  ...
     procedure SetColor(x,y: Integer; Value: TFPColor); override;
     function GetColor(x,Y: Integer): TFPColor; override;
 
  ...
  end;
 

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: there is no method to override

Beitrag von Michl »

Bei mir geht das schon, allerdings sieht bei mir die zu überschreibende Methode anders aus:

Code: Alles auswählen

  procedure SetColor(x,y:integer; const Value:TFPColor); override;
//statt
  procedure SetColor(x,y: Integer; Value: TFPColor); override; 

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Antworten