2009-07-02 16 views
1

J'utilise actuellement le TOpenTextFileDialog car il a l'option Encodages, mais sous Vista il apparaît en utilisant le style de dialogue ouvert plus ancien. Je voudrais ouvrir le nouveau dialogue de style, mais avec une combobox d'encodage que je peux remplir avec des chaînes personnalisées. Fondamentalement, je veux la boîte de dialogue ouverte exacte que montre le Bloc-notes sous Vista. Bien sûr, j'ai aussi besoin du dialogue de sauvegarde correspondant.Boîte de dialogue Ouvrir un fichier avec des encodages combobox sous Vista

J'ai fait quelques recherches et il semble que l'indicateur OFN_ENABLETEMPLATE provoque la boîte de dialogue commune de Vista pour revenir à l'ancien style. Malheureusement, c'est aussi le drapeau qui permet à TOpenTextFileDialog de modifier la fenêtre pour ajouter les codages combobox (si je comprends bien les choses.)

Est-ce que quelqu'un a une suggestion sur la façon d'obtenir ce que je veux sous Vista, mais il fonctionne toujours sous XP ? Je suppose que Windows 7 aura le même problème. J'utilise D2009. Merci pour toute suggestion ou aide!

+0

J'ai ajouté une demande de fonctionnalité pour cela à Embarcadero's Quality Central: http://qc.embarcadero.com/wc/qcmain.aspx?d=83605 –

Répondre

3

Avec Vista, une nouvelle façon de traiter les boîtes de dialogue de fichiers a été introduite, pour plus d'informations google pour l'interface IFileDialog ou jetez un oeil à this blog post. Comme vous le dites vous-même, l'utilisation de l'indicateur OFN_ENABLETEMPLATE entraîne le retour de la boîte de dialogue commune de Vista à l'ancien style.

Avec Delphi 2007 et 2009, vous pouvez utiliser le TFileOpenDialog et TFileSaveDialog dans la Vista catégorie Dialogs composants. Pour rendre votre application compatible avec les versions antérieures à Windows Vista, vous devez continuer à utiliser le TOpenTextFileDialog pour ceux et vérifier à l'exécution si vous êtes sur Vista et peuvent utiliser les nouvelles boîtes de dialogue:

if Win32MajorVersion >= 6 then begin 
    // use TFileOpenDialog 
    // ... 
end else begin 
    // use TOpenTextFileDialog 
    // ... 
end; 

Maintenant, il vous suffit d'ajouter le personnalisation à la boîte de dialogue Vista. The blog post montre comment faire, en ajoutant un gestionnaire pour OnExecute de la boîte de dialogue (car au moment où cela est appelé l'interface IFileDialog a déjà été mis en place), interrogeant le Dialog membre de la boîte de dialogue de fichier pour l'interface IFileDialogCustomize, et en utilisant ceci pour ajouter les contrôles supplémentaires.

+0

Merci! C'est exactement ce que je cherchais! J'ai ajouté un commentaire à ce blog avec des informations supplémentaires au cas où cela aiderait les autres. Le lien vers les documents msdn est également http://msdn.microsoft.com/en-us/library/bb775912.aspx si quelqu'un en a besoin. – MarkF