PhGORMAND
Messages postés54Date d'inscriptionjeudi 3 janvier 2002StatutMembreDernière intervention20 juillet 2006
-
6 sept. 2002 à 09:44
PhGORMAND
Messages postés54Date d'inscriptionjeudi 3 janvier 2002StatutMembreDernière intervention20 juillet 2006
-
9 sept. 2002 à 10:36
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.
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 7 sept. 2002 à 00:42
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;
PhGORMAND
Messages postés54Date d'inscriptionjeudi 3 janvier 2002StatutMembreDernière intervention20 juillet 2006 9 sept. 2002 à 10:36
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é.