Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Fonction API GetOpenFileName ??? [ Archives / API ] (PhGORMAND)

vendredi 6 septembre 2002 à 09:44:08 | Fonction API GetOpenFileName ???

PhGORMAND

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;



samedi 7 septembre 2002 à 00:42:27 | Re : Fonction API GetOpenFileName ???

Nono40

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;




lundi 9 septembre 2002 à 10:36:30 | Re : Fonction API GetOpenFileName ???

PhGORMAND

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;







Cette discussion est classé dans : fonction, utiliser, api, param, getopenfilename


Répondre à ce message

Sujets en rapport avec ce message

Utilisaiton de variable avec la fonction Ord [ par aLTsn3ak3r ] Salut!J'ai une variable et j'ai essayé d'utiliser ma variable dans Ordet jai utiliser la fonction copy pour qu'il insert dnas la variable jsute la pre Fonction API DeviceIOControl [ par Nono40 ] Salut tout le monde,La fonction API DeviceIOControl utilise les constantes ( suivant l'aide en ligne ) prédéfinies suivantes :FSCTL_DISMOUNT_VOLUMEFSC Comment utiliser une API avec Delphi 5? [ par Manthis ] Salut,Je débute tout juste en Delphi 5. J'avais commencer par le VB. Et donc voila j'ai un problème comment utiliser une API avec Delphi?Ou doit-on la TTreeNodes et GetNode ? [ par barbulille ] salut :-]je ne comprends pas comment utiliser la fonction GetNode(ItemH: QListViewItemH): TTreeNode;dans la doc il est dit que ItemH est un handle mai Fonction à utiliser pour envoyer un stream par Tsocket [ par Francky23012301 ] Salut à tous, J'ai eu beau chercher sur le net, j'ai pas trouvé de réponse à mon probleme. Quelle est la fonction à utiliser pour envoyer un stream e Api NetMessageBufferSend [ par paf24 ] Bonjour,j'ai besoin d'un peu d'aide pour utiliser l'api NetMessageBufferSend de la librairie Netapi32.dllen fait, je sais pas quel classe ajouter dans Fichiers temporaires [ par bricolomi ] Bonjour la commauté,Malgré toutes mes recherches sur différents forum ou sites, Je recherche le moyen de visualiser les fichiers temporaires internet, fonction NetSessionEnum [ par L_art_ment ] Bien le bonjour !    J'aurais une petite question à vous poser, besoins d'un petit coup de main, je désire utiliser la fonction NetSessionEnum afin de Api NetMessageBufferSend [ par paf24 ] Bonjour,j'ai besoin d'un peu d'aide pour utiliser l'api NetMessageBufferSend de la librairie Netapi32.dllen fait, je sais pas quel classe ajouter dans Utiliser l'API BOOL GetSystemPowerStatus pour avoir des infos sur la batterie [ par Yil2201 ] Salut à tous! Voila, j'aimerais créer ma propore appli, capable de donner des infos sur la batterie, moins rudimentaire que la fenetre de la baterie d


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.