关于Canvas:=TCanvas.Create();的错误~

militant 2003-12-15 08:34:17
我想用Canvas画图,可是当我Canvas:=TCanvas.Create();创建Canvas对象的时候,出现错误如下:Cannot assign to a read-only property.
我其他对象创建都没有出现这种错误,奇怪。
...全文
169 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingjianzeng2003 2003-12-15
  • 打赏
  • 举报
回复
Canvas:=Tcanvas.Create;没有问题啊,怎么会报错吗?我试了怎么不会呢?
lxhong1980 2003-12-15
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
Canvas:TCanvas;
begin
Canvas:=TCanvas.Create();
Canvas.Brush.Color:=clWhite;
end;

没有错误啊
Sumie@Sam 2003-12-15
  • 打赏
  • 举报
回复
在窗体中使用属性,如果没有指定对象,则默认作为当前窗体的属性,你把定义的变量名换一个吧。
shgye121212 2003-12-15
  • 打赏
  • 举报
回复
不是吧!!??
militant 2003-12-15
  • 打赏
  • 举报
回复
不是了吧?
刚开始我定义Canvas:TCanvas啊
Canvas我还没有定义的对象啊,怎么可以直接用呢?
直接用我也用过了, Canvas.Brush.Color:=clWhite;这里就出错了
产生EAccessViolation错误。
gencan 2003-12-15
  • 打赏
  • 举报
回复
你要用Canvas用就是了,为什么给它赋值呢?
asj 2003-12-15
  • 打赏
  • 举报
回复
呵呵,你要用Canvas用就是了,为什么给它赋值呢?
人家不是告诉你了Canvas是一个Read-only的属性,给它赋值当然要出错了
在窗口中写Canvas就等于Form1.Canvas,而这个对象是在窗口创建时就已经创建的,由窗口来管理。当然不能让你随便就给它从新分配内存了。直接使用它就行了
tonylk 2003-12-15
  • 打赏
  • 举报
回复
Canvas:=TCanvas.Create();
左边这个canvas是你自己声明的变量,还是什么控件里自带的属性,后者的话当然不可以进行赋值,而且也不需要赋值,直接用就可以了。。
shgye121212 2003-12-15
  • 打赏
  • 举报
回复
关注:
militant 2003-12-15
  • 打赏
  • 举报
回复
我觉得可能是因为Canvas创建的问题了。
我是在FormShow事件中创建Canvas是就产生上述错误了。

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧