首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

创建Panel,该怎么处理

2012-02-05 
创建Panel写了一个控件cyPanel,在其Create时想对其容器内的控件赋值,比如:Fori:0toControlCount-1dobegin

创建Panel
写了一个控件cyPanel,   在其Create时想对其   容器内的控件赋值,   比如:

For   i   :=   0   to   ControlCount   -   1   do
begin
        if   (Controls[i]   is   TcyEdit)   then
                ...
end;


可以在其   Create   时   ControlCount   始终为0,也就是Panel创建时就那个些Eidt,   Combobox根本就没有创建,那么应该在什么时候来处理这个   初始化呢?

请提供相应的思路!

[解决办法]
For i := 0 to ComponentCount- 1 do
begin
if (Components[i].ClassNameIs( 'TcyEdit ') then
...
end;
[解决办法]
你先要确认控件cyPanel在那个容器之上
如果是Form窗体上的话
for i := 0 to cyPanel.ControlCount-1 do

if (cyPanel.Controls[i] is TEdit) then
if (cyPanel.Controls[i] is TCombobox) then

如果在别人容器上,如一个Panel
那就用for i := 0 to Panel.cyPanel.ControlCount - 1 do

if (cyPanel.Controls[i] is TEdit) then
if (cyPanel.Controls[i] is TCombobox) then

就可以了

你先要保证你所查找的容器正确
[解决办法]
你的Panel1已经创建了,所以该Panel1上的控件需要设置一个Parent属性,
就是将Edit1.Parent := Panel1;
这样,应该可以了;
[解决办法]
写在控件的构造函数中

热点排行