Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-10-2005
Iuconlas Iuconlas is offline
Miembro
 
Registrado: sep 2005
Posts: 25
Poder: 0
Iuconlas Va por buen camino
Opendialog de carpetas

Hola, me gustaría saber la forma para que mediante el Opendialog pueda seleccionar carpetas y no solo ficheros. Para que pueda seleccionar la carpeta y cuando de a "Abrir" se cierre el opendialog. Porque unicamente se cierra si seleccionamos un archivo. Se que seleccionado el archivo puedo extraer la ruta y la carpeta, pero no necesito que sea al seleccionar el archivo sino la carpeta. Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 03-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 [-]
uses
   ShlObj;
 
 // Mostrar el diálogo estándar de Windows que
 // permite elegir un determinado directorio.
 //
 // Basado en ciertas funciones recogidas de las
 // "Delphi Works 1.2" (http://delphiworks.sf.net).
 //
 function DlgElegirDirectorio(subtitulo: string;
   nuevoEstilo: boolean) : string;
 var
   BI: TBrowseInfo;
   IL: PItemIDList;
 begin
   Result := EmptyStr;
   with BI do begin
     lpfn:= nil;
     lParam:= 0;
     iImage:= 0;
     pidlRoot:= nil;
     hwndOwner:= GetActiveWindow;
     lpszTitle:= PChar(subtitulo);
     GetMem(pszDisplayName, MAX_PATH);
     ulFlags := BIF_RETURNONLYFSDIRS;
     if nuevoEstilo then
       ulFlags := ulFlags or BIF_NEWDIALOGSTYLE;
   end;
   IL := SHBrowseForFolder(BI);
   if SHGetPathFromIDList(IL, BI.pszDisplayName) then
     Result := IncludeTrailingPathDelimiter(
       StrPas(BI.pszDisplayName));
   FreeMem(BI.pszDisplayName);
   GlobalFreePtr(IL);
 end;
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-10-2005 a las 19:04:21. Razón: Corrección del código fuente.
Responder Con Cita
  #3  
Antiguo 03-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No recuerdo la sintaxis exacta, pero en la unidad FileCtrls viene una función SelectDirectory, o algo parecido, que ya implementa lo que comenta dec.

// Saludos
Responder Con Cita
  #4  
Antiguo 03-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,

Así es la verdad roman. La función se llama como dices y se encuentra en la unidad que mencionas... ¡joroba qué memoria! ¡para mí la quisiera!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 04-10-2005
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
La funcion Selectdirectory tiene un inconveniente, no es possible personalizar la position del dialogo y este aparece abajo a la derecha siempre. Para personalizarlo hay q usar la complicada API shBrowseForFolder. Aqui hay un detallado ejemplo de su uso. Pero la JVCL contiene un componente potente q la encapsula llamado JvBrowseForFolderDialog (tb contiene JvSelectDirectory)..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #6  
Antiguo 19-02-2008
xio xio is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
xio Va por buen camino
Yo utilizo la funcion SelectDirectory pero no permite crear carpetas como podira conseguir esto??
Responder Con Cita
  #7  
Antiguo 23-09-2014
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec Ver Mensaje
Hola,

Código Delphi [-]
uses
   ShlObj;
 
 // Mostrar el diálogo estándar de Windows que
 // permite elegir un determinado directorio.
 //
 // Basado en ciertas funciones recogidas de las
 // "Delphi Works 1.2" (http://delphiworks.sf.net).
 //
 function DlgElegirDirectorio(subtitulo: string;
   nuevoEstilo: boolean) : string;
 var
   BI: TBrowseInfo;
   IL: PItemIDList;
 begin
   Result := EmptyStr;
   with BI do begin
     lpfn:= nil;
     lParam:= 0;
     iImage:= 0;
     pidlRoot:= nil;
     hwndOwner:= GetActiveWindow;
     lpszTitle:= PChar(subtitulo);
     GetMem(pszDisplayName, MAX_PATH);
     ulFlags := BIF_RETURNONLYFSDIRS;
     if nuevoEstilo then
       ulFlags := ulFlags or BIF_NEWDIALOGSTYLE;
   end;
   IL := SHBrowseForFolder(BI);
   if SHGetPathFromIDList(IL, BI.pszDisplayName) then
     Result := IncludeTrailingPathDelimiter(
       StrPas(BI.pszDisplayName));
   FreeMem(BI.pszDisplayName);
   GlobalFreePtr(IL);
 end;
Gracias dec

// Saludos
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 21:32:53.


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