Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mostrar directorios de Mi Pc (https://www.clubdelphi.com/foros/showthread.php?t=13186)

soul6301 10-08-2004 00:34:55

Mostrar directorios de Mi Pc
 
Hola:

¿Qué componente o unidad me permite mostrar la ventana donde aparecen los directorios de Mi PC?

[img]c:mis documentosdibujo.bmp[/img]

Gracias.

Neftali [Germán.Estévez] 10-08-2004 09:58:05

Cita:

Empezado por soul6301
¿Qué componente o unidad me permite mostrar la ventana donde aparecen los directorios de Mi PC?

Puedes utilizar los componentes de la paleta Samples llamados ShellTreeView, ShellComboBox y ShellListView; Son sencillos, aunque en la versión 6 de delphiu (desconozco en las demás) tienen algún pequeño Bug. Échales un vistazo, son bastante fáciles de configurar.

Otra opción por código es utilizar una función existente en la unit FileCtrl (que deberás añadir al uses)

Código Delphi [-]
var
  Dir : String;
begin
  SelectDirectory(Dir,[],0);
  ShowMessage(Dir);

y otra opción es utilizar directamnte la API de windows SHBrowseForFolder

Código Delphi [-]
var
  TitleName : string;
  lpItemID : PItemIDList;
  BrowseInfo : TBrowseInfo;
  DisplayName : array[0..MAX_PATH] of char;
  TempPath : array[0..MAX_PATH] of char;
begin
  // Inicializar
  FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
  BrowseInfo.hwndOwner := Form1.Handle;
  BrowseInfo.pszDisplayName := @DisplayName;
  // Título para tu ventana de seleccion
  TitleName := 'Please specify a directory';
  BrowseInfo.lpszTitle := PChar(TitleName);
  // Diferentes opciones (mira la API), hay diferentes valores:
  // BIF_BROWSEFORCOMPUTER (SOLO ORDENADORES),
  // BIF_BROWSEFORPRINTER (Sólo impresoras),
  // BIF_DONTGOBELOWDOMAIN (no incluidos los de red),
  // BIF_RETURNFSANCESTORS (el botón de OK se desactiva si la selección dno es correcta),
  // BIF_RETURNONLYFSDIRS (sólo enseña directorios),
  // BIF_STATUSTEXT
  BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
  lpItemID := SHBrowseForFolder(BrowseInfo);
  // Se ha selecconado algo?
  if lpItemId <> nil then begin
    SHGetPathFromIDList(lpItemID, TempPath);
    ShowMessage(TempPath);
    GlobalFreePtr(lpItemID);
  end;

en éste último caso deberás añadir la unit ShellAPI al uses.

soul6301 14-08-2004 00:58:08

Gracias. Voy a intentar con las opciones que me das. Gracias otra vez.


La franja horaria es GMT +2. Ahora son las 00:13:24.

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