FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
mostrar archivos en Label
Hola amigos, tengo un problemita para mostrar los nombres de los archivos en Label1, me ayude con un codigo en está página para listar archivos, pero ahora quisiera mostrarlos en tiempo real en label1 con un timer1, un ejemplo que hice es este:
------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(Contador <= 10) { Timer1->Enabled = true; // habilito el Timer1 Timer1->Interval = 500; Label1->Caption = Contador; // intervalo de tiempo ProgressBar1->Min = 0; ProgressBar1->Max = 9; ProgressBar1->Position = Contador; // muestro el contador en el label1 Contador++; // aumento el contador en 1 } else { Timer1->Enabled = false; // Deshabilito el Timer1 Contador = 0; //Pongo el contador a 0 } } ----------------------------------------------------------------- lo que hace el programita en cuestión es ir mostrando los numeros del 1 al 10 en label1 en un intervalo de 500. Lo que no puedo hacer que salga pero con nombres de archivos de un código que está en está misma página de c++, el código en cuestión es este: ------------------------------------------------------------------- #include <io.h> #include <dir.h> void ListFiles(char *Dir, TListBox *LB) { struct _finddata_t fdt; long hFile; char tmp[MAX_PATH]; chdir(Dir); fdt.attrib = _A_SUBDIR; if( (hFile = _findfirst("*.*", &fdt) ) != -1) { do { if (fdt.attrib == _A_SUBDIR) { if (strcmp(fdt.name,".")!= 0 && strcmp(fdt.name,"..") != 0) { strcpy(tmp, Dir); strcat(tmp, "\\"); strcat(tmp, fdt.name); ListFiles(tmp, LB); } } else LB->Items->Add(String(fdt.name)); } while (_findnext(hFile, &fdt) == 0); _findclose(hFile); }; } void __fastcall TForm1::Button1Click(TObject *Sender) { ListFiles("C:\\UNA_CARPETA", ListBox1); } --------------------------------------------------------------------- He tratado de esta manera pero no funciona: void ListFiles(char *Dir) { Timer1->Enabled = true; // habilito el Timer1 Timer1->Interval = 500; AnsiString concatena; struct _finddata_t fdt; long hFile; char tmp[MAX_PATH]; chdir(Dir); fdt.attrib = _A_SUBDIR; if( (hFile = _findfirst("*.*", &fdt) ) != -1) { do { if (fdt.attrib == _A_SUBDIR) { if (strcmp(fdt.name,".")!= 0 && strcmp(fdt.name,"..") != 0) { strcpy(tmp, Dir); strcat(tmp, "\\"); strcat(tmp, fdt.name); ListFiles(tmp); Form1->ListBox1->Items->Add(tmp); // listo los directorios //SetFileAttributesA(tmp, FILE_ATTRIBUTE_NORMAL); } } else { concatena = String(Dir)+ "\\" + String(fdt.name); //Form1->ListBox1->Items->Add(concatena); // listo los archivos //SetFileAttributesA(concatena.c_str(), FILE_ATTRIBUTE_NORMAL ); } } while (_findnext(hFile, &fdt) == 0); _findclose(hFile); }; Timer1->Enabled = false; // Deshabilito el Timer1 Contador = 0; } agradesco la ayuda posterior. |
#2
|
||||
|
||||
Hola y bienvenido a Club Delphi y como es costumbre, te invitamos a leer nuestra guía de estilo.
Te aconsejo que cuando incluyas código C++ utilices las etiquetas CODE como en el ejemplo siguiente: [code] void __fastcall TForm1::Button1Click(TObject *Sender) { ShowMessage("Click"); } [/code] De ese modo logras esta salida que es mucho mas legible: Código:
void __fastcall TForm1::Button1Click(TObject *Sender) { ShowMessage("Click"); } Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
|||
|
|||
mostrar label
Hola que tal, bueno a lo que me referia dando de ejemplo un código que está posteado en la página:
Código:
#include <io.h> #include <dir.h> void ListFiles(char *Dir, TListBox *LB) { struct _finddata_t fdt; long hFile; char tmp[MAX_PATH]; chdir(Dir); fdt.attrib = _A_SUBDIR; if( (hFile = _findfirst("*.*", &fdt) ) != -1) { do { if (fdt.attrib == _A_SUBDIR) { if (strcmp(fdt.name,".")!= 0 && strcmp(fdt.name,"..") != 0) { strcpy(tmp, Dir); strcat(tmp, "\\"); strcat(tmp, fdt.name); ListFiles(tmp, LB); } } else LB->Items->Add(String(fdt.name)); } while (_findnext(hFile, &fdt) == 0); _findclose(hFile); }; } Código:
void __fastcall TForm1::Button1Click(TObject *Sender) { ListFiles("C:\\UNA_CARPETA", ListBox1); } Así como el siguiente ejemplo: Código:
void __fastcall TForm1::Button1Click(TObject *Sender) { if(Contador <= 10) { Timer1->Enabled = true; // habilito el Timer1 Timer1->Interval = 500; Label1->Caption = Contador; // intervalo de tiempo Contador++; // aumento el contador en 1 } else { Timer1->Enabled = false; // Deshabilito el Timer1 Contador = 0; //Pongo el contador a 0 } } es para hacerlo más dinámico y bonito a los ojos del usuario. Saludos. |
#4
|
||||
|
||||
Hola andres_89.
Creo que ahora entendí la idea... Fijate si te sirve de este modo: Código:
#include <io.h> #include <dir.h> TStrings *FileNames; int Contador=0; void ListFiles(char *Dir, TStrings *TS) { struct _finddata_t fdt; long hFile; char tmp[MAX_PATH]; chdir(Dir); fdt.attrib = _A_SUBDIR; if ((hFile = _findfirst("*.*", &fdt) ) != -1) { do { if (fdt.attrib == _A_SUBDIR) { if (strcmp(fdt.name,".")!= 0 && strcmp(fdt.name,"..") != 0) { strcpy(tmp, Dir); strcat(tmp, "\\"); strcat(tmp, fdt.name); ListFiles(tmp, TS); } } else TS->Add(String(fdt.name)); } while (_findnext(hFile, &fdt) == 0); _findclose(hFile); }; } void __fastcall TForm1::FormCreate(TObject *Sender) { FileNames = new TStringList; ListFiles("C:\\UNA_CARPETA", FileNames); Timer1->Enabled = false; Timer1->Interval = 250; } void __fastcall TForm1::Button1Click(TObject *Sender) { Timer1->Enabled = true; } void __fastcall TForm1::Timer1Timer(TObject *Sender) { Timer1->Enabled = (Contador < FileNames->Count); if (Timer1->Enabled) { Label1->Caption = FileNames->Strings[Contador]; Contador++; } } void __fastcall TForm1::FormDestroy(TObject *Sender) { delete FileNames; }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
|||
|
|||
Funciono
Hola ecfisa,
tu codigo me funciono bien, solo un inconveniente: Código:
void __fastcall TForm1::FormDestroy(TObject *Sender) { delete FileNames; } Cita:
|
#6
|
||||
|
||||
El error que describes es porque no as asignado el evento OnDestroy.
La pega que puede tener leer primero todos los archivos para guardarlos en un TStringList es que si son muchos se notará un retardo considerable antes de empezar a aparecer en el Label con lo que el programa parecerá "colgado". Una solución puede ser la siguiente, aprovechando el código expuesto y con alguna modificación mínima mas descartar el uso del Timer para usar un retardo Sleep(500): Código:
void ListFiles(char *Dir, TLabel *L) { struct _finddata_t fdt; long hFile; char tmp[MAX_PATH]; chdir(Dir); fdt.attrib = _A_SUBDIR; if ((hFile = _findfirst("*.*", &fdt) ) != -1) { do { if (fdt.attrib == _A_SUBDIR) { if (strcmp(fdt.name,".")!= 0 && strcmp(fdt.name,"..") != 0) { strcpy(tmp, Dir); strcat(tmp, "\\"); strcat(tmp, fdt.name); ListFiles(tmp, L); } } else{ L->Caption = String(fdt.name); Application->ProcessMessages(); Sleep(500); } } while (_findnext(hFile, &fdt) == 0); _findclose(hFile); }; } Código:
void __fastcall TForm1::Button1Click(TObject *Sender) { ListFiles("C:\\UNA_CARPETA", Label1); } Por supuesto que podemos encontrar muchísimas variantes más, pero esta es simple, fácil de entender y evita el trastorno de tener que esperar la lectura completa de la carpeta y subcarpetas en cuestión. Saludos. |
#7
|
|||
|
|||
gracias
Gracias escafandra y ecfisa,
sus dos caminos para la solución, ampliaron mas mi nivel de programación, sinceramente, sin sus ayudas me hubiera demorado mucho en hacerlo, y en internet seguro buscando lo encontraria, pero no lo encontre por eso recurrí por acá, nuevamente gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Mostrar mas archivos de un sitio por FTP | ctronx | Varios | 3 | 03-03-2012 00:48:56 |
Mostrar en una label un item de un ChekListBox | cslbcn | OOP | 2 | 23-01-2009 18:07:38 |
Como mostrar Resultados de una consulta en componentes como los Edit,Label y DbGrids! | danny | Conexión con bases de datos | 2 | 08-05-2008 23:35:46 |
Mostrar archivos 3ds | Drake | OOP | 1 | 04-08-2006 20:40:13 |
Mostrar archivos y directorios en TListView | Drake | C++ Builder | 1 | 12-01-2006 15:48:54 |
|