!!!!!!!!!!!谁给比较细的说说这个问题!!!!!!!!!!!

ReallyFail 2003-03-21 01:16:31
一个有句柄的可视化控件的PAERENT属性被赋值后所引起被调用的主要的过程
及这些过程的功能!!就是一个象BUTTON这样的控件在他的PARENT属性被赋值后,引起了什么样的方法调用。以及这些方法实现了什么功能!(只要比较重要的方法),比如句丙的创建等等
...全文
31 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcvj 2003-03-21
  • 打赏
  • 举报
回复
1:
构造一个句柄!!!!

2:
发送一个消息!!!!

3:
功能就系让!!!!!!

4:
该控件调paint函数,刷新自己的显示(VC OnPaint也如此)

5:
大概就这样了,其它去看code


还有,上面这些了人回话,严重浪费csdn资源
ReallyFail 2003-03-21
  • 打赏
  • 举报
回复
算了!自己再看代码吧!谢谢!!
ReallyFail 2003-03-21
  • 打赏
  • 举报
回复
在Perform(CM_PARENTBIDIMODECHANGED, 0, 0);之前应该有句柄的创建之类的啊?
因为在构造中并没有创建句柄!!
ReallyFail 2003-03-21
  • 打赏
  • 举报
回复
谢谢楼上的,没有能做比较详细介绍的大虾吗??
hch_45 2003-03-21
  • 打赏
  • 举报
回复
Parent会默认指定,不用去特定指定除非您动态创建可视控件,值一般为它所在的窗口。指定Parent是设置该控件由谁来析构。如Button1的Parent是Form1。。当Form1析构(Destory)时,Form1会先析构释放Button1,然后析构自已。
ehom 2003-03-21
  • 打赏
  • 举报
回复
查看相关源代码:

property Parent: TWinControl read FParent write SetParent;

procedure TControl.SetParent(AParent: TWinControl);
begin
if FParent <> AParent then
begin
if AParent = Self then
raise EInvalidOperation.CreateRes(@SControlParentSetToSelf);
if FParent <> nil then
FParent.RemoveControl(Self);
if AParent <> nil then
begin
AParent.InsertControl(Self);
UpdateAnchorRules;
end;
end;
end;

procedure TWinControl.InsertControl(AControl: TControl);
begin
AControl.ValidateContainer(Self);
Perform(CM_CONTROLLISTCHANGE, Integer(AControl), Integer(True));
Insert(AControl);
if not (csReading in AControl.ComponentState) then
begin
AControl.Perform(CM_PARENTCOLORCHANGED, 0, 0);
AControl.Perform(CM_PARENTFONTCHANGED, 0, 0);
AControl.Perform(CM_PARENTSHOWHINTCHANGED, 0, 0);
AControl.Perform(CM_PARENTBIDIMODECHANGED, 0, 0);
if AControl is TWinControl then
begin
AControl.Perform(CM_PARENTCTL3DCHANGED, 0, 0);
UpdateControlState;
end else
if HandleAllocated then AControl.Invalidate;
AlignControl(AControl);
end;
Perform(CM_CONTROLCHANGE, Integer(AControl), Integer(True));
end;
brallow 2003-03-21
  • 打赏
  • 举报
回复
我说的只是我的猜想,没有任何证明!
我觉得被赋值以后应该是在其父对象中加入一个成员,这一个成员就是这个button了,然后可能会调用fresh这样的函数来刷新显示。我觉得就这样了。至于一般的消息处理或者更复杂的关系处理我觉得应该是这样的:我觉得在开发windows的初期应该是用C的所以可能有一比较复杂的链表这样的系统,通过parent可以依次找到child反之也可以。比如:发出一个事件消息的时候如果parent不处理该消息,就可以通过这一个转发给子窗口。
猜想。
猜想。
猜想。
猜想。
猜想。不要见怪。
ReallyFail 2003-03-21
  • 打赏
  • 举报
回复
居然没一个人回答??????????

5,392

社区成员

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

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