como listar os controles do formulario de forma hierarquica
Olá, estou listando os controles do formulário conforme abaixo, o problema é que nao consigo lista-los de forma hierarquica, Ex.:
Form, dentro dele todos os painels
Panels, dentro dele todos os edit, botoes, etc.
Menu, dentro dele todos tmenuitens.
Como conseguir isso ?
Obrigado.
var
s: TStringList;
begin
s := TStringList.Create;
with TForm1 do
begin
for I := 0 to ComponentCount - 1 do
begin
oComponent := Components[I];
s.Add(oComponent.Name);
end;
end;
s.Free;
end;
Form, dentro dele todos os painels
Panels, dentro dele todos os edit, botoes, etc.
Menu, dentro dele todos tmenuitens.
Como conseguir isso ?
Obrigado.
var
s: TStringList;
begin
s := TStringList.Create;
with TForm1 do
begin
for I := 0 to ComponentCount - 1 do
begin
oComponent := Components[I];
s.Add(oComponent.Name);
end;
end;
s.Free;
end;
Src68
Curtidas 0
Respostas
Emerson Nascimento
18/01/2007
mas você quer a saída numa stringlist de que forma? dê um exemplo.
ou seria melhor num treeview?
ou seria melhor num treeview?
GOSTEI 0
Src68
18/01/2007
emerson acho q o melhor mesmo seria num treeview, estou tentando fazer um controle de acesso por usuário, quero listar todos os controles num treeview ( o tstringlist foi só um exemplo), e escolher quais constaram do meu controle.
Obrigado.
Obrigado.
GOSTEI 0
Emerson Nascimento
18/01/2007
tente com essa procedure:
o uso é bem simples. basta executar:
[i:b1d95652f3]montaTreeView( [/i:b1d95652f3][b:b1d95652f3]NomeDaTreeViewOndeSeraExibidaAHierarquia[/b:b1d95652f3], nil, Self[i:b1d95652f3] );[/i:b1d95652f3]
no exemplo acima eu passo o formulário ativo (Self), mas no lugar dele você pode passar qualquer componente herdado da classe TWinControl (PageControl, GroupBox, Panel, etc).
a hierarquia será exibida na treeview passada no primeiro parâmetro.
procedure TForm1.montaTreeView(Arvore: TTreeView; Item: TTreeNode; Componente: TWinControl); var i: integer; No: TTreeNode; begin if Item <> nil then No := Arvore.Items.AddChild( Item, Componente.Name ) else No := Arvore.Items.Add( Item, Componente.Name ); for i := 0 to Componente.ControlCount-1 do if (Componente.Controls[i] is TWinControl) then montaTreeView(Arvore, No, TWinControl(Componente.Controls[i])); end;
o uso é bem simples. basta executar:
[i:b1d95652f3]montaTreeView( [/i:b1d95652f3][b:b1d95652f3]NomeDaTreeViewOndeSeraExibidaAHierarquia[/b:b1d95652f3], nil, Self[i:b1d95652f3] );[/i:b1d95652f3]
no exemplo acima eu passo o formulário ativo (Self), mas no lugar dele você pode passar qualquer componente herdado da classe TWinControl (PageControl, GroupBox, Panel, etc).
a hierarquia será exibida na treeview passada no primeiro parâmetro.
GOSTEI 0