急:基于TCustomControl类开发VCL组件如何用CAVANS在PAINT中自画控件 ( 积分: 50 )

  • 主题发起人 主题发起人 男生111
  • 开始时间 开始时间

男生111

Unregistered / Unconfirmed
GUEST, unregistred user!
我用TCustomControl类开发VCL组件,想在PAINT中用RECTANGLE字画组件,方法是
canvas.rectangle(),但是一编译系统报错,canvas未定义,请问这是为什么,那位大哥有
开发组件的DELPHI源程序借小弟看看,谢谢。
 
我用TCustomControl类开发VCL组件,想在PAINT中用RECTANGLE字画组件,方法是
canvas.rectangle(),但是一编译系统报错,canvas未定义,请问这是为什么,那位大哥有
开发组件的DELPHI源程序借小弟看看,谢谢。
 
应该没问题

加个属性 property Canvas; 看看
 
我试了不行,你有源程序可以借我看看吗,谢谢
 
留下你的代码,大家一起帮你看
 
to 男生111
我的QQ: 82780254
 
测试程序如下:
unit CustomControl1;
interface
uses
SysUtils, Classes, Controls;
type
TCustomControl1 = class(TCustomControl)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
[red] procedure Paint;[/red]
published
{ Published declarations }
property OnClick;
end;
var
procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TCustomControl1]);
end;
procedure Paint;
begin
Canvas.Pen.Color=FIndexColor;
Canvas.Brush.Color=FIndexColor;
Canvas.Rectangle(ClientRect);
end;
procedure
end.
 
procedure Paint;override;

下面用TCustomControl1.Paint

你没有限定函数,如果不加就表示全局函数,而不是类的方法,应该没问题了


unit Unit2;

interface
uses
SysUtils, Classes, Controls;
type
TCustomControl1 = class(TCustomControl)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
procedure Paint;override;
published
{ Published declarations }
property OnClick;
property Canvas;
end;


procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TCustomControl1]);
end;
[red]procedure TCustomControl1.Paint;[/red]
begin
// Canvas.Pen.Color := IndexColor;// 这两个不知道从哪里来的参数,你自己检查一下
// Canvas.Brush.Color:=IndexColor;
Canvas.Rectangle(ClientRect);
end;

end.
 
非常感谢您,顺便问一句
1、override是干什么用的,
2、property TColor IndexColor = {read=FIndexColor,write=SetIndexColor};
我又添加了一个属性,想获得颜色值,这样写属性对吗?
非常谢谢
 
1、覆盖父类方法,因为父类里面Paint是虚函数
2、属性一般是这样
property IndexColor :TColor read FIndexColor write SetIndexColor;

在Delphi里面变量的类型在变量后面,{}是注释
 
谢谢,老师
以后有问题还请多指导,谢谢,能告诉我您的电子油箱或QQ吗?我想认识您,做您的学生,
谢谢。
 
抬举我了,老师不敢当,互相学习吧
 
参与的人都应该得到分数,毕竟关注你的问题了,对吧
 
后退
顶部