Unité de support vista

Description

La voilà enfin cette source !

Au menu :
- une solution au problème des composants affreux lorsqu'ils sont posés sur une surface "vitrée"
- de nouvelles fonctionnalités sans besoin de refaire tous les composants
- trois nouveaux composants, deux visuels et un non visuel
- une mise à jour très simple d'une application vers une interface vista-like
- des bugs, encore des bugs, toujours des bugs ...

I) Le problème des composants

Dans l'unité "Vista.pas" et "VistaConsts.pas", j'ai surchargé une grande partie des composants standards de Delphi, en leur ajoutant une propriété DrawOnGlass, qui permet, lorsqu'elle est définie à True, de dessiner le composant "proprement" sur la surface vitrée. Cependant certains bugs subsistent, et si vous avez une meilleure méthode je suis preneur !
Les composants mis à jour sont : TProgressBar, TTreeView, TButton, TComboBox, TImage, TEdit, TCheckBox, TPanel, TGroupBox, TRadioGroup, TRadioButton, TStaticText, TLabel, TForm, TOpenDialog, TSaveDialog.

II) De nouvelles fonctionnalités

Voici les nouvelles fonctionnalités classées par composant.
- TProgressBar : gestion des différents états (ce qui permet accessoirement de choisir entre trois couleurs), gestion de l'état "marquee", c'est-à-dire barre à progression indéterminée. Permet de définir la vitesse de défilement de cette dernière.
- TTreeView : met automatiquement le style Vista sur la liste arborescente. Il y a encore quelques bugs, n'empêche.
- TButton : possibilité de choisir entre un bouton normal, un commandlink (voyez le bouton du bas sur l'exemple, vous pourrez définir la petite note en-dessous par la propriété Description), un splitbutton (bouton avec une flêche de déroulement à sa droite), possibilité de mettre le petit "bouclier" avec la propriété Elevation, et même ajouter un bitmap vous-même (encore des bugs de transparence sur ce point).
- TComboBox : rien.
- TImage : possibilité de transformer votre composant TImage et petit bouton Vista, à l'aide de la propriété VistaButton. Ce bouton possède deux états (flêche vers le haut ou vers le bas), modifiable par le biais de la propriété State.
- TEdit : on peut définir un "cue banner", c'est-à-dire un petit texte destiné à guider l'utilisateur, quand il n'a encore rien écrit dans la boîte de saisie.
- TCheckBox : rien.
- TPanel : rien.
- TGroupBox : rien.
- TRadioGroup : rien.
- TRadioButton : rien.
- TStaticText : rien.
- TLabel : j'ai repris un peu de code depuis internet, alors le TLabel gagne deux propriétés : Glow et Glowsize. Glow permet de mettre un petit "halo" autour du label, particulièrement utile lorsqu'on écrit sur la surface vitrée (comme ça c'est lisible quel que soit le background). Glowsize semble ne pas avoir beaucoup d'influence, à vous de voir ...
- TForm : quatre propriétés, qui commencent par "Frame", permettent de définir la largeur des bordures de votre application. La propriété GlassTrack, lorsqu'elle est définie à True, permet de déplacer la fenêtre depuis la surface vitrée étendue.
- TOpenDialog / TSaveDialog : remplacement de l'ancienne boîte de fichiers par la nouvelle style Vista.

III) Trois nouveaux composants

- TGlassBox : posez ce composant sur votre surface vitrée, et vous aurez un endroit où dessiner vos objets. Le composant dessine sa bordure en fonction de la couleur que vous avez choisi pour vos fenêtres. Attention : la propriété DrawOnGlass des composants contenus dans ce composant doivent quand même être à True !
- TAntiGlassBox : posez ce composant en-dehors de votre surface vitrée pour créer de la surface vitrée. Pensez à mettre des bordures, sinon c'est horrible ... un exemple d'utilisation dans l'exemple.
- TTaskDialog : permet de faire apparaître une boîte de dialogue style Vista, avec *presque* toutes les options possibles.

IV) Une intégration facile

-> Vous n'aurez qu'à ajouter "Vista" dans votre clause uses de vos unités. Attention : cette unité doit être mentionnée en dernier dans votre clause uses, sinon certains composants pourraient ne pas être surchargés proprement.
-> Pour ceux qui s'inquiètent à propos du MessageDlg, ne vous inquiétez pas : j'ai mis une surcharge, qui ne prend pas plus de paramètres (pas besoin de changer quoi que ce soit) qui s'occupe de transformer votre boîte de dialogue en style Vista !

V) Des bugs ...

Oui, il doit exister pas mal de bugs, car les combinaisons sont très vastes. D'autant plus que je n'ai pas pu intégrer la totalité des composants, à cause de certains problèmes relatifs à la façon de dessiner de Windows.
Mais soyez quand même réaliste, ne posez pas un bouton "commandlink" directement sur une surface vitrée, c'est stupide et ça ne sera pas beau à voir du tout ...
Regardez l'exemple pour voir comment on peut se débrouiller pour faire quelque chose de beau visuellement et cependant cohérent (même si l'exemple en lui-même n'a aucun sens, c'est juste un exemple).

/!\ Il faut avoir Vista, sinon ça ne marchera pas ! /!\

Source / Exemple :


Instructions d'utilisation :

- Téléchargez, dézippez ...
- Installez le paquet "VistaPkg.dpk".
- Lancez le projet "Test.dpr".
- Compilez, exécutez, c'est prêt !

Conclusion :


Voilà, tous commentaires, conseils, remarques, critiques, etc ...

Développé sous Delphi 6 Personal.

Cordialement, Bacterius !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.