在看一个源代码,搞不懂是什么意思……

moonet 2002-05-20 05:38:13
for i := 1 to 6 do
begin
TPanel(SubControls[i].SubSet).Visible := i <= PageL;
end;

代码如上,由于我多面向对象技术了解不多,平时用panel就是panel1,panel2的用,看见这段代码就不懂了,运行时发现SubControls[i].SubSet是很大的随机数来的。请大家告诉我(SubControls[i].SubSet)到底是干什么的???
...全文
163 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Colda 2002-05-21
  • 打赏
  • 举报
回复
奇怪,关注
silvermine 2002-05-21
  • 打赏
  • 举报
回复
强烈建议楼主把源代码贴上来,太大的话发到我的信箱也行啊!!!newsiv@hotmail.com
光明山人 2002-05-21
  • 打赏
  • 举报
回复
是这样的,那个程序把控件对象(指针)转换成整数放在SubSet分量中,然后又通过强制类型转换(TPanel(xxx))转换回来。其实SubSet不是TPanel也能执行成功,只要SubSet中是一个TControl派生类的对象指针转换的值。因为Visible属性是TControl定义的,而TPanel是TControl的派生类。
eulb 2002-05-20
  • 打赏
  • 举报
回复
是handle?
那么SubSet为什么要声明成longint而不是THandle?
关注
lxpbuaa 2002-05-20
  • 打赏
  • 举报
回复
SubControls表示TSubControl记录类型的集合。
其中SubSet(longint)代表一个TPanel的句柄。
TPanel(SubControls[i].SubSet)表示将集合SubControls的第i+1个元素转化为TPanel。


—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Desire := '加不加分随你';
—————————————————————————————————


       
moonet 2002-05-20
  • 打赏
  • 举报
回复
说道句柄我就明白点了,谢谢楼上的各位~~~
liang_z 2002-05-20
  • 打赏
  • 举报
回复
不过说是Longint能转换为一个TPanel,我倒也没有用过!
liang_z 2002-05-20
  • 打赏
  • 举报
回复
SubControls[i].SubSet是自定义的,我不明白的就是TPanel后面带括号代表什么???怎么使用???

带括号表示类型的强制转换!
星之瀚海 2002-05-20
  • 打赏
  • 举报
回复
关注
liang_z 2002-05-20
  • 打赏
  • 举报
回复
SubSet应该是一个TPanel控件的句柄,即:Handle
这儿也许是定义了一个TPanel控件数组。
Crazy_ing 2002-05-20
  • 打赏
  • 举报
回复
强制类型转换
moonet 2002-05-20
  • 打赏
  • 举报
回复
看程序开头:
type TSubControl = record //
SubSet: longint;
name: Longint;
TMP: longint;
Mst: longint;
ValveNew: Longint;
ValveBack: Longint;
Valvehot: Longint;
Valvecool: Longint;
Valveback2: Longint;
ValveSteam: Longint;
ValveFan: Longint;
Auto: longint;
end;

SubControls[i].SubSet是自定义的,我不明白的就是TPanel后面带括号代表什么???怎么使用???

5,386

社区成员

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

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