Função: cGetFile
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], [ lSalvar], [ nOpcoes], [ lArvore], [ lKeepCase] ) --> cRet
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. | ||
lSalvar | Lógico | Indica se é um "save dialog" ou um "open dialog". | ||
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.). |
- (caracter)
- Retorna o nome do item. Caso nenhum item tenha sido selecionado, o retorna será uma string vazia.
- A partir da versão 7.00.170117A - 17.2.0.2 o nome do item irá retornar com a extensão selecionada, ou seja, quando o usuário digitar o nome de um arquivo (caso seja um "save dialog"), cRet já será com a extensão selecionada (cMascara).
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
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' , '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. /*.F. = Salva || .T. = 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() == 5) 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