知道handle, 如何知道这个控件的类型,如何子类化,转化成相应的变量?

pingshx 2003-01-24 11:25:48
有人说用subclass可以,但delphi上的帮助太少, 找不到相应的信息,各位大侠帮帮忙!先谢过!
...全文
40 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pingshx 2003-01-24
  • 打赏
  • 举报
回复
cg1120(代码最优化-§新年祝福你,好运伴着你§) :你好,由于这些控件集成成一个activeform中,编成ocx, 我引用他人的ocx, 刚才用你这种办法,componentcount为零!
9527 2003-01-24
  • 打赏
  • 举报
回复
楼上正解
naughtyboy 2003-01-24
  • 打赏
  • 举报
回复
FindControl(hwnd)
showmessage((FindControl(Button1.Handle) as TButton).Caption);
Billy_Chen28 2003-01-24
  • 打赏
  • 举报
回复
判断控件类型:
举个例子说,你在一个FORM上放了二个CHECKBOX控件,一个EDIT控件。
每个FORM都有一个COMPONENTCOUNT属性,它代表FORM上的控件数目,在我所举的这个例子里,
假设你在一个FORM上放了二个CHECKBOX控件,一个EDIT控件,所以现在FORM上有三个控件,
COMPONENTCOUNT的值为3。
每个FORM又都有一个COMPONENTS属性,它代表FORM上的控件。
请看下面的一段代码:
for icount:=0 to form1.ComponentCount-1 do
begin
if form1.Components[icount] is tcheckbox then
tcheckbox(form1.Components[icount]).checked:=true;
end;
这段代码的意思是循环扫描FORM上的控件,本例中你在一个
FORM上放了二个CHECKBOX控件,一个EDIT控件,所以COMPONENTS[0],
COMPONENTS[1],COMPONENTS[2]分别代表这三个控件。但到底是COMPONENTS[0]是
CHECKBOX呢还是COMPONENTS[1]是CHECKBOX呢,我们不得而知,所以我们用
if form1.Components[icount] is tcheckbox then来判断。
这段代码的意思是如果“COMPONENTS[ICOUNT]是CHECKBOX的话,那么”,下面再用
tcheckbox(form1.Components[icount]).checked:=true;把每个CHECKBOX的CHECKED属性
设置为TRUE。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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