Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Limpiar un TreeView (https://www.clubdelphi.com/foros/showthread.php?t=37752)

lucero_chivas 22-11-2006 01:33:14

Limpiar un TreeView
 
Hola, buenas tardes, espero me puedan dar alguna idea de como solucionar mi problema, lo que pasa es que estoy llenando un TreeView con información de tablas hechas en Oracle 7.... el problema es que voy haciendo inserciones, modificaciones,etc a estas tablas, y quiero q el TreeView se me actualice con la información, pero no puedo lograr esto, sino hasta q cierro mi aplicación y la ejecuto de nuevo es cuando me aparecen los cambios realizados... espero alguien me pueda ayudar

lucero_chivas 22-11-2006 01:51:48

Creo q en mi anterior mensaje no fui muy explicita.... lo plantearé de la siguiente manera:

Tengo el código siguiente:
Código:

void TForm1::Llenar()
{
  int i=0,cont=0;
 
  DM1->T1->Open();
  DM1->T1->AutoRefresh;
  DM1->T1->First();
  if (DM1->T1->Eof)
      ShowMessage("No hay perspectivas");
  else
    {
      TTreeNode *Perspectiva;
      TreeView1->Items->Add(NULL,"Perspectivas");
      Perspectiva=TreeView1->Items->Item[i];
      while (!DM1->T1->Eof)
        {
          cont++;
          i=cont;
          AnsiString p= DM1->T1->FieldByName("pe02_desc")->AsString;
          TreeView1->Items->AddChild(Perspectiva, p);
          DM1->T2->Open();
          DM1->T2->First();
          while(!DM1->T2->Eof)
          {
            //cont++;
            if (DM1->T1->FieldByName("pe02_id")->AsInteger == DM1->T2->FieldByName("ob02_persp")->AsInteger)
            {
              cont++;
              TTreeNode *Objetivos;
              Objetivos=TreeView1->Items->Item[i];
              TreeView1->Items->AddChild(Objetivos, DM1->T2->FieldByName("ob02_desc")->AsString);
              DM1->T3->Open();
              DM1->T3->First();
              while (!DM1->T3->Eof)
                {
                  if (DM1->T2->FieldByName("ob02_id")->AsInteger==DM1->T3->FieldByName("gi02_objetivo")->AsInteger)
                    {
                      cont++;
                      TTreeNode *Grupos;
                      Grupos=TreeView1->Items->Item[i+1];
                      TreeView1->Items->AddChild(Grupos,DM1->T3->FieldByName("gi02_desc")->AsString);
                      DM1->T4->Open();
                      DM1->T4->First();
                      while (!DM1->T4->Eof)
                      {
                        if (DM1->T3->FieldByName("gi02_id")->AsInteger== DM1->T4->FieldByName("in02_grupo")->AsInteger)
                          {
                            cont++;
                            TTreeNode *Indicadores;
                            Indicadores=TreeView1->Items->Item[i+2];
                            TreeView1->Items->AddChild(Indicadores,DM1->T4->FieldByName("in02_desc")->AsString);
                            DM1->T5->Open();
                            DM1->T5->First();
                            while (!DM1->T5->Eof)
                              {
                                if (DM1->T4->FieldByName("in02_id")->AsInteger == DM1->T5->FieldByName("ca02_indicador")->AsInteger)
                                    {
                                      cont++;
                                      TTreeNode *Periodo;
                                      Periodo=TreeView1->Items->Item[i+3];
                                      TreeView1->Items->AddChild(Periodo,DM1->T5->FieldByName("ca02_desc")->AsString);
                                    }
                                  DM1->T5->Next();
                              }
                              DM1->T5->Close();
                          }
                          DM1->T4->Next();
                      }
                    }
                  DM1->T3->Next();
                  }
                DM1->T3->Close();
              }
            DM1->T2->Next();
          }
          DM1->T2->Close();
          DM1->T1->Next();
        }
    }
}

Entonces quiero mandar llamar esta función cada que se muestre la forma para actualizar los datos que haya en el TreeView, pero lo que pasa es q me duplica estos datos, en vez de reescribirmelos, alguien me pudiera ayudar??

dec 22-11-2006 06:12:39

Hola,

Digo yo que acaso bastaría con inicializar el "TreeView" cuando vayas a actualizar sus datos... es decir, borrar todos sus Nodos y acto seguido llenar el "TreeView" con los "nuevos" Nodos. Es algo muy sencillo. Se trata de utilizar el método "Clear" de la propiedad "Items" del "TreeView". Algo así en Delphi:

Código Delphi [-]
TreeView1.Items.Clear;

Y en C++ Builder... prácticamente igual, o sea:

Código:

TreeView1->Items->Clear;


La franja horaria es GMT +2. Ahora son las 23:36:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi