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 20-08-2010
kenychy kenychy is offline
Miembro
 
Registrado: ago 2010
Posts: 45
Poder: 0
kenychy Va por buen camino
cuadro de dialogo

hello friends, necesito saber como crear , un cuadro de dialogo para seleccionar una carpeta , yo tengo entendido que se hace mediante la estrucctura BROWSEINFO y usando la funcion SHBrowseForFolder, ya se como hacerlo en delphi, pero necesito saber como hacerlo en c++.

Última edición por kenychy fecha: 20-08-2010 a las 16:19:21.
Responder Con Cita
  #2  
Antiguo 20-08-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
En C++ Builder:

Código:
#include <FileCtrl.hpp>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  String Carpeta;
  SelectDirectory("Seleccione carpeta", "", Carpeta);
}
Saludos.

Última edición por escafandra fecha: 20-08-2010 a las 20:35:07.
Responder Con Cita
  #3  
Antiguo 22-08-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si lo deseas sólo con la API (SHBrowseForFolder) y válido para compiladores diferentes al Builder, podemos hacer una implementación sencilla de dicha función:

Código:
BOOL SelectDirectory(HWND hWnd, const PCHAR Caption, PCHAR Directory)
{
  BROWSEINFO    BrowseInfo;
  LPITEMIDLIST  ItemIDList;
  LPMALLOC      ShellMalloc;

  ZeroMemory(&BrowseInfo, sizeof(BrowseInfo));
  if(SHGetMalloc(&ShellMalloc) == S_OK && ShellMalloc){
    BrowseInfo.hwndOwner = hWnd;
    BrowseInfo.pidlRoot = 0;
    BrowseInfo.pszDisplayName = Directory;
    BrowseInfo.lpszTitle = Caption;
    BrowseInfo.ulFlags = BIF_RETURNONLYFSDIRS;
    ItemIDList = SHBrowseForFolder(&BrowseInfo);
    if(ItemIDList){
      SHGetPathFromIDList(ItemIDList, Directory);
      ShellMalloc->Free(ItemIDList);
    }
  }
  return ItemIDList!=0;
}
Como ejemplo:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  // Asegúrate que la variable Carpeta tiene un tamaño igual o mayor que MAX_PATH
  char Carpeta[MAX_PATH]; 
  SelectDirectory(Handle, "Seleccione carpeta", Carpeta);
}
Responder Con Cita
  #4  
Antiguo 23-08-2010
kenychy kenychy is offline
Miembro
 
Registrado: ago 2010
Posts: 45
Poder: 0
kenychy Va por buen camino
gracias men
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Capturar los botones de los cuadro de dialogo GerTorresM Varios 2 29-12-2009 22:21:28
Controlar un cuadro de dialogo? c0lo Internet 0 12-08-2008 04:29:21
Quitar en rave cuadro dialogo impresora hob Impresión 2 09-08-2006 18:08:20
Cuadro de Dialogo Caro Varios 5 10-10-2005 19:20:34
ocultar cuadro de dialogo de Guardar como valentine Varios 1 03-06-2004 13:04:51


La franja horaria es GMT +2. Ahora son las 17:47:07.


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