Página 1 de 1

Selecionar pasta na REDE

Enviado: 28 Ago 2017 14:24
por Cisino Junior
Boa tarde!
Quando usamos o getFile() abre a janela do windows para selecionarmos um arquivo, e o mesmo permite que selecionemos arquivos em outros computadores na conectados na mesma rede.

É possível habilitar isso usando o getFolder()? Por padrão, essa função não mostra os computadores na rede como o getFile() faz. Já tentei setar alguns parâmetros como na documentação, mas até agora nada. A mesma é escassa e confusa, não deixa claro como setar os parâmetros.

Tentei setar o parâmetro "nCSIDL_FolderType", mas sem sucesso.

Documentação da função:

Código: Selecionar todos

      GetFolder ( [<cTitle>] , [<cInitPath>], [<cInvalidDataMsg>], [<lNewFolderButton>] , [<lIncludeFiles>] , [<nCSIDL_FolderType>] , [<nBIF_Flags>] )--> cSelectedFolderName
 

-    nCSIDL_FolderType (constants defined in i_misc.ch): CSIDL (Constant Special Item ID List) values provide a unique system-independent way to identify special folders used frequently by applications, but which may not have the same name or location on any given system (for default CSIDL_DRIVES).
 
-    nBIF_Flags (constants defined in i_misc.ch):
o    BIF_EDITBOX(*): Include an edit control in the browse dialog box that allows the user to type the name of an item.
o    BIF_VALIDATE(*): If the user types an invalid name into the edit box, the browse dialog box calls the application's BrowseCallbackProc with the BFFM_VALIDATEFAILED message ( ignored if BIF_EDITBOX is not specified)
o    BIF_NEWDIALOGSTYLE(*): Use the new user interface. Setting this flag provides the user with a larger dialog box that can be resized. The dialog box has several new capabilities, including: drag-and-drop capability within the dialog box,reordering, shortcut menus, new folders, delete, and other shortcut menu commands.
o    BIF_USENEWUI(*): equivalent to BIF_EDITBOX + BIF_NEWDIALOGSTYLE.
(*) set for default.
 
o    BIF_RETURNONLYFSDIRS: Only return file system directories.
o    BIF_DONTGOBELOWDOMAIN: Do not include network folders below the domain level in the dialog box's tree view control.
o    BIF_STATUSTEXT: Include a status area in the dialog box ( not supported when BIF_NEWDIALOGSTYLE )
o    BIF_RETURNFSANCESTORS: Only return file system ancestors. An ancestor is a subfolder that is beneath the root folder in the namespace hierarchy.
o    BIF_BROWSEINCLUDEURLS: The browse dialog box can display URLs. The BIF_USENEWUI and BIF_BROWSEINCLUDEFILES flags must also be set.
o    BIF_UAHINT: When combined with BIF_NEWDIALOGSTYLE, adds a usage hint to the dialog box, in place of the edit box (BIF_EDITBOX overrides this flag)
o    BIF_NONEWFOLDERBUTTON: Do not include the New Folder button in the browse dialog box.
o    BIF_NOTRANSLATETARGETS: When the selected item is a shortcut, return the PIDL of the shortcut itself rather than its target.
o    BIF_BROWSEFORCOMPUTER: Only return computers
o    BIF_BROWSEFORPRINTER: Only allow the selection of printers. In Windows XP and later systems, the best practice is to use a Windows XP-style dialog, setting the root of the dialog to the Printers and Faxes folder (CSIDL_PRINTERS).
o    BIF_BROWSEINCLUDEFILES: The browse dialog box displays files as well as folders.
o    BIF_SHAREABLE: The browse dialog box can display sharable resources on remote systems. The BIF_NEWDIALOGSTYLE flag must also be set.
o    BIF_BROWSEFILEJUNCTIONS: Windows 7 and later. Allow folder junctions such as a library or a compressed file with a .zip file name extension to be browsed.
Desde já agradeço a quem se dispor a ajudar.

Atenciosamente,
Cisino Junior.

Selecionar pasta na REDE

Enviado: 28 Ago 2017 15:31
por Jairo Maia
Olá Cisino Junior,

Já tentou com CSIDL_NETWORK?

Pela documentação diz que você tem que escolher uma única forma de exibição. Se informar CSIDL_DRIVES apresenta a máquina local, se informar CSIDL_NETWORK apresenta a rede.

Também diz que os valores para CSIDL são os valores descritos no arquivo i_misc.ch. Esse arquivo está na pasta x:\MiniGUI\Include.

Selecionar pasta na REDE

Enviado: 28 Ago 2017 16:29
por Cisino Junior
Jairo Maia escreveu: Já tentou com CSIDL_NETWORK?
Olá Jairo, obrigado por responder.

Eu já tentei, mas não entendi como devo declarar esse valor. Você poderia postar um exemplo, por favor?

Eu tentei declarando diretamente na função " getFolder("title", nil, nil, nil, nil, CSIDL_NETWORK, nil). Acredito que esta não é a forma correta, pois não alterou nada. Como devo declarar esse valor?

Atenciosamente,
Cisino Junior.

Selecionar pasta na REDE

Enviado: 28 Ago 2017 17:29
por Jairo Maia
Olá Cisino,

É da forma que você fez mesmo. Fiz uma série de testes aqui com várias formas, mas aparece somente as unidades locais. As unidades de rede não aparecem mesmo. Vamos aguardar se algum colega mais experiente em MiniGUI possa ter uma dica.

Selecionar pasta na REDE

Enviado: 28 Ago 2017 18:09
por Cisino Junior
Jairo Maia escreveu:Olá Cisino,

É da forma que você fez mesmo. Fiz uma série de testes aqui com várias formas, mas aparece somente as unidades locais. As unidades de rede não aparecem mesmo. Vamos aguardar se algum colega mais experiente em MiniGUI possa ter uma dica.
Tudo bem Jairo, muito obrigado por tentar ajudar!

Amanhã farei mais testes e espero que outro colega do fórum possa dar uma luz.

Atenciosamente,
Cisino Junior.

Selecionar pasta na REDE

Enviado: 29 Ago 2017 08:13
por Jairo Maia
Olá Cisino,

E se ao invés de GetFolder(), você usa-se BrowseForFolder() com o paramêtro zero. Será que não resolve?:

Código: Selecionar todos

BrowseForFolder( 0 )
Sintaxe:

Código: Selecionar todos

BrowseForFolder( [ nMode ], [ BIF Flag ], [ Title ], [ InitPath ] ) -> Folder Name
Você conhece esse link?: Manual da MiniGUI

Selecionar pasta na REDE

Enviado: 29 Ago 2017 14:19
por Cisino Junior
Boa tarde Jairo!
Hoje consegui implementar o que queria! Após ler com mais calma a documentação percebi que eu tinha que importar/incluir o arquivo i_misc.ch que contém as constantes para o parâmetro nCSIDL_FolderType da função getFolder().

Ficou assim:

Código: Selecionar todos

/*
** Incluir no início do prg -> #include "i_misc.ch"
*/
 destino:=GetFolder("Selecione um destino", nil, nil, nil, nil, {CSIDL_DESKTOPDIRECTORY, CSIDL_NETWORK}, nil)
Muito obrigado por sua ajuda!

Atenciosamente,
Cisino Junior.

Selecionar pasta na REDE

Enviado: 29 Ago 2017 16:22
por Jairo Maia
Olá Cisino,

Legal... Mas acbei de fazer o teste e a rede não apareceu. Só aparece se usar: BrowseForFolder( 0 )

Selecionar pasta na REDE

Enviado: 29 Ago 2017 16:40
por Cisino Junior
Jairo Maia escreveu: Legal... Mas acbei de fazer o teste e a rede não apareceu. Só aparece se usar: BrowseForFolder( 0 )
Olá Jairo, você utiliza o HMG EXTENDED? Aqui utilizamos o HMG 3.4.3 do Roberto Lopez, que possui uma IDE.

Segue link: http://hmgforum.com/app.php/page/downlo ... f975540e07

Selecionar pasta na REDE

Enviado: 30 Ago 2017 02:07
por Jairo Maia
Cisino Junior escreveu:Olá Jairo, você utiliza o HMG EXTENDED?
Isso mesmo. Na verdade estou com calma migrando inicialmente meu sistema emissor de CF-e-SAT para MiniGUI e usando como laboratório para aprender MiniGUI. Escolhi esse sistema por ser um que em termos de alterações ficará estável por um bom tempo já que ele já está adaptado inclusive para o leiaute 0.08 que ainda entra em vigor em 2018.

Conheço a HMG do Roberto Lopez, mas não me adapto com IDE´s.

Valeu Cisino...

Selecionar pasta na REDE

Enviado: 30 Ago 2017 13:09
por Cisino Junior
Entendo Jairo, por isso o getFolder não funcionou então. Aqui já usamos a HMG do Roberto Lopez e está bem legal. Sobre a IDE, eu já estou acostumado pois também desenvolvo em Java, que diga-se de passagem possui IDEs maravilhosas, como IntelliJ e Eclipse (L) hahaha

Boa migração e bom trabalho! Obrigado pela ajuda!

Abraço!

Cisino Junior.

Selecionar pasta na REDE

Enviado: 30 Ago 2017 13:18
por HASA
:))
Jairo use GetFile ( acFilter , cTitle, cDefaultPath , lMultiSelect , lNoChangeDir , nIndex )--> SelectedFileName(s) veja o demo em \Samples\Basic\GetFile
:)Pos
HASA