请教:写控件时,如何得到控件所在的窗体? ( 积分: 100 )

  • 主题发起人 主题发起人 iseek
  • 开始时间 开始时间
I

iseek

Unregistered / Unconfirmed
GUEST, unregistred user!
我试着写一个增强的TPanel,现在遇到问题:
在Paint事件里,我需要取得Panel所在的窗口,因为没做过控件开发,很多东西不懂。请问,我该如何才能取得它所在的窗口?

我的目的之一是要在面板上平铺位图。我希望知道,面板所在窗体的Brush.Bitmap是否为nil。不为nil时,就在Paint事件里画窗体的位图。
 
一般那个owner就是窗体
 
一般?
谢谢,我希望确定.
 
owner和parent 都有可能是另一个容器,例如Panel,所以这答案不可靠,

var
Form: TCustomForm;

Form := GetParentForm(self);

这是正确答案
 
谢谢kinneng
有现成的函数,肯定是正解.
 
control.Owner 通常都是指窗體對象
如果这样应该可以;如果你不确定可以这样写
var
AObj:TObject
begin
Aobj:=control.parent;
while Aobj<>nil do
begin
if Aobj is TForm then
begin
Result:=TForm(Aobj);
break;
end
else Aobj:=Aobj.parent;
end;
end;
 
后退
顶部