Nesse vídeo demonstraremos em como fazer a navegação em pastas (para escolha de arquivos) com as funções cGetFile e TFileDialog.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe077 Exemplo de telas para selecionar arquivos @type Function @author Atilio @since 08/12/2022 @see https://tdn.totvs.com/display/tec/cGetFile e https://tdn.totvs.com/display/tec/tFileDialog @obs Função cGetFile Parâmetros + cMascara , Caractere , Máscara de arquivos + cTitulo , Caractere , Título da janela + nMascPadrao , Numérico , Indica o número da máscara + cDirInicial , Caractere , Pasta inicial + lSalvar , Lógico , Se .T. será usado um botão Salvar se não será usado o botão Abrir + nOpcoes , Numérico , Opções da janela ( GETF_MULTISELECT ; GETF_NOCHANGEDIR ; GETF_LOCALFLOPPY ; GETF_LOCALHARD ; GETF_NETWORKDRIVE ; GETF_SHAREWARE ; GETF_RETDIRECTORY ; GETF_HIDDENDIR ; GETF_SYSDIR ; ) + lArvore , Lógico , Se .T. irá exibir pasta da Protheus Data senão só da máquina local + lKeepCase , Lógico , Se .T. mantém o nome original senão retorna o nome tudo minúsculo Retorno + cRet , Caractere , Retorna o nome do arquivo selecionado Função TFileDialog Parâmetros + cMascara , Caractere , Máscara de arquivos + cTitulo , Caractere , Título da janela + nParam3 , Numérico , Compatibilidade (não utilizado) + cDirInicial , Caractere , Pasta inicial + lSalvar , Lógico , Se .T. será usado um botão Salvar se não será usado o botão Abrir + nOpcoes , Numérico , Opções da janela (se não passar nada será apenas um arquivo; se usar GETF_MULTISELECT será múltiplos arquivos; se usar GETF_RETDIRECTORY será usado pastas) Retorno + cRet , Caractere , Retorna o nome do(s) arquivo(s) selecionado(s) ou da pasta selecionada conforme nOpcoes **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe077() Local aArea := FWGetArea() Local cDirIni := GetTempPath() Local cTipArq := "" Local cTitulo := "" Local lSalvar := .F. Local cArqSel := "" Local cPasta := "" //cGetFile - Seleção de arquivo txt / xml podendo alterar pasta (local e servidor) cArqSel := cGetFile( 'Arquivo TXT|*.txt| Arquivo XML|*.xml',; //[ cMascara], 'Selecao de Arquivos',; //[ cTitulo], 0,; //[ nMascpadrao], 'C:\TOTVS\',; //[ cDirinicial], .F.,; //[ lSalvar], GETF_LOCALHARD + GETF_NETWORKDRIVE,; //[ nOpcoes], .T.) //[ lArvore] If ! Empty(cArqSel) FWAlertInfo("O arquivo escolhido é "+cArqSel, "Teste 1 - cGetFile") EndIf //cGetFile - Seleção de arquivo txt sem opção de alterar pasta cArqSel := cGetFile( 'Selecione um Arquivo (*.*)|*.*',; //[ cMascara], 'Selecao de Arquivos',; //[ cTitulo], 0,; //[ nMascpadrao], 'C:\TOTVS\',; //[ cDirinicial], .F.,; //[ lSalvar], GETF_LOCALHARD + GETF_NETWORKDRIVE + GETF_NOCHANGEDIR,; //[ nOpcoes], .F.) //[ lArvore] If ! Empty(cArqSel) FWAlertInfo("Arquivos escolhido: "+cArqSel, "Teste 2 - cGetFile") EndIf //TFileDialog - Selecionando apenas 1 arquivo cTipArq := "Todas extensões (*.*) | Arquivos texto (*.txt) | Arquivos com separações (*.csv)" cTitulo := "Seleção de Arquivos para Processamento" cArqSel := tFileDialog(; cTipArq,; // Filtragem de tipos de arquivos que serão selecionados cTitulo,; // Título da Janela para seleção dos arquivos ,; // Compatibilidade cDirIni,; // Diretório inicial da busca de arquivos lSalvar,; // Se for .T., será uma Save Dialog, senão será Open Dialog ; // Se não passar parâmetro, irá pegar apenas 1 arquivo; Se for informado GETF_MULTISELECT será possível pegar mais de 1 arquivo; Se for informado GETF_RETDIRECTORY será possível selecionar o diretório ) If ! Empty(cArqSel) FWAlertInfo("O arquivo selecionado foi: " + cArqSel, "Teste 1 - TFileDialog") EndIf //TFileDialog - Selecionando mais de 1 arquivo cTipArq := "Todas extensões (*.*) | Arquivos imagem (*.png) | Arquivos imagem (*.jpg)" cTitulo := "Seleção de Múltiplos Arquivos para Processamento" cArqSel := tFileDialog(; cTipArq,; // Filtragem de tipos de arquivos que serão selecionados cTitulo,; // Título da Janela para seleção dos arquivos ,; // Compatibilidade cDirIni,; // Diretório inicial da busca de arquivos lSalvar,; // Se for .T., será uma Save Dialog, senão será Open Dialog GETF_MULTISELECT; // Se não passar parâmetro, irá pegar apenas 1 arquivo; Se for informado GETF_MULTISELECT será possível pegar mais de 1 arquivo; Se for informado GETF_RETDIRECTORY será possível selecionar o diretório ) If ! Empty(cArqSel) FWAlertInfo("Arquivo(s) selecionado(s): " + cArqSel, "Teste 2 - TFileDialog") EndIf //TFileDialog - Selecionando uma pasta cTipArq := "" cTitulo := "Seleção de Pasta para Salvar arquivo" cPasta := tFileDialog(; cTipArq,; // Filtragem de tipos de arquivos que serão selecionados cTitulo,; // Título da Janela para seleção dos arquivos ,; // Compatibilidade cDirIni,; // Diretório inicial da busca de arquivos lSalvar,; // Se for .T., será uma Save Dialog, senão será Open Dialog GETF_RETDIRECTORY; // Se não passar parâmetro, irá pegar apenas 1 arquivo; Se for informado GETF_MULTISELECT será possível pegar mais de 1 arquivo; Se for informado GETF_RETDIRECTORY será possível selecionar o diretório ) If ! Empty(cPasta) FWAlertInfo("Pasta Selecionada: " + cPasta, "Teste 3 - TFileDialog") EndIf FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.