J'ai des problèmes lors de l'utilisation d'un Vista TFileOpenDialog
dans une application Delphi 10.1 Berlin VCL avec des styles VCL sous Windows 10 64 bits. Le plus gros problème est que le bouton Ouvrir apparaît comme un bouton radio:TFileOpenDialog avec VCL Style sur Win 10 64 bits: Le bouton Ouvrir apparaît comme bouton radio
(rouge ??? sont ajoutés par moi)
Il y a quelques autres problèmes d'apparence, comme :
mais ils peuvent être ignorés pour l'instant.
TFileSaveDialog
n'a pas le même problème avec le bouton Enregistrer, mais a le même problème avec la barre d'adresse.
Il est très probablement un problème avec Windows 10 lui-même, parce que sur Windows 10 le bouton Ouvrir est un bouton de Split:
Reproduire:
- Créer une nouvelle demande VCL
- Définir un bouton et TFileOpenDialog sur son formulaire principal
- Définir l'événement OnClick pour le bouton qui appelle FileOpen Dialog1.Execute
- Dans Project-> Options-> Apparence, cochez certains styles personnalisés
Sélectionnez l'un d'entre eux. Si vous le souhaitez - mettre une zone de liste déroulante (cbStyle) sur la forme et le remplir comme ceci:
for S in TStyleManager.StyleNames do cbStyle.Items.Add(s);
et définir le cas
OnChange
:if cbStyle.ItemIndex >= 0 then TStyleManager.TrySetStyle(cbStyle.Items[cbStyle.ItemIndex]);
Cela vous permettra de changer la styles dans le temps d'exécution (et sélectionnez de Windows si aucun style requis)
Le problème persiste également lorsque GetOpenFileName()
de Winapi.CommDlg
est utilisé:
procedure TForm1.Button1Click(Sender: TObject);
var
OFN: TOpenFileName;
begin
FillChar(OFN, SizeOf(OFN), 0);
OFN.lStructSize := SizeOf(OFN);
OFN.nMaxFile := MAX_PATH;
OFN.Flags := OFN_OVERWRITEPROMPT or OFN_HIDEREADONLY or
OFN_ENABLESIZING or OFN_EXPLORER;
GetOpenFileName(OFN);
end;
Jusqu'à présent, je peux essayer d'utiliser un hack: cacher le bouton Ouvrir original et le remplacer par un autre (style Pushbutton), mais je fait des choses semblables il y a plusieurs années avec boîte de dialogue standard boîtes - en ajoutant une case à cocher, par exemple. Je ne sais pas si une approche similaire fonctionnerait. Ou, je pourrais oublier TFileOpenDialog
et juste utiliser le bon vieux style XP TOpenDialog
.
Est-ce que quelqu'un a une solution?
Pas de problème avec Windows 10. Vous n'utilisez pas le code Windows 10. Vous l'avez remplacé par du code de styles VCL. Cela dépend des détails de mise en œuvre qui peuvent changer. L'application des correctifs du projet VCL Styles utils corrigera probablement le problème. Jusqu'à la prochaine version de Windows. C'est un aspect des styles VCL qu'Emba ne vous dit pas, qu'ils sont susceptibles de casser à chaque fois que de nouvelles versions de Windows arrivent. Pas d'épreuve du futur. Évitez tous les maux de tête en évitant les styles VCL. –
Avez-vous essayé d'utiliser [VCL Styles Utils] (https://github.com/RRUZ/vcl-styles-utils)? Ça arrange les choses exactement comme ça. Je suis surpris que vous ayez eu autant de succès que vous avez déjà avec les dialogues VCL Styles dans Windows. –
Non, VCL Styles Utils (excellent travail de RRUZ!) Ne résout pas le problème (sauf s'il y a eu des changements récents). Peut être lié au fait que Windows 10 a mis à jour récemment ... Je vais télécharger la dernière version et essayer. – roumen