|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
Quand on propose plusieurs extensions dans un TSavePictureDialog, comment on peut savoir qu'elle extension a été choisie par l'utilisateur ? J-L -- Jean-Luc M. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Ca n'a pas été conçu pour. Quel est ton objectif ?
Jean-Luc M. <alphomega@free.fr> :: Bonjour, :: :: Quand on propose plusieurs extensions dans un TSavePictureDialog, :: comment on peut savoir qu'elle extension a été choisie par :: l'utilisateur ? :: :: J-L :: :: -- :: Jean-Luc M. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Jean-Luc M. a écrit :
> Bonjour, > > Quand on propose plusieurs extensions dans un TSavePictureDialog, > comment on peut savoir quelle extension a été choisie par l'utilisateur ? > > J-L Avec ExtractFileExt(TheSaveDialog.FileName) ? |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
BigGrizzly a écrit :
> Ca n'a pas été conçu pour. Quel est ton objectif ? > > Jean-Luc M. <alphomega@free.fr> > :: Bonjour, > :: > :: Quand on propose plusieurs extensions dans un TSavePictureDialog, > :: comment on peut savoir qu'elle extension a été choisie par > :: l'utilisateur ? Bonjour, Si c'est au moment de la sélection d'extension (avant d'avoir cliqué sur "Enregistrer") il semble qu'on doit pouvoir exploiter le message "CDN_TYPECHANGE" : The user selected a new file type from the list of file types. Voir le SDK, rubrique "Open and Save As Dialog Boxes", paragraphe "Explorer-Style Hook Procedures" presque en bas de la (longue) page. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Le feu sacré, le voilà, en personne qui vient sonner à la porte du forum !
:-))) Pascal Peyremorte <p.peyremorte_oter_ces_mots@free.fr> :: BigGrizzly a écrit : ::: Ca n'a pas été conçu pour. Quel est ton objectif ? ::: ::: Jean-Luc M. <alphomega@free.fr> ::::: Bonjour, ::::: ::::: Quand on propose plusieurs extensions dans un TSavePictureDialog, ::::: comment on peut savoir qu'elle extension a été choisie par ::::: l'utilisateur ? :: :: :: Bonjour, :: :: Si c'est au moment de la sélection d'extension (avant d'avoir cliqué :: sur "Enregistrer") il semble qu'on doit pouvoir exploiter le message :: "CDN_TYPECHANGE" : The user selected a new file type from the list :: of file types. :: :: Voir le SDK, rubrique "Open and Save As Dialog Boxes", paragraphe :: "Explorer-Style Hook Procedures" presque en bas de la (longue) page. |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
BigGrizzly a écrit :
> Le feu sacré, le voilà, en personne qui vient sonner à la porte du forum ! > :-))) Pas très violent le feu... Je n'ai jamais exploité ce truc, d'où le "on devrait pouvoir". << To use this message, provide an OFNHookProc hook procedure and specify the OFN_ENABLEINCLUDENOTIFY flag in the OPENFILENAME structure when you create the dialog box.>> Faudra regarder comment ça s'emboite dans la VCL. //*** un peu plus tard (je suis curieux) *** Ohhhh !!!! Je viens de découvrir que TOpen et TSaveDialogs publient un évènement "OnTypeChange" (qui est absent de l'aide en ligne !!!) ! Il suffit donc de l'utiliser. Et y'a plus de feu du tout ![]() |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
>
> Ohhhh !!!! > > Je viens de découvrir que TOpen et TSaveDialogs publient un évènement > "OnTypeChange" (qui est absent de l'aide en ligne !!!) ! > Il suffit donc de l'utiliser. il y a bien un évenement que j'ai vu mais il ne dit pas pas quel type est choisi. L'index dans la liste me suffirait. Je vais voir du coté sdk. Merci pour cette piste ! -- Jean-Luc M. |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
>
> Avec ExtractFileExt(TheSaveDialog.FileName) ? ça, ça fonctionne seulement si on définit une extension par défaut. Sans ça, un nom de fichier fourni sans extension n'en prend aucune. Le but du truc est de pouvoir forcer l'extension choisie dans la liste au moment de la sauvegarde sans renseigner DefaultExt -- Jean-Luc M. |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Jean-Luc M. a écrit :
> ça, ça fonctionne seulement si on définit une extension par défaut. > Sans ça, un nom de fichier fourni sans extension n'en prend aucune. > Le but du truc est de pouvoir forcer l'extension choisie dans la liste > au moment de la sauvegarde sans renseigner DefaultExt dans les dernières versions de la VCL, la propriété FilterIndex semble mise à jour après l'exécution de la boite de dialogue; idem dans l'évênement OnTypeChange (pas testé) |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
>
> dans les dernières versions de la VCL, la propriété FilterIndex semble mise à > jour après l'exécution de la boite de dialogue; idem dans l'évênement > OnTypeChange > (pas testé) Bien vu , j'avais pas pensé à vérifier ça, me disant que ce n'était qu'une initialisation du choix du type avant execution de la boite de dial. Merci -- Jean-Luc M. |
|
|
|
#11 |
|
Messages: n/a
Hébergeur: |
On à proposé une solution dans la FAQ de www.developpez.com il y a plusieurs
mois de celà si ça vous intéresse.... "Jean-Luc M." <alphomega@free.fr> a écrit dans le message de news: mn.22467d7a0d7f1050.28556@free.fr... > > >> dans les dernières versions de la VCL, la propriété FilterIndex semble >> mise à jour après l'exécution de la boite de dialogue; idem dans >> l'évênement OnTypeChange >> (pas testé) > > Bien vu , j'avais pas pensé à vérifier ça, me disant que ce n'était qu'une > initialisation du choix du type avant execution de la boite de dial. > Merci > > -- > Jean-Luc M. > > |
|
|
|
#12 |
|
Messages: n/a
Hébergeur: |
"Jean-Luc M." <alphomega@free.fr> a écrit dans le message de news:mn.22467d7a0d7f1050.28556@free.fr... > > > > dans les dernières versions de la VCL, la propriété FilterIndex semble mise à > > jour après l'exécution de la boite de dialogue; idem dans l'évênement > > OnTypeChange > > (pas testé) > > Bien vu , j'avais pas pensé à vérifier ça, me disant que ce n'était > qu'une initialisation du choix du type avant execution de la boite de > dial. > Merci > > -- > Jean-Luc M. > > Function GetCurrentExtension(s:string;t:integer):string; var i,j:integer; begin result:='';j:=0; i:=0; t:=(t-1)*2+1; while (j<Length(s)) and (i<>t) do begin inc(j); if s[j]='|' then inc(i); end; inc(j); while (j<=Length(s)) and (s[j]<>'|') do begin result:=result+s[j]; inc(j); end; end; procedure TForm1.Button1Click(Sender: TObject); begin OpenPictureDialog1.Execute; //On affiche l'extension choisie Label1.Caption:=GetCurrentExtension(OpenPictureDia log1.Filter,OpenPictureDia log1.Filterindex); end; |
|
|
|
#13 |
|
Messages: n/a
Hébergeur: |
Jean-Luc M. schrieb:
> Bonjour, > > Quand on propose plusieurs extensions dans un TSavePictureDialog, > comment on peut savoir qu'elle extension a été choisie par l'utilisateur ? > > J-L > Le problème c.a.d. la question est: as-tu besoin de savoir l'extension choisie dans le combo, même si à la fin l'utilisateur en donne une autre? en fait: on peux choisir "*.gif" dans le combo et tout de même nommer le fichier "monimage.jpg" (suivant les options du dialog, bien-sûr) Il est en général plus fiable de récupérer le nom de fichier après la fermeture du dialog et de vérifier l'extension à ce moment: - soit l'extension manque => celle du combo est choisie - soit elle est déjà fournie => celle du combo n'a plus d'importance |
|
![]() |
| Outils de la discussion | |
|
|