Salut

Je viens de faire une découverte très interressante .

Peut être certains ont déja rencontré ce probleme, qui est de pouvoir poser des composants comme des boutons, edits ... sur des surfaces vitrées style Vista.

Pour info, il est possible de creer de la surface vitrée sur une form, avec cette simple procedure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
procedure ExtendGlass(const AHandle: THandle; const AMargins: TRect);
que vous pouvez trouver dans l'excellent tutoriel d'Olivier Lance

Dans l'évenement OnCreate de la Form, ajoutez :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ExtendGlass(Form1.Handle,Rect(-1,-1,-1,-1));
et changez la couleur de la form a clBlack;

Ce qui nous cree une form de ce type :




Le probleme se pose quand on essaye de poser un composant sur cette surface, les composants rendent très mal :




En cherchant, j'ai trouvé une solution qui permet d'éviter ce probleme, sans avoir a dériver un seul composant, ni taper une seule ligne de code .

Laissez la procedure OnCreate, et :
  • Mettez la propriété TransparentColorValue de la form a clRed (par exemple)
  • Mettez la propriété TransparentColor de la form a true
  • Mettez la couleur de la form a clRed


Note : vous pouvez mettre n'importe quelle couleur a la place de clRed. Utilisez une couleur que vous n'utiliserez dans aucun composant. N'utilisez pas un niveau de gris.

Executez :





Le probleme a disparu, du moins pour les composants qui n'écrivent pas directement du texte sur la fiche.

Pour les autres composants, tels que les labels, RadioButtons, et CheckBox, j'ai un moyen pour "contourner" le probleme : a la place de clRed dans mon exemple, mettez n'importe quelle couleur qui ne soit pas un niveau de gris !! (sinon la fiche ne sera pas "cliquable")

Je vous conseille par exemple la couleur
qui donne :




Vous pouvez maintenant creer des fiches avec un effet Glass, qui contient tout les compos que vous voulez !


Voila, j'espere avoir été clair et que cette astuce vous sera utile, car j'ai longtemps cherché une solution a ce probleme.

Je remercie Olivier Lance pour son tuto sur les Applications compatibles Vista.