Selecao DevMedia QUERO SER PRIME

Fórum como listar os controles do formulario de forma hierarquica #336444

18/01/2007

0

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;


Src68

Src68

Responder

Posts

18/01/2007

Emerson Nascimento

mas você quer a saída numa stringlist de que forma? dê um exemplo.
ou seria melhor num treeview?


Responder

Gostei + 0

18/01/2007

Src68

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.


Responder

Gostei + 0

19/01/2007

Emerson Nascimento

tente com essa procedure:
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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar