Page 1 of 1
Seleccionar Carpeta
Posted: Fri Jan 26, 2018 2:09 pm
by Xevi
Estoy tratando de utilizar el diálogo para seleccionar Carpeta
cGetFolder( "Seleccionar Carpeta" )
o
cGetDir( "Seleccionar Carpeta" )
Bien, funciona pero no "despliega" la red
No puedo acceder a las carpetas/equipos de red.
¿?¿?
Re: Seleccionar Carpeta
Posted: Fri Jan 26, 2018 2:19 pm
by Xevi
El Sample de FW...
he comentado CurDrive() //la función CurDrive() no es de hb, creo que era de xhb.
Code: Select all
// New cGetDir() function demo
function Main()
local cDirName := cGetDir( "Select a directory",;
/*CurDrive() + ":\" +*/ GetCurDir() )
MsgInfo( cDirName )
MsgInfo( LFN2SFN( cDirName ) )
return nil
No me funciona... no se despliega la red.
Re: Seleccionar Carpeta
Posted: Fri Jan 26, 2018 2:24 pm
by Xevi
Probado en otros equipos... y persiste el error.
No despliega la red!!!
Re: Seleccionar Carpeta
Posted: Sun Jan 28, 2018 11:14 pm
by Xevi
Bien, no he recibido respuesta por este medio, si por privado,..
Decir que lo he probado con cGetDir(), cGetDirA(), cGetFolder()... ninguna me despliega la red
pero no llegado a resolver el problema, comento como lo subsano de momento.
Code: Select all
Local oShell := CreateObject("Shell.Application")
Local oFolder := oShell:BrowseForFolder( oWnd:hWnd, "Folder / Carpeta", , )
Local oSelf
If !Empty(oFolder)
oSelf := oFolder:Self
? oSelf:Path
EndIf
Re: Seleccionar Carpeta
Posted: Mon Jan 29, 2018 8:00 am
by Antonio Linares
Xevi,
Puedes mostrar una imagen de cómo se ve la caja de diálogo de Windows cuando despliega la red ? gracias
Re: Seleccionar Carpeta
Posted: Mon Jan 29, 2018 9:31 am
by Xevi
Antonio,
utilizando
CreateObject("Shell.Application")
oShell:BrowseForFolder( oWnd:hWnd, "Folder / Carpeta", , )
![Image](https://s10.postimg.org/b4ph6sqfd/Captura.jpg)
Re: Seleccionar Carpeta
Posted: Mon Jan 29, 2018 5:42 pm
by Antonio Linares
Xevi,
gracias
La función del API de Windows utilizada es GetOpenFileName()
https://msdn.microsoft.com/es-es/librar ... s.85).aspx
los distintos valores que esa función usa estan especificados aqui:
https://msdn.microsoft.com/es-es/librar ... s.85).aspx
Hay un valor (OFN_NONETWORKBUTTON) que oculta el botón de la red. No veo que lo estemos usando en el código en C de FWH.
te aparece a ti ese botón ? gracias
Re: Seleccionar Carpeta
Posted: Mon Jan 29, 2018 6:06 pm
by karinha
Hola, mira se ayuda:
Code: Select all
#include 'fivewin.ch'
#define OFN_PATHMUSTEXIST 0x00000800
#define OFN_NOCHANGEDIR 0x00000008
#define OFN_ALLOWMULTISELECT 0x00000200
#define OFN_EXPLORER 0x00080000 // new look commdlg
#define OFN_LONGNAMES 0x00200000 // force long names for 3.x modules
#define OFN_ENABLESIZING 0x00800000
#define OFN_HIDEREADONLY 0x00000004 // Oculta a caixa de seleção Somente leitura.
#define OFN_NONETWORKBUTTON 0x20000 // Desabilita o botão [ REDE ] da Dlg
function aGetFiles( cMask, cTitle, nDefaultMask, cInitDir )
local cSelect, nAt, aFiles := {}
/*
local nFlags := nOr( OFN_PATHMUSTEXIST , OFN_NOCHANGEDIR , ;
OFN_ALLOWMULTISELECT , OFN_EXPLORER , ;
OFN_LONGNAMES, OFN_ALLOWMULTISELECT )
*/
local nFlags := nOr( OFN_PATHMUSTEXIST, OFN_NOCHANGEDIR, OFN_ALLOWMULTISELECT, ;
OFN_LONGNAMES, OFN_NONETWORKBUTTON )
SKINBUTTONS()
//cSelect := cGetFile( cMask, cTitle, nDefaultMask, cInitDir, .f., .t., nFlags )
/*
cSelect := cGetFile( "Bitmap (*.bmp)| *.bmp|"+ ;
"DIB (*.dib)| *.dib|" + ;
"PCX (*.pcx)| *.pcx|" + ;
"JPEG (*.jpg)| *.jpg|" + ;
"GIF (*.gif)| *.gif|" + ;
"TARGA (*.tga)| *.tga|" + ;
"RLE (*.rle)| *.rle|" + ;
"Todos os Arquivos (*.*)|*.*|" ;
,"Selecione a Foto Desejada",1,,.F.,, nFlags )
*/
cSelect := cGetDir( cMask, cTitle, nDefaultMask, cInitDir, .f., .t., nFlags )
cSelect := Left( cSelect, At( Chr( 0 ) + Chr( 0 ), cSelect ) - 1 )
if ! Empty( cSelect )
cSelect := StrTran( cSelect, Chr( 0 ), "," )
aFiles := hb_aTokens( cSelect, "," )
if Len( aFiles ) > 1
for nAt := 2 TO Len( aFiles )
aFiles[ nAt ] := aFiles[ 1 ] + "\" + aFiles[ nAt ]
next nAt
ADel( aFiles, 1 )
ASize( aFiles, Len( aFiles ) - 1 )
endif
endif
return aFiles
Saludos.
Re: Seleccionar Carpeta
Posted: Mon Jan 29, 2018 10:01 pm
by Xevi
Antonio,
Utilizando la función cGetDir(), cGetDirA(), cGetFolder() en el tree que despliega se ve igualmente el icono red (xarxa) como en la imagen, salvo que cuando le clico a desplegar la red se deshabilitan los botones "crear carpeta" y "Aceptar" y queda el cursor pensando (30seg.aprox)... pero no despliega los equipos de red. Sin embargo, como puedes ver en la imagen, utilizando
CreateObject("Shell.Application")
oShell:BrowseForFolder( oWnd:hWnd, "Folder / Carpeta", , )
Si me despliega y muestra perfectamente los equipos de la red y puedo interactuar entre ellos.
Gracias por tu tiempo.