开发一个新控件,如何获得在应用中此控件的容器(或父控件)?(50分)

  • 主题发起人 主题发起人 GZCYP
  • 开始时间 开始时间
getparent
or
owner
 
如下,在窗体上放入一TPanel,在TPanel上放入一Tbutton:



procedure TForm1.Button1Click(Sender: TObject);
begin
button1.Caption:=(button1.Parent as TPanel).Caption;
end;
 
to free_knight:

我说的是在新控件的控件代码当中,如在新控件的重构函数Create(AOwner : TComponent)
中获得在应用中此控件的容器;
 
constructor TPan.Create(AComponent: TComponent);
begin
inherited Create(AOwner);
(AOwner.Owner)即是新控件的容器
end;
 
to whg972:

但我如何得到容器的属性,如Height,width等?
 
(AOwner.Owner as TControl).Height;
例:ShowMessage(IntToStr((Label1.Owner as TControl).Height));
 
用Height := (AOwner.Owner as TControl).Height;
添加控件时出错。

用Height := (AOwner as TControl).Height;
此时得到的是窗体的Height.

请各位继续!


 
那就不是要Owner,而是要Parent了,把Owner换成Parent试试
 
在控件代码中使用Parent是非法的
 
在Create的时候,它的Parent还没有确定呢
 
那就把它放在Loaded事件中不就行了
 
来自:GZCYP, 时间:2002-1-9 16:20:00, ID:845390
如果是在MSSQL SERVER中,可以这样写:
select a.姓名,b.身高 from [data1].[dbo].data1table a,[data2].[dbo].data2table b

注意:数据库名和dbo要用[]括住。
我就是这样做的,质量三包!别忘了给分,我差一点就1000分了。


请教:[]起什么作用,何处可得到help详细说明!
 
[]在MSSQL语法中好象是用来标注系统对象(非保留字或系统变量),指明[]内的是一系统对象。
一个典型的例子:
我在SQLSERVER中建立了一个PUBLIC数据库,用如下查询语句会出错:
select * from public.dbo.TableName
这是因为系统中存在‘PUBLIC’这样一个保留字,在此语句中系统误认为
public是系统保留字,并以此处理,因此出错。
改为如下则不出错:
select * from [public].dbo.TableName
此时用[]指明public是一系统对象(系统会在对象表中查找到public数据库),
自然不会出错。

我不是从哪个Help中得到用法的,是从TQuery的SQLBuilder生成的SQL
语句中得到启发,领悟出来的。

 
太感谢了!可是如果我的data2.mdb和data1.mdb不在一个目录下,又该如何写?
另外,dbo是什么意思?我主要是想用ado控件写一个可以在两个access2000数据库
中交换数据表(导入导出)的程序(不需access2000),不知还有没有高见!
 
MSSQLServer中的表名前面都加了dbo
 
getparent是哪个类最先有的?
 
后退
顶部