FileSelectDialog

Cria uma caixa de diálogo para abrir/criar um arquivo ou pasta.

int  FileSelectDialog(
   string   caption,              // barra de título
   string   initial_dir,          // pasta inicial
   string   filter,               // filtro de extensão
   uint     flags,                // combinação de sinalizadores
   string&  filenames[],          // matriz contendo os nomes dos arquivos
   string   default_filename      // nome do arquivo por padrão
   );

Parâmetros

caption

[in]  Título da caixa de diálogo.

initial_dir

[in]  Nome da pasta inicial relativa à pasta MQL5\Files, cujo conteúdo será exibido na caixa de diálogo. Se o valor for igual a NULL, na caixa de diálogo será mostrada a pasta MQL5\Files.

filter

[in]  Filtro de extensões de arquivos que serão mostradas na caixa de diálogo para serem selecionadas. Arquivos de outros formatos ficarão ocultos.

flags

[in] Combinação de sinalizadores que define o modo da caixa de diálogo. Os sinalizadores são definidos da seguinte maneira:
FSD_WRITE_FILE — diálogo de abertura de arquivo
FSD_SELECT_FOLDER — permite selecionar apenas pastas;
FSD_ALLOW_MULTISELECT — permite selecionar alguns arquivos;
FSD_FILE_MUST_EXIST — os arquivos selecionados devem existir;
FSD_COMMON_FOLDER — o arquivo está localizado na pasta compartilhada de terminais do cliente \Terminal\Common\Files.

filenames[]

[out]  Matriz de linhas na qual serão colocados os nomes dos arquivos/pastas selecionados.

default_filename

[in]  Nome do arquivo/pasta por padrão. Se especificado, esse nome será automaticamente substituído no diálogo de abertura e retornado na matriz filenames[] durante o teste.

 

Valor retornado

Se for bem-sucedida, a função retornará o número de arquivos selecionados cujos nomes podem ser obtidos em filenames[]. Se o usuário não selecionar o arquivo e fechar a caixa de diálogo, a função retornará 0. Em caso de execução mal sucedida retornará um valor menor que 0, código de erro poderá ser obtido com a ajuda de GetLastError().

Observação

Por motivos de segurança, em MQL5 o trabalho com arquivos é estritamente controlado. Os arquivos com os quais são executadas as operações de arquivo através da linguagem MQL5 não podem estar localizados fora do arquivo "área restrita", isto é, fora da pasta MQL5\Files.

O nome da pasta inicialinitial_dir é procurado na pasta do terminal do cliente na subpasta MQL5\Files (ou diretório_agente_teste\MQL5\Files em caso de teste). Se entre os sinalizadores for especificado FSD_COMMON_FOLDER, a pasta inicial será procurada na pasta compartilhada de terminais do cliente \Terminal\Common\Files.

O parâmetro filter indica arquivos válidos e deve ser definido com o formato "<descrição 1>|<extensão 1>|<descrição 2>|<extensão 2>...". Por exemplo, "Text files (*.txt)|*.txt|All files (*.*)|*.*", além disso, a primeira extensão "Text files (*.txt)|*.txt" será selecionada como tipo de arquivo por padrão.

Se filter=NULL, a máscara de seleção de arquivos na caixa de diálogo será "All Files (*.*)|*.*|"

Se definido o parâmetro default_filename, então durante o teste não visual a chamada de FileSelectDialog() retornará 1, e o valor de default_filename será copiado na matriz filenames[].

A função é proibida em indicadores personalizados, uma vez que a chamada para FileSelectDialog() interrompe o trabalho do thread de execução durante todo o tempo de espera pela resposta do usuário. Como todos os indicadores de cada símbolo são executados num único thread, o funcionamento de todos os gráficos em todos os períodos gráficos do símbolo em questão será interrompido.

Exemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- obtemos os nomes dos arquivos de texto para carregamento a partir da pasta compartilhada de terminais do cliente
   string filenames[];
   if(FileSelectDialog("Selecionar arquivos para carregamento"NULL
                       "Text files (*.txt)|*.txt|All files (*.*)|*.*"
                       FSD_ALLOW_MULTISELECT|FSD_COMMON_FOLDERfilenames"data.txt")>0)
     {
      //--- exibimos o nome de cada arquivo selecionado
      int total=ArraySize(filenames);
      for(int i=0i<totali++)
         Print(i": "filenames[i]);
     }
   else
     {
     Print("Files not selected");
     }
//---
  }

Veja também

FileOpen, FileIsExist, FileDelete, FileMove, FolderCreate, FolderDelete, FolderClean, Sinalizadores de abertura de arquivos