读书人

创建Panel,该怎么处理

发布时间: 2012-02-05 12:07:14 作者: rapoo

创建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;
这样,应该可以了;
[解决办法]
写在控件的构造函数中

读书人网 >.NET

热点推荐