Código
Ex.
Classif. Descrição
1 ATIVO
11 ATIVO CIRCULANTE
111 DISPONIVEL
11101 CAIXA
111010001 FINANCEIRO
}
procedure TfrmCadPermissao.Button2Click(Sender: TObject);
var
index : Integer; {Número sequencial para criação dos itens}
intLen1 : Integer; {Guarda o tamanho da conta de classificação - atual}
intLen2 : Integer; {Guarda o tamanho da conta de classificação - anterior}
intPosIni : Integer; {Determina o tamanho da conta primeira conta de classificação}
MyNode : Array[0..10] of TTreeNode; {Matriz que guarda a posição dos níveis}
NodeSup : TTreeNode; {Node - da Raiz Principal}
NodeTmp : TTreeNode; {Node - temporaria}
strTexto : String; {Obtem o nome da conta de classificação}
begin
inherited;
TreeView1.Items.Clear;
index := -1;
strgSQLTmp := '';
strgSQLTmp := strgSQLTmp + 'SELECT ds_classificacao = rtrim(ltrim(cd_classificacao)),';
strgSQLTmp := strgSQLTmp + ' ds_texto = descricao ';
strgSQLTmp := strgSQLTmp + 'FROM escplano where cd_empresa = 1 order by cd_classificacao ';
qry_permissao.Close;
qry_permissao.SQL.Text := strgSQLTmp;
qry_permissao.Open;
qry_permissao.First;
//¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
//Inicializacao
NodeTmp := nil;
NodeSup := nil;
intLen2 := 0;
intPosIni := 1; {numero de digitos da primeira conta de classificação "Plano de contas" que será utilizada como Nó principal no Treeview }
//¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
//Inicializa a Array que guarda os Nos que determina o grau do plano de contas.
for intlen1 := 0 to 10 do
begin
MyNode[intLen1] := NodeTmp;
end;
//
//Percorre a pesquisa para monta o TreeView
while not qry_permissao.Eof do
begin
//¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
intLen1 := length(qry_permissao.FieldByName('ds_classificacao').AsString);
strTexto := qry_permissao.FieldByName('ds_texto').AsString;
index := index + 1;
//¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
//Contralo a criação do nivel principal
if intLen1 = intPosIni then
begin
MyNode[intLen1] := NodeTmp;
if intLen2 = 0 then
begin
NodeSup := treeview1.Items.Add(nil, strTexto);
index := index - 1;
end
else
treeview1.Items.Add(NodeSup, strTexto);
//
end
else
begin
if intLen1 > intLen2 then
begin
NodeTmp := TreeView1.Items[index];
MyNode[intLen2] := NodeTmp;
treeview1.Items.AddChild(TreeView1.Items[index], strTexto);
end
else if intLen1 < intLen2 then
begin
NodeTmp := TreeView1.Items[index];
treeview1.Items.Add(MyNode[intLen1],strTexto);
end
//
else if intLen1 = intLen2 then
begin
NodeTmp := TreeView1.Items[index];
MyNode[intLen1] := NodeTmp;
treeview1.Items.Add(TreeView1.Items[index], strTexto);
end;
//
end;
//
if intLen1 <> intLen2 then
begin
intLen2 := intLen1;
end;
//
//Avança para o próximo registro
qry_permissao.Next;
end;
//
end;
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009