A partir das versões WebApp 10.1.1 e 9.2.1, foram efetuadas novas implementações. Veja Aprimoramento WebApp 10.1.1 e 9.2.1
Apresenta uma janela com os diretórios disponíveis, na estação e no servidor, e retorna o nome do item.
cGetFile ( [ cMascara], [ cTitulo], [ nMascpadrao], [ cDirinicial], [ lAbrir], [ nOpcoes], [ lArvore], [ lKeepCase] ) --> cRet
Parâmetros/Elementos
| Nome | Tipo | Descrição | Obrigatório | Referência |
| cMascara | Caracter | Indica o nome do arquivo ou máscara. | ||
| cTitulo | Caracter | Indica o título da janela. Caso o parâmetro não seja especificado, o título padrão será apresentado. | ||
| nMascpadrao | Numérico | Indica o número da máscara. | ||
| cDirinicial | Caracter | Indica o diretório inicial. | ||
| lAbrir | Lógico | Indica se é um "open dialog" (.T.) ou um "save dialog" (.F.). | ||
| nOpcoes | Numérico | Indica a opção de funcionamento. Para mais informações das funcionalidades disponíveis, consulte a área Observações. | ||
| lArvore | Lógico | Indica se, verdadeiro (.T.), apresenta o árvore do servidor; caso contrário, falso (.F.). | ||
| lKeepCase | Lógico | Indica se, verdadeiro (.T.), mantém o case original; caso contrário, falso (.F.). |
Retorno
cRet
Quando o parâmetro lArvore for verdadeiro (.T.) somente as pastas do rootpath do servidor serão acessíveis.
A função cGetFile exige que o programa AdvPL que a execute seja um SmartClient, não permitindo, portanto, que seja chamada em JOB. A partir da build 7.00.131227A com data de geração superior a 06/04/2016, caso a função seja chamada em JOB, o programa será finalizado com ocorrência de erro fatal "Function cGetFile() doesn't available in JOB.". Nas builds anteriores, se a função fosse chamada em JOB, era apresentada uma mensagem de erro de comunicação com o SmartClient.
No parâmetro <nOpções>, é possível determinar as seguintes funcionalidades:
| Comandos | Descrição |
|---|---|
| GETF_MULTISELECT (2) | Permite selecionar mais de 1 arquivo no padrão "arquivo1 | arquivo2 | arquivo3" Observação: Não compativel com o comando "GETF_RETDIRECTORY" e com a edição do "Nome do Arquivo". |
| GETF_NOCHANGEDIR (4) | Não permite mudar o diretório inicial. |
| GETF_LOCALFLOPPY (8) | Apresenta a unidade do disquete da máquina local. |
| GETF_LOCALHARD (16) | Apresenta a unidade do disco local. |
| GETF_NETWORKDRIVE (32) | Apresenta as unidades da rede (mapeamento). Ao executar o SmartClient com um usuário diferente do usuário logado na sessão no Windows os drives de Rede não serão apresentados. |
| GETF_SHAREWARE (64) | Não implementado. |
| GETF_RETDIRECTORY (128) | Retorna/apresenta um diretório. |
| GETF_HIDDENDIR (256)* | Mostra arquivos e pastas ocultas |
| GETF_SYSDIR (512)* | Mostra arquivos e pastas do sistema |
Se o cInitialDir apontar para um diretório oculto ou de sistema, lembre-se de habilitar as opções correspondentes.
* Os dois parâmetros só estão disponível em builds superiores a 7.00.131227A.
cMascara
Informa descrição da máscara e máscara no formato "descrição|máscara".
Exemplos:
"Arquivos de texto|*.txt"
"*.txt | *.txt"
É possível especificar vários pares de descrição|máscara.
Exemplo:
"Arquivos de texto|*.txt|Bitmaps|*.bmp"
Se não for informada uma máscara, o campo poderá ser editado pelo usuário a fim de especificar o filtro/máscara que desejar
Disponível apenas em builds superiores a 7.00.131227A.
Compartilhamentos do Remote Desktop
No caso da função "cGetFile" precisar apresentar diretórios compartilhados via "Remote Desktop" o usuário deve mapear o endereço de rede \\tsclient\<nome da pasta compartilhada> e habilitar a opção "GETF_NETWORKDRIVE ".
#INCLUDE "TOTVS.CH" User Function GetFile1() Local targetDir targetDir:= cGetFile( '*.txt|*.txt' , 'Textos (TXT)', 1, 'C:\', .F., nOR( GETF_LOCALHARD, GETF_LOCALFLOPPY, GETF_RETDIRECTORY ),.T., .T. ) Alert(targetDir) Return |
#INCLUDE "TOTVS.CH"
User Function GetFile2()
Local cMascara := "Todos os arquivos|."
Local cTitulo := "Escolha o arquivo"
Local nMascpad := 0
Local cDirini := "\"
Local lSalvar := .F. /*.T. = Salva || .F. = Abre*/
Local nOpcoes := GETF_LOCALHARD
Local lArvore := .F. /*.T. = apresenta o árvore do servidor || .F. = não apresenta*/
Local resourceName:= "totvs.png"
Local path := "\images\"
Local fileName:= path + resourceName
Local targetDir
Local sucess
If (!Resource2File(resourceName, fileName))
Alert("Erro ao copiar o arquivo do repositorio!")
EndIf
If (GetRemoteType() == REMOTE_HTML)
sucess:= (CpyS2TW(fileName, .T.) == 0)
Else
targetDir := cGetFile( cMascara, cTitulo, nMascpad, cDirIni, lSalvar, nOpcoes, lArvore)
sucess:= CpyS2T(fileName, targetDir)
Endif
If (sucess)
If (GetRemoteType() == REMOTE_HTML)
Alert("Arquivo ''" + resourceName + "' enviado para download! " + CRLF + "Verifique se o browser nao bloqueou o popup!")
Else
Alert("Arquivo ''" + resourceName + "' copiado com sucesso para '" + targetDir + "'!")
EndIf
Else
Alert("Erro ao copiar o arquivo ''" + resourceName + "'!")
Endif
Return |
Preview
Exemplo da função cGetFile()
Abrangência
Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server
No WebApp, a partir das versões 10.1.1 e 9.2.1, foram efetuados aprimoramentos:

Implementado navegação por teclado na lista de arquivos.
| Tecla | Ação |
|---|---|
| Home | Primeira linha da lista de arquivo . |
| End | Última linha da lista de arquivo |
| Up | Uma linha acima . |
| Down | Uma linha abaixo. |
| PageDown | Uma página abaixo. |
| PageUp | Uma página acima |
| Shift+navegação | Seleciona linhas conforme navegação, se multi-seleção ativa. |
| Letra ou número | Navegação pelo primeiro caractere do nome de arquivo. |
import.css=/download/attachments/327912/newLayout.css |