Question

J'utilise actuellement la TOpenTextFileDialog comme il a l'option codages, mais sous Vista, il apparaît en utilisant le style de dialogue ouvert plus. Je voudrais la nouvelle boîte de dialogue ouverte de style, mais avec un combobox de codage que je peux remplir avec des chaînes personnalisées. Fondamentalement, je veux que le dialogue ouvert exact que le Bloc-notes montre sous Vista. Bien sûr, je dois aussi la sauvegarde correspondante de dialogue ainsi.

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

Quelqu'un at-il une suggestion sur la façon d'obtenir ce que je veux sous Vista, mais encore de le faire fonctionner sous XP? Je suppose que Windows 7 aura le même problème. J'utilise D2009. Merci pour toutes suggestions ou aider!

Était-ce utile?

La solution

Avec Vista une nouvelle façon de traiter les boîtes de dialogue de fichier a été introduit, pour plus d'informations Google pour l'interface ou un IFileDialog regard sur ce billet de blog . Comme vous le dites vous-même, en utilisant le fait que le drapeau OFN_ENABLETEMPLATE dialogue commune Vista pour revenir à l'ancien style.

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

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

Maintenant, il vous suffit d'ajouter la personnalisation à la boîte de dialogue Vista. Le blog montre comment pour ce faire, en ajoutant un gestionnaire pour la boîte de dialogue de OnExecute (car au moment où on l'appelle l'interface a été mis Dialog en place déjà), interroger le membre de la boîte de dialogue IFileDialogCustomize de fichier pour le <= > interface et en utilisant cette option pour ajouter des contrôles supplémentaires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top