Richedit avec support des thèmes xp

Description

Ce composant une extension du TRichEdit de la VCL, qui supporte les thèmes XP. Les fonctions gérant ces thèmes sont chargées dynamiquement à partir de uxtheme.dll, si elles ne sont pas trouvées (version de Windows antérieure à Windows XP) le composant se met en mode "compatibilité" et laisse le TRichEdit tracer ses bordures par défaut (look "classique"). Si elles sont trouvées, le composant décide de ce qu'il doit faire en fonction des préférences de l'utilisateur : si les thèmes sont activés, il dessine un look "XP", sinon il ne fait rien et affiche donc un look "classique".

J'ai pris comme base mon TRichEditEx posté plus tôt, ce composant supporte donc également les URLs dans le texte et la détection de leur activation par l'utilisateur, au programme ensuite de décider s'il lance le navigateur par défaut avec ShellExecute, ou s'il fait une action personnalisée.

Il y a un petit bug que je ne m'explique pas : lorsque le RichEdit est utilisé avec les scrollbars en ssBoth, le petit carré en bas à droite est mal dessiné : deux lignes de deux pixels semblent être "ignorées" et affichent le contenu de la fenêtre précédente si les thèmes sont activés (testez et vous comprendrez). Si quelqu'un sait comment résoudre ce truc, je suis preneur : j'ai testé plusieurs solutions qui sont restées sans effet... Peut-être un bug dû à Delphi 5, j'ai remarqué que les TStatusBar avaient aussi leur SizeGrip qui déconnait. Si quelqu'un pouvait le compiler avec Delphi 7 ou supérieur pour tester, ce serait sympa ;-) J'ai quand même un doute, car la personne qui a fait le code original (en C++) avait le même problème. En revanche, la version C en API pure fonctionne parfaitement, aucun bug à déplorer.

Ah aussi... Il n'y a aucun commentaire dans le code, simplement parce que je n'aime pas çà : je préfère avoir le plus de code utile possible devant moi. Le code (C++) à partir duquel j'ai travaillé est disponible ici, et est agrémenté d'explications parfaitement claires et très instructives sur la gestion des thèmes XP, je vous conseille vivement de le lire : http://www.codeguru.com/Cpp/W-P/win32/tutorials/article.php/c8729/

Conclusion :


Description des fichiers du ZIP :

MainUnit.dfm et MainUnit.pas
fenêtre principale du programme de démonstration
un clic dessus active/désactive les composants

RichEdits.rc et manifest.xml
ressources pour le support des thèmes XP avec Delphi 5 et antérieurs

RichEdits.dpr
le projet en lui même

RichXP.pas et TRichXP.bmp
le composant TRichXP et un exemple d'icône pour la palette de Delphi

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.