Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-10-2005
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Como en un FileListBox cambiar el nombre de un archivo

Buenos dias amigos.
Necesito con un Popup menu sobre un FileListBox, poner una opcion para cambiar el nombre. El problema es que no encuentro la función que me permita hacerlo.
Si alguien sabe como hacerlo, le agradeceré su respuesta eternamente.
Gracias.
Responder Con Cita
  #2  
Antiguo 12-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Código Delphi [-]
procedure TForm1.PopupMenu1Popup(Sender: TObject);
 begin
   // Podrías usar "TAction's", de forma que en el evento
   // "OnUpdate" de la acción "remobrarArchivo" (es un nombre
   /// de ejemplo) hicieras que dicha acción estuviera habilitada
   // o no dependiendo de que exista algún item seleccionado.
   //
   // Si dicha acción está asignada al item "renombrar archivo"
   // del "TPopupMenu" conseguirás que al deshabilitarse aquella
   // se deshabilite también este, por eso lo dicho arriba.
   //
   itemRenombrarArchivo.Enabled := (FileListBox1.ItemIndex <> -1);
 end;
 
 procedure TForm1.itemRenombrarArchivoClick(Sender: TObject);
 var
   i: integer;
   dir: string;
   nombreAntiguo,
   nuevoNombre: string;
 begin
 
   i := FileListBox1.ItemIndex;
 
   if i = -1 then
     Exit; // Si haces lo de más arriba esto no tendrá sentido
 
   dir := IncludeTrailingPathDelimiter(FileListBox1.Directory);
 
   // Formamos el nombre "antiguo"
   nombreAntiguo := dir + FileListBox1.Items[i];
 
   // Solicitamos el nuevo nombre al usuario
   nuevoNombre := InputBox('Renombrar archivo', 'Nuevo nombre:', '');
 
   if nuevoNombre = '' then
     Exit; // No hay para qué seguir
 
   // Formamos el nuevo nombre del archivo
   nuevoNombre := dir + nuevoNombre + ExtractFileExt(nombreAntiguo);
 
   RenameFile(nombreAntiguo, nuevoNombre); // Renombramos el archivo
 
   FileListBox1.Update; // Actualizamos la lista de archivos
 
 end;
Nota: Revisa cuanto quieras el código. Ten en cuenta que se hizo en un rato y que pueden cambiarse acaso algunas cosas, optimizarse otras y adaptar buena parte a tus necesidades y/o preferencias, cuando no arreglar los posibles desperfectos que contenga el código. En todo caso creo que la idea de cómo implementar el asunto te la he dado: merezco las gracias eternas... una pena que eso sea algo imposible... o quizá no...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 12-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Luego releo el Hilo y me doy cuenta de que buscabas una respuesta para C++ Builder... no sé en qué estoy pensando, la verdad... ¿es preciso traducir el código o más o menos coges el hilo de lo que en el mismo se lleva a cabo?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 12-10-2005
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Gracias Dec, pero recuerda que es Builder C++ 6.0
te agradecería si lo "tradujeras" con tu experiencia en los dos lenguajes,
te confieso que aunque es casi lo mismo, para mí es un poco dificil, convertir a este lenguaje.
Gracias.
Responder Con Cita
  #5  
Antiguo 12-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por JuanErasmo
(...) te agradecería si lo "tradujeras" con tu experiencia en los dos lenguajes,
Asegúrote que en Delphi es poca mi experiencia y en C++ Builder mucha menos. Lo que ocurre es que hay traducciones de código y traducciones de código: la VCL ayuda no poco. El de más arriba no parece demasiado complicado de traducir. De ahí el siguiente intento:


Código:
//---------------------------------------------------------------------------
 
 void __fastcall TForm1::PopupMenu1Popup(TObject *Sender)
 {
   itemRenombrarArchivo->Enabled = (FileListBox1->ItemIndex != -1);
 }
 
 //---------------------------------------------------------------------------
 
 void __fastcall TForm1::itemRenombrarArchivoClick(TObject *Sender)
 {
   int i = -1;
 
   AnsiString dir, nombreAntiguo, nuevoNombre;
 
   i = FileListBox1->ItemIndex;
 
   if(i == -1) return;
 
   dir = IncludeTrailingPathDelimiter(FileListBox1->Directory);
 
   nombreAntiguo = dir + FileListBox1->Items->Strings[i];
 
   nuevoNombre = InputBox("Renombrar archivo", "Nuevo nombre:", "");
 
   if(nuevoNombre == "") return;
 
   nuevoNombre = dir + nuevoNombre + ExtractFileExt(nombreAntiguo);
 
   RenameFile(nombreAntiguo, nuevoNombre);
 
   FileListBox1->Update();
 }
 //---------------------------------------------------------------------------
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:12:37.


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