1.这个原因就是重画的原因,我写了一个从tshape派生的类有一个onpaint事件,再这个事件里可以做你想做的事,祝你好运。
2.这个组件要注册到delphi里。unit Unit2;interfaceuses ExtCtrls,classes,Graphics;type
TCanvaP=procedure(sender:Tobject;Canvas:TCanvas) of object;type
TMyShape=class(tshape)
private
FOnPaint:TCanvaP;
protected
procedure paint;override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property onPaint:TCanvaP read FOnPaint write FOnPaint;
property Canvas;
end;procedure Register;implementation{ myshape }procedure Register;
begin
RegisterComponents('Additional',[TMyShape]);
end;constructor TMyShape.Create(AOwner: TComponent);
begin
inherited;
end;destructor TMyShape.Destroy;
begin
inherited;
end;procedure TMyShape.paint;
begin
inherited;
if assigned(FonPaint) then FOnPaint(self,canvas);
//to do your code; canvas.MoveTo(0,0); //del;
canvas.LineTo(100,100); //del;end;end.
2.这个组件要注册到delphi里。unit Unit2;interfaceuses ExtCtrls,classes,Graphics;type
TCanvaP=procedure(sender:Tobject;Canvas:TCanvas) of object;type
TMyShape=class(tshape)
private
FOnPaint:TCanvaP;
protected
procedure paint;override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property onPaint:TCanvaP read FOnPaint write FOnPaint;
property Canvas;
end;procedure Register;implementation{ myshape }procedure Register;
begin
RegisterComponents('Additional',[TMyShape]);
end;constructor TMyShape.Create(AOwner: TComponent);
begin
inherited;
end;destructor TMyShape.Destroy;
begin
inherited;
end;procedure TMyShape.paint;
begin
inherited;
if assigned(FonPaint) then FOnPaint(self,canvas);
//to do your code; canvas.MoveTo(0,0); //del;
canvas.LineTo(100,100); //del;end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货