2
我的後裔TMyImage = class(ExtCtrls.TImage)
需要訪問TImage
繼承畫布如何訪問繼承的TImage的繼承畫布?
例如(在TGraphicControl
始祖)
procedure TMyImage.Paint;
var
LCanvas: TCanvas;
begin
// need "inherited inherited Canvas"
LCanvas := inherited (inherited Canvas); // of the TGraphicControl
inherited;
end;
上面不會顯然編譯。
這是可以做到沒有黑客TGraphicControl
和使用私人會員FCanvas
?
這工作:
type
THackGraphicControl = class(TControl)
private
FCanvas: TCanvas;
end;
procedure TMyImage.Paint;
var
LCanvas: TCanvas;
begin
// need "inherited inherited Canvas"
LCanvas := THackGraphicControl(Self).FCanvas;
with LCanvas do
begin
Brush.Bitmap := FAlphaPattern;
FillRect(ClientRect);
Brush.Bitmap := nil;
end;
inherited;
end;
但我在想,如果有不會是版本依賴的解決方案。