procedure TForm1.ButtonOpenClick(Sender: TObject); var OpenFileName : TOpenFilename; MyFilter: string; FileName : array[0..MAX_PATH] of Char; begin ZeroMemory(@OpenFileName,SizeOf(OpenFileName)); ZeroMemory(@FileName, SizeOf(FileName)); OpenFileName.hwndOwner := Handle; OpenFileName.lStructSize := SizeOf(OpenFileName); MyFilter :='Tous les fichiers (*.*)'#0'*.*'#0'Fichiers texte (*.txt)'#0'*.txt'#0#0; OpenFileName.lpstrFilter := PChar(MyFilter);//Le filtre OpenFileName.nFilterIndex := 2;//Numéro du filtre, ici fichiers texte OpenFileName.lpstrFile := @FileName; OpenFileName.nMaxFile := SizeOf(FileName); OpenFileName.lpstrInitialDir := PChar('C:\'#0);//Répertoire de recherche OpenFileName.lpstrTitle := PChar('Ouvrir fichiers');// Le titre de la boîte de dialogue OpenFileName.Flags := OFN_EXPLORER or OFN_ENABLESIZING or OFN_HIDEREADONLY or OFN_FILEMUSTEXIST; if GetOpenFileName(OpenFileName) then ShowMessage(OpenFileName.lpstrFile); end;@+
function Affiche_le_dialogue_de_lecture(awindow:windows.hwnd; out_filename,initialdir,in_filter,in_extention:pchar; de_muliple_fichier:boolean; taille_receptacle:integer; title:pchar; var index_filtre_selected:integer):boolean; var open_a_file_name:CommDlg.OPENFILENAME; //var pc_chemin_memoriser:wutil.pc1024; C'est quoi ? pc_chemin_memoriser : array[0..MAX_PATH] of Char; //var resultat:boolean; begin Result := False; try ZeroMemory(@open_a_file_name,SizeOf(open_a_file_name)); (*Affiche_le_dialogue_de_lecture:=false; FillChar(open_a_file_name,sizeof(open_a_file_name),#0);*) FillChar(pc_chemin_memoriser, SizeOf(pc_chemin_memoriser), #0); StrCopy(pc_chemin_memoriser, initialdir); open_a_file_name.hWndOwner := awindow; open_a_file_name.lStructSize := SizeOf(open_a_file_name); open_a_file_name.hInstance := hinstance; open_a_file_name.lpstrFilter := in_filter; open_a_file_name.lpstrCustomFilter := nil; open_a_file_name.nMaxCustFilter := 0; open_a_file_name.nFilterIndex := index_filtre_selected; open_a_file_name.lpstrFile := out_filename; {@} open_a_file_name.nMaxFile := taille_receptacle; open_a_file_name.lpstrFileTitle := nil; open_a_file_name.nMaxFileTitle := 0;(*1024;*) open_a_file_name.lpstrInitialDir := @pc_chemin_memoriser; open_a_file_name.lpstrTitle:=title; open_a_file_name.Flags:= OFN_EXPLORER or OFN_EXTENSIONDIFFERENT or OFN_ENABLESIZING or OFN_FILEMUSTEXIST (*or OFN_ALLOWMULTISELECT*); if de_muliple_fichier then open_a_file_name.Flags:=open_a_file_name.Flags or OFN_ALLOWMULTISELECT; open_a_file_name.nFileOffset := MAX_PATH;(*0;*) open_a_file_name.nFileExtension := 0; open_a_file_name.lpstrDefExt:=in_extention; open_a_file_name.lCustData:=0; open_a_file_name.lpfnHook:=nil; open_a_file_name.lpTemplateName:=nil; open_a_file_name.pvReserved:=nil; open_a_file_name.dwReserved:=0; open_a_file_name.FlagsEx:=0; Result := GetOpenFileName(open_a_file_name); if Result then index_filtre_selected := open_a_file_name.nFilterIndex; (*resultat:=CommDlg.GetOpenFileName(open_a_file_name); if resultat then index_filtre_selected:=open_a_file_name.nFilterIndex; Affiche_le_dialogue_de_lecture:=resultat;*) except end; end; {affiche_le_dialogue_de_lecture} procedure TForm1.Button1Click(Sender: TObject); var FilterIndex: Integer; ListFile : array[0..MAX_PATH] of Char; begin FilterIndex := 2; FillChar(ListFile,Sizeof(ListFile), #0); if Affiche_le_dialogue_de_lecture(Handle, @ListFile, 'C:\'#0,'Tous les fichiers (*.*)'#0'*.*'#0'Fichiers texte (*.txt)'#0'*.txt'#0#0, 'txt', True, SizeOf(ListFile), 'Ouvrir fichier', FilterIndex) then ShowMessage(Format('Index filtre : %d', [FilterIndex])); end;@+
Modifié le 3 nov. 2020 à 05:49