请解释一下 谢谢谢谢

zhouyouben 2003-03-11 05:48:36
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
Bitmap: TBitmap;
Offset: Integer;
begin
with (Control as TComboBox).Canvas do
begin
FillRect(Rect);
Bitmap := TBitmap(ComboBox1.Items.Objects[Index]);
if Bitmap <> nil then
begin
BrushCopy(Bounds(Rect.Left + 2, Rect.Top + 2, Bitmap.Width,Bitmap.Height),Bitmap,Bounds(0, 0, Bitmap.Width,Bitmap.Height), clRed);
Offset := Bitmap.width + 8;
end;
TextOut(Rect.Left + Offset, Rect.Top, Combobox1.Items[Index])
end;
end;
请解释一下
with (Control as TComboBox).Canvas do 这一句中 为什么要这样做啊 和
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
里的 Control: TWinControl 的关系是什么
...全文
59 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahjoe 2003-03-15
  • 打赏
  • 举报
回复
先结贴吧,不好意思也不能不结贴呀。
HZ_ZMD 2003-03-13
  • 打赏
  • 举报
回复
with (Control as TComboBox).Canvas do
如果你要写一个通用函数的话,这个语句是最好的,多个TCombobox不修改代码也可以通用。
zhouyouben 2003-03-13
  • 打赏
  • 举报
回复
谢谢大家 不好意思只有100分谢谢
ahjoe 2003-03-11
  • 打赏
  • 举报
回复
这个事件中,传过来的参数实际是一个 TComboBox控件。但参数定义的是TWinControl,为了访问到 TComboBox的属性,需要将TWinControl强制转换为TComboBox. 所以有
Control as TComboBox
gcq 2003-03-11
  • 打赏
  • 举报
回复
with (Control as TComboBox).Canvas do
begin
……
end;

中间的属性基本都是(Control as TComboBox).Canvas 的属性,这样做避免重复录入,少打字
:O

Control必须是一个TComboBox的实例,才能这样引用
sduzjw 2003-03-11
  • 打赏
  • 举报
回复
我感觉 :此事件传过来的参数,CONTROL:TWINCONTROL,需要显示的指明一下,后再进行处理,不知是否正确
vonafter 2003-03-11
  • 打赏
  • 举报
回复
来晚了!
307 2003-03-11
  • 打赏
  • 举报
回复
同意 xirumin(吃好喝好) 的说法!
有问题请发信息到我的E-mail:guangbowang@yahoo.com.cn
cdhuanglei 2003-03-11
  • 打赏
  • 举报
回复
看看有关开域的方法吧
周自横 2003-03-11
  • 打赏
  • 举报
回复
调用这个属性必须强制转换成TComboxBox才行
King_Dragon 2003-03-11
  • 打赏
  • 举报
回复
上面两位说的基本正确。
MyCrooner 2003-03-11
  • 打赏
  • 举报
回复
TWinControl是TComboBox的老爸
TWinControl可以存储TComboBox对象
但TWinControl的机能有限, 调用美女还是要TComboBox出马
d983074 2003-03-11
  • 打赏
  • 举报
回复
Control是包含要画的Item的控件
d983074 2003-03-11
  • 打赏
  • 举报
回复
TWinControl并没有Canvas属性,要调用这个属性必须强制转换成TComboxBox才行
xirumin 2003-03-11
  • 打赏
  • 举报
回复
是将TWinControl类型强制变为TComboBox类型, 这样的转换是很多的, 因为有些类型并无Canvas属性等原因

5,391

社区成员

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

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