Hallo Chaosente,
bevor ich auf deine Frage antworte:
Zitat von
Tiuri:
Da das Canvas-Objekt erst in TGraphicControl eingeführt wird, aber TShape von TControl abgeleitet wird, kennt TShape das Canvas-Objekt nicht.
Ich kann mir nicht helfen, aber bei mir ist TShape von TGraphicControl abgeleitet.
Nun zu Deiner Frage:
Zitat von
Chaosente:
[...]Wenn ich die hilfe aufrufe, sagt die mir, das TCanvas vererbt wird, aber wenn ich versuche canvas aufzufrufen sagt er mir es sei ein unbekannter bezeichner...
Die Canvas des Shapes ist eine Eigenschaft von TShape (genauer, sie wird von TGraphicControl eingeführt). Diese wird aber als Protected eingeführt, d.h. du kannst innerhalb der Klasse TShape auf die Canvas zugreifen, allerdings nicht von außen, also wenn du eine Instanz der Klasse TShape ansprichst.
Du hast die Möglichkeit entweder eine eigene Klasse von TShape abzuleiten und die Methode (ebenfalls protected) Paint zu überschreiben
Delphi-Quellcode:
TMyShape = class(TShape)
protected
procedure Paint;override;
end;
[...]
procedure TMyShape.Paint;
begin
inherited;
// hier tun was du willst
end;
Nachteil: Um die Klasse als Componente wie TShape zu nutzten muss sie zusätzlich Registriert werden etc. Wird wahrscheinlich zu viel aufwand werden.
ODER:
Daher würde ich in Richtung die Richtung von Nuclear-Ping gehen
Zitat von
Nuclear-Ping:
... oder eine TPaintBox, TImage, etc.
und anstatt des Shapes eben die gute alte Paintbox verwenden und in der Paintbox z.B. das Ereignis OnPaint nutzen zum zeichen.
Gruß, Chris