Mais rapidez para abrir um treeview?

28/06/2008

1

Pessoal tenho um treeview que carrega todos os município do Brasil, só que ao abrir o form ele demora uns 7 segundos, gostaria que ele carregasse mais rápido.

O código está no onShow do Form
Código:
procedure TfrmPesMunicipios.FormShow(Sender: TObject);
var
  Nodo, SubNode1, SubNode2: TTreeNode;
begin
  top  := 0;
  left := 0;
  {: Adicione a linha abaixo.
  ela prepara o treeview para edicao e não reporta as alterações
  para a tela enquanto não terminar o processo, tornando o
  procedimento mais veloz}
  TreeView1.Items.BeginUpdate;
  TreeView1.Items.Clear;
  {: Desabilitar os controle ligados a tabela, para melhorar a performance}
  cdsTEstado.Close;
  cdsTEstado.SQL.Clear;
  cdsTEstado.SQL.Text := ´ select comunicipio, nomunicipio, infaixa ´+
                         ´ from tb8munic                            ´+
                         ´ where infaixa is null                    ´+
                         ´ order by nomunicipio                     ´;
  cdsTEstado.Open;
  cdsTEstado.DisableControls;
  cdsTEstado.First;
  while not cdsTEstado.Eof do
   begin
     if cdsTEstado.FieldByName(´infaixa´).Value = null then
      begin
        SubNode1:= TreeView1.Items.AddChild(Nodo, cdsTEstadoNOMUNICIPIO.value);
        with cdsTMunicipios do
        begin
          Close;
          Params[0].AsString := Copy(cdsTEstadoCOMUNICIPIO.AsString, 1, 2);
          Open;
          cdsTMunicipios.DisableControls;
          cdsTMunicipios.First;
          while not cdsTMunicipios.Eof do
           begin
             SubNode2:= TreeView1.Items.AddChild(SubNode1, cdsTMunicipiosNOMUNICIPIO.value);
             cdsTMunicipios.Next;
           end;
        end;
        cdsTMunicipios.EnableControls;
        cdsTEstado.Next;
      end;
   end;
   cdsTEstado.EnableControls;
   {: informa ao treeview que as alterações foram finalizadas}
   TreeView1.Items.EndUpdate;
end; 



Responder

Posts

28/06/2008

Ara.es

Por que vc nao preenche ele por demanda. Adicione somente os estados e conforme o usuario for escolhendo um estado vc adiciona os municipios daquele estado. Com isso, nem será preciso adicionar todos os municipios. Flw !!


Responder
Por que vc nao preenche ele por demanda. Adicione somente os estados e conforme o usuario for escolhendo um estado vc adiciona os municipios daquele estado. Com isso, nem será preciso adicionar todos os municipios. Flw !!
Hum, é que os Estados e Cidades ficaram num campo só, estou tentando transferir os Estados para um novo campo.

Vou ver aqui se eu consigo.

Obrigado por responder amigo.


Responder
Por que vc nao preenche ele por demanda. Adicione somente os estados e conforme o usuario for escolhendo um estado vc adiciona os municipios daquele estado. Com isso, nem será preciso adicionar todos os municipios. Flw !!
Hum, é que os Estados e Cidades ficaram num campo só, estou tentando transferir os Estados para um novo campo.

Vou ver aqui se eu consigo.

Obrigado por responder amigo.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira