Bandeau Xylak
Bandeau LOCUS SOLUTUS
Bandeau arc-en-ciel
    Brimborions
     xylakaviens
fbNauvatag
xyljack.net


Oyiwen ed tanemert_______ Page mise à jour le 29 décembre 2021 vers 19h20 TUC····

Page en cours de rédaction

Le thème Sombre-plat·

Ironie de l'Histoire·: aux débuts de VisualBasic, le (pseudo-)relief de VB et le texte noir sur fond blanc de Windows semblaient le comble de la modernité, rendant ringards le flat design· de QuickBasic (avec, par exemple, des boutons au contour formé d'un simple trait) couplé au dark theme· (texte clair sur fond noir) de la console MS-Dos. Deux décennies plus tard, la girouette a tourné… et il n'est pas simple de donner aux programmes écrits en VB6 (à son tour délaissé) l'aspect sombre-plat· aujourd'hui à la mode. Le code ci-dessous essaie de répondre à cet éventuel besoin.


Les problèmes

À première vue, il ne devrait pas y en avoir puisque les contrôles de VB6 disposent des trois propriétés adéquates : BackColor pour la couleur du fond, ForeColor pour celle du texte et Appearance pour le relief.
Le thème sombre·: les contrôles de VB6 disposent d'une propriété BackColor fixant la couleur de leur fond·; cette couleur peut être exprimée en code RGB sous forme d'une valeur de six chiffres hexadécimaux, mais VB utilise par défaut une valeur Système symbolique de huit chiffres dont les deux premiers sont 80·; par exemple, quand on crée une liste, BackColor est fixé à 80000005 («·fond de la page·», blanc = FFFFFF)·; ce mécanisme ingénieux devrait permettre le changement automatique des couleurs système·; malheureusement (du moins chez moi), même quand l'explorateur de fichiers est en mode sombre, VB reste en mode clair·; il faut donc modifier à la main les propriétés BackColor/ForeColor de chaque contrôle. À cet inconvénient général s'en ajoutent deux autres particuliers aux boutons (CommandButton·)·:
- même en changeant leur propriété Appearance de 1-3D· à 0-Flat·, VB entoure les boutons d'un trait épais (idem pour les cadres [Frame·]) qui détonne avec le simple trait des listes ou des zones de texte·;
- plus gênant encore, ces contrôles n'ont pas de propriété ForeColor·; même en mode Graphique, le texte est toujours noir (ce qui n'est pas l'idéal quand le fond est lui-même noir). Il faut donc
ou bien remplacer ce texte (propriété Caption) par une image – travail d'autant plus fastidieux qu'il faut refaire cette image à chaque fois qu'on a besoin de modifier le texte ou sa police ou la couleur ou la taille du bouton)·;
ou bien remplacer le contrôle par une étiquette (Label·)·; on pallie alors tous les inconvénients mentionnés précédemment – mais avec certaines limites·:
- la commande Bouton[(Index)].Value = VRAI (qui permet de cliquer virtuellement sur un bouton) n'est plus disponible·; il faut utiliser Bouton_Click [(Index)]·;
- plus gênant·: les étiquettes n'ont pas de hWnd donc pas de SetFocus/GotFocus/LostFocus·; - dernier inconvénient·: alors que VB centre automatiquement le texte


Plan du site & Mentions légales_._Site éclos sur Skyrock, développé avec Axiatel et mûri sur Strato.com_._© 2015-2022 - XylonAkau