Page tree
Skip to end of metadata
Go to start of metadata

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


NomeTipoDescriçãoObrigatórioReferência
cMascaraCaracterIndica o nome do arquivo ou máscara.

cTituloCaracterIndica o título da janela. Caso o parâmetro não seja especificado, o título padrão será apresentado.

nMascpadraoNuméricoIndica o número da máscara.

cDirinicialCaracterIndica o diretório inicial.

lSalvarLógicoIndica se é um "save dialog" ou um "open dialog".

nOpcoesNuméricoIndica a opção de funcionamento. Para mais informações das funcionalidades disponíveis, consulte a área Observações.

lArvoreLógicoIndica se, verdadeiro (.T.), apresenta o árvore do servidor; caso contrário, falso (.F.).

lKeepCaseLógicoIndica se, verdadeiro (.T.), mantém o case original; caso contrário, falso (.F.).


cRet
    (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:

ComandosDescriçã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 ".


Exemplo
#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
Exemplo
#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() == 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



Exemplo da função cGetFile()
Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server


  • No labels