Salut NONO et merci pour la réponse mais...
Cela ne fonctionne pas sous D6. bizard.
sous D5, pas de problème, et pour initialiser
les données ( je n'y avais pas pensé ), on peut
utiliser la procedure FillChar.
Peut être que pour D6, il faut préciser
l'nvironnement dans l'option de compilation pour
la portabilité avec LINUX et Kylix. J'ai pas encore
cherché.
A+ http://philippe.gormand.free.fr
-------------------------------
Réponse au message :
-------------------------------
Attention : le membres d'un enregistrement n'ont pas de valeur par défaut ! Tous les paramètres Pchar non initialisés pointaient donc dans le vide => des tas d'erreur de violation d'accès.
Donc dans l'enregistrement Param de type TOpenFileName il faut présicer TOUS les paramètres sauf ceux qui peuvent être ignorés d'après l'aide ou les options.
Voici l'appel complet :
procedure TForm1.Button1Click(Sender: TObject);
var
Param : TOpenFilename;
FullPath : Array[0..MAX_PATH] Of Char;
begin
Param.lStructSize := SizeOf(Param);
Param.hWndOwner := Handle;
Param.hInstance := 0;
Param.lpstrFilter := Pchar(TempFilter);
Param.lpstrCustomFilter := Nil;
Param.nMaxCustFilter := 0; // Ignoré si lpstrCustomFilter=Nil
Param.nFilterIndex := 1;
Param.lpstrFile := StrPCopy(FullPath,'DEFAUT.TXT');
Param.nMaxFile := MAX_PATH;
Param.lpstrFileTitle := Nil;
Param.nMaxFileTitle := 0; // Ignoré car lpstrFileTitle=Nil
Param.lpstrInitialDir := 'C:\TEMP'; // Ou Nil si répertoire par défaut
Param.lpstrTitle := 'Le titre !'; // Ou Nil si titre par défaut ( ouvrir )
Param.Flags := OFN_EXPLORER Or OFN_FILEMUSTEXIST Or OFN_HIDEREADONLY;
Param.nFileOffset := 0;
Param.nFileExtension := 0;
Param.lpstrDefExt := 'TXT'; // Ou NIL si pas d'extension par défaut
Param.lCustData := 0; // Ignoré si lpfnHook=Nil
Param.lpfnHook := Nil;
Param.lpTemplateName := Nil;
If GetOpenFileName(Param) Then MessageDlg('OK',mtInformation,[mbOK],0);
end;
---

Nono du Moulin

---
-------------------------------
Réponse au message :
-------------------------------
Salut à tous.
Je cherche à utiliser la fonction API GetOpenFileName, mais je ne parvient pas à l'utiliser.
Dans le code ci dessous, je fais appel à la fonctin,
mais la boite de dialogue ne s'ouvre pas.
Pour répondre d'avance à certaines questions, je ne
veux pas utiliser TForm par éconnomie de taille de
l'exe (pour faire un programme d'installation).
Quelqu'un saurrait il me dire ce qui ne marche pas ?
merci.
Const
TempFilter : String = 'Tous les fichiers (*.*)' + #0 + '*.*' + #0;
procedure TForm1.Button1Click(Sender: TObject);
var
Param : TOpenFilename;
FullPath : Array[0..MAX_PATH] Of Char;
FileName : String;
begin
FileName:='C:\';
Param.lStructSize:=SizeOf(Param);
Param.hWndOwner:=Handle;
Param.lpstrFilter:=PChar(TempFilter);
Param.lpstrFile:=FullPath;
Param.nMaxFile:=MAX_PATH;
Param.lpstrFileTitle:=PChar(FileName);
Param.nMaxFileTitle:=256;
Param.Flags := OFN_EXPLORER Or OFN_FILEMUSTEXIST Or OFN_HIDEREADONLY;
If GetOpenFileName(Param) Then MessageDlg('OK',mtInformation,[mbOK],0);
end;