BACKGROUND TRANSPARENT POUR CHECKBOX, OPTIONBOX (OPTIONBUTTON), PICTUREBOX : AVE

cs_NoFutur Messages postés 171 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 6 mai 2007 - 14 oct. 2004 à 19:43
turie Messages postés 6 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 17 février 2010 - 5 nov. 2006 à 00:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26826-background-transparent-pour-checkbox-optionbox-optionbutton-picturebox-avec-simple-procedure

turie Messages postés 6 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 17 février 2010
5 nov. 2006 à 00:52
Très bon code, je le cherchai depuis un moment.
cs_surfman Messages postés 46 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 16 septembre 2008
14 nov. 2005 à 01:09
comment on fait pour que les checkbox soit transparent au démarrage de mon logiciel ? sans à avoir à crée un bouton :s
Alucardkuun Messages postés 1 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 16 septembre 2005
16 sept. 2005 à 10:54
oui mais comment est-ce que je peut mettre le script que quand le programe s'ouvre qu'il le fasse automatiquement?

merci
//Naruto
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
21 oct. 2004 à 12:42
Bin, pour la transparence, la soluce la plus simple pour moà est de créer un control qui reproduit un label et/ou de réutiliser le tien :o|
davidauche Messages postés 150 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 8 janvier 2008
20 oct. 2004 à 20:06
bah super que ça marche en fin!, pour la transparente si tu trouve la solution avec un label et control utilisateur, je suis preneur ;).
a+
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
20 oct. 2004 à 13:22
Ah les cochons de kro$oft :o|

Si tu regarde bien mon bout de source, jai fais exactement ce que tu dit. mais moi j'ai choisi le nom "OverTipText" pour pas etre en conflit. Merci qd meme ;op

Arf...pour la transparence, va falloir refaire tout mon source :o(

Fodrait que je soumette mon controle qd jaurais le temps ; il simule un lien hypertexte entiérement parametrable via l'IDE de VB :o)
davidauche Messages postés 150 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 8 janvier 2008
19 oct. 2004 à 21:05
pour ToolTipText, exactement qu'il faut le faire, car tooltiptext c'est une propriete réserver pour l'usercontrol et pas pour les controls qui se trouve dans ce usercontrol. Alors faut ajouter une autre propriete tooltiptext pour ton label. Voici un code marche bien tu l'ajoute a ton usercontrol ;-).

Public Property Get ToolTipTextLbl() As String: ToolTipTextLbl = Label1.ToolTipText: End Property

Public Property Let ToolTipTextLbl(ByVal New_ToolTipTextLbl As String)
Label1.ToolTipText() = New_ToolTipTextLbl
PropertyChanged "ToolTipTextLbl"
End Property

'Charger les valeurs des propriétés à partir du stockage
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Label1.ToolTipText = PropBag.ReadProperty("ToolTipTextLbl", "")
End Sub

'Écrire les valeurs des propriétés dans le stockage
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Call PropBag.WriteProperty("ToolTipTextLbl", Label1.ToolTipText, "")
End Sub
'fin
'Pour tester si l'affectation marche bien en mode execution :
Private Sub Command1_Click()
UserControl11.ToolTipTextLbl = "Blabla"
Label2.Caption = UserControl11.ToolTipTextLbl & "Blabla2"
End Sub

pour l'histoire du label transparent dans un usercontrol transparent c'est impossible je crois, alors essaie ma source qui résoudre ton problème ;).
a++
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
19 oct. 2004 à 13:53
Pour le pb du ToolTipText, voilà mon bout de source qui marche sauf si je renomme la propriété "ToolTipText":

Public Property Get OverTipText() As String
OverTipText = strOverTipText
End Property

Public Property Let OverTipText(ByVal New_ToolTipText As String)
strOverTipText = New_ToolTipText
Label.ToolTipText = New_ToolTipText
PropertyChanged "OverTipText"
End Property


Le bug, c'est le parametre "New_ToolTipText" qui est vide... Alors que l'affectation au Label, et la lecture/ecriture du propertybag fonctionnent :o|
davidauche Messages postés 150 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 8 janvier 2008
18 oct. 2004 à 20:09
olid, pour ton 1er problème tu peux commencer a regarder cette source que j'ai cree dernierement, gère du texte transparent dans un control utilisateur, aussi avec des angles de rotation aux choix, l'effet 3d et l'effet contour d'un text...: http://www.vbfrance.com/code.aspx?ID=26755
Mais avec un label dans un control utilisateur, normalement c'est faisable aussi et plus simple, je regarde ça ce soir.

Pour ToolTipText, j'ai aucune idee pour l'instant, mais je vais tenter ça aussi
a+
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
18 oct. 2004 à 13:46
Une question pour un probleme un peu similaire :

J'ai créé un control utilisateur qui contient "juste" un control Label. Jarrive pô à rendre mon controle avec fond transparent... Si le style du controle utilisateur ET du Label sont transparent, le texte du Label n'apparait pu :o(((

Autre probleme avec ce controle, si j'appel ma propriété d'etiquette de survol "ToolTipText" (le nom classique standard) qui renvoit sa valeur vers la propriété du meme nom sur le Label... Bin çà marche pô ; lors de l'affectation, la propriété (du controle utilisateur) reste vide... meme en faisant un Debug ou un Msgbox sur le parametre vdata fourni à la propriété, il est vide :o. !!!!
davidauche Messages postés 150 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 8 janvier 2008
16 oct. 2004 à 22:30
ah on s'est croise dans nos reponses 2ème fois.
je vous remercie une autre fois pour tes informations.
a+
davidauche Messages postés 150 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 8 janvier 2008
16 oct. 2004 à 22:27
ahh c'est bon j'ai lu msdn :
After painting is complete, the ReleaseDC function must be called to release the device context. Not releasing the window device context has serious effects on painting requested by applications.
merci BruNews pour cette remarque, en vb souvent on fait pas ReleaseDC mais je ne repete plus, peut etre car vb lebère automatiquement la mémoire, pas comme en c et c++ ;-).
Amicalement a+
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 oct. 2004 à 22:06
ah on s'est croise dans nos reponses.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 oct. 2004 à 22:05
ben faudra mieux lire ma source, c'est juste la derniere ligne (mais bon personne n'est a l'abris d'une erreur j'en conviens aisement).
Windows maintient une table de handles sur 16 bits de longueur, si donc une fonction qui ne les ferme pas est appelee tres souvent (raffraichissement d'images ou truc de ce genre) on va tres vite arriver avec un retour 0 sur la fonction et la ce sera la cata. Quand on appelle ReleaseDC() Windows marque la place libre pour un prochain appel.
davidauche Messages postés 150 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 8 janvier 2008
16 oct. 2004 à 21:59
ahh non! pardon BruNews, lol je n'ai pas remarqué ReleaseDC () à la fin du code , sorry ;)
davidauche Messages postés 150 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 8 janvier 2008
16 oct. 2004 à 21:56
lol juvamine :-) ;-)

ah bon BruNews!, et si je met pas ReleaseDC() ça change en quoi? et qu'elles sont les problèmes qui peuvent se poser après? (je demande l'information, merci d'avance).
Sinon, pourquoi t'as oublié d'utiliser ReleaseDC() dans ta source : http://www.cppfrance.com/code.aspx?ID=11139 ;-).
Cordialement
a+
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 oct. 2004 à 19:39
Toute fenetre suppode un hdc pour la dessiner mais GetWindowDC() cree un handle qu'il faut liberer par ReleaseDC().
C'est pas une question mais une information.
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
16 oct. 2004 à 19:33
alors dit pas que je suis un programmeur...je ne me réduis pas au statut de pisseur de ligne qui est pour ma part le moment le moins palpitant d'un informaticien.
Ca reste un avis perso :-)

Cordialement
juva
davidauche Messages postés 150 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 8 janvier 2008
16 oct. 2004 à 19:07
ouais mes amis, j'ai mélange Ado avec les interfaces graphiques que nous propose MS pour la manipulation des bases de donnees.

BruNews, on est pas obliger d'utiliser ReleaseDC() c'est les composants qu'on utilise ont deja un hDc ;).

juvamine, j'aime etre un programmeur et pas un développeur (d'apres ton raisonnement) :p.

a+
davidauche@icqmail.com
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
16 oct. 2004 à 08:24
Ouf je me sens moins seul ^^
davidauche ya probablement 7 source sur 10 ici qui sont comme ca. T'as pas eut de chance que je critique la tienne, bien que je ne désavoue pas son bon fonctionnement.
VB est censé être un langage "clé en main" même si c'est pas totalement vrai: les applications sont développé plus rapidement en VB qu'en C. C'et d'ailleur pour cela qu'il est assez couremment utilisé dans le milieu professionnel.
Je pense que l'on peu clore le débat. Enfin pour ma part :-)

Bonne chance pour la suite
A bientôt sur #prog,
juvamine
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 oct. 2004 à 23:38
Salut,

juvamine m'a devance pour la gratuite de MDAC...

Quand je vois de la prog a coups d'API dans du VB j'ai un peu tendance a etre de son avis, VB est fait pour utiliser des composants testes et fiables sinon on se met au C et on met vraiment ses mains dans le cambouis.
Exemple immmediat:
GetWindowDC() au debut, ou est le ReleaseDC() ???

Bonne continuation.
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
15 oct. 2004 à 23:19
et bien sache mon ami, que ADODB est gratuit !!!pour utiliser adodb il faut simplement télécharger la MDAC...(freeware sur le site de microsoft)
2eme point je suis au niveau professionnel depuis maintenant 2 années, j'ai appris que lorsque les utilisateurs avait un besoin, j'avais des délais a respecter. entre le fait d'utiliser quelque chose de tout fais et utiliser 6 API je ne met pas longtemps pour choisir !
MS reste le 1er distributeur de Software au monde (SVP je ne veux pas lancer un débat pro-MS) mais les composants qu'ils nous fournissent sont la plupart du temps largement utilisables et j'en profite très largement !

et tout dernier point, je ne suis pas "programmeur" je suis "développeur" Ce terme englobe toute la partie théorique et analytique du métier d'informaticien. On réfléchot, on propose, et on exécute. Je tenais à préciser ce petit point ki n'est cependant pas très important

Cordialement
juva
http://www.webhelp-ig.com/
davidauche Messages postés 150 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 8 janvier 2008
15 oct. 2004 à 21:58
lol Inekman, bah je suis content que ça marche aussi en delphi, alors je ne me casse pas ce soir avec pascal ;), tu peux nous mettre la procédure en delphi stp, comme ça elle aide nos amis en Delphi ;).
Merci a+
Inekman Messages postés 291 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 30 juin 2006
15 oct. 2004 à 21:44
Merki monsieur pour votre approbation ;-)

Pour le portage Delphi et bien ça marche nickel sauf qu'il faut surcharger la fonction...Si on laisse TObject et bien on accède pas à la propriété "Backcolor" des composants donc marche po :-)

Il faut en faire une version différente pour chaque composant qu'on veut "transparenter"...je sais pas si j'ai été clair mais chez moi ça roule, non sans bug ceci dit :-P
davidauche Messages postés 150 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 8 janvier 2008
15 oct. 2004 à 21:38
salut, je vous remercie,
franchement juvamine ça m'etonne de ta part!!!, pour moi utiliser un composant existe deja (surtout de MS) ce n'est pas le top. en plus quand t'utilise les composants de MS il faut avoir des licences pour chaque ocx, faut aussi ajouter ces ocx a ton programme et les installer aux postes de l'utilisateur....(alors ce n'est pas complique ça par raport à une procédure très simple a utiliser!? o_O). De plus t'es un programmeur, alors faut que tu trouve les solutions tt seul et pas courir a MS pour avoir les solutions et des fois tu paie en plus!!!. juvamine faut qu'on trouve les solutions et pas se cacher devant les problèmes qui nous rencontre, sinon nous sommes jamais des programmeurs. juvamine, tu verras les histoires des licences quand tu seras à l'echelle professionelle (ADODB pas gratuit mon chef!!!!faut payer :p). Les programmeurs de MS ne sont pas mieux que nous :p alors on peut faire aussi!!.
Inekman je suis tt a fait d'accord avec toi ;-), pour delphi (pascal) je vais essayer de traduire cette source (ça fait moment que je n'ai pas touche pascal, mais je tente ça).
ricky84 j'ai tenté un peu avec les textbox, je rencontre meme problème, je vais essayer d'adapter un peu le code pour ça marche avec les textbox et surtout les listbox aussi ;) :p

Allez amicalement a+
ricky84 Messages postés 44 Date d'inscription dimanche 8 septembre 2002 Statut Membre Dernière intervention 13 janvier 2014
15 oct. 2004 à 18:22
J'aime bien ce code mais est-ce-qu'il est possible de l'adapter aux TextBox ? J'ai essayé en mettant borderstyle à 0 et sans la 3D,mon textbox est bien transparent mais dés que je veux modifier sont texte,il devient illisible !
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
15 oct. 2004 à 16:21
moi j'ai appris que la programmation était une réutilisation sans fin de codes existant...c'est comme si tu disais que t'allait refaire le monde a une échelle !=

c'est comme quand quelque fait une classe d'accès aux données...c'est coll tu t'ai bien ennuyé mais ADODB est la pour ca

david tu né biensur pas le 1er dans ce cas mais toi c'est paske on en avait parlé sur #prog !
Inekman Messages postés 291 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 30 juin 2006
15 oct. 2004 à 13:02
Je trouve ton code excellent Womby. Perso, je programme en Delphi et je n'ai jamais réussi à faire un checkbox standard transparent (1 an que je cherche). Alors j'ai trouvé une composant qui le propose mais en contrepartie ça allourdi mon exe énormément...

J'espère qu'en adaptant ce code en Pascal ça va arracher sa race.

Trop trop merci beaucoup :-P

Inekman.10/10.

ps : l'informatique est loin d'être blanche ou noir. On se doit de découvrir de nouvelles méthodes à chaque fois et ne pas se résigner à un truc qui marche dont on ne connait pas le fonctionnement. C'est mieux de faire une chose de mille façon que de faire mille chose d'une façon. ;-) A bon entendeur...PROGRAMMEZ ! <:o)
cs_Womby Messages postés 69 Date d'inscription jeudi 29 août 2002 Statut Membre Dernière intervention 27 avril 2007
15 oct. 2004 à 10:24
C'est sur qu'il y a peut etre plus simple. Ceci dit, il a au moins le merite de montrer que c'est possible autrement ;)
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
15 oct. 2004 à 09:31
moi qui pensais qu'un programmeur était du genre faignant...ou en tout cas, il cherchait toujours la solution la plus simple...ce n'est visiblement pas ton cas...encore une source que l'on devrait classer dans les catégorie "Pourquoi faire simple quand on peut faire compliquer"
6 API + une librairie VB pour rendre un bg transparent !

MS y'avait déjà pensé, c'est pourquoi il existe la librairie Ms Forms 2.0 Objects Library !! Donc tes 6 API+Library sont remplacer par une seule Library :/ et un .BackStyle à modifier.
Je te l'ai déjà dit tout ça sur le tchate ! mais ceci servira peut-être aux autres qui sait...

5/10 pour le mal que tu t'ai donné

Cordialement
juva
Zoneur Messages postés 6 Date d'inscription dimanche 31 août 2003 Statut Membre Dernière intervention 25 mars 2005
14 oct. 2004 à 20:48
Hum, salut bonne source juste un blém l'image du pinguin est touché aussi.
davidauche Messages postés 150 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 8 janvier 2008
14 oct. 2004 à 20:03
salut,
je suis content pour toi NoFutur et merci :).
titnamoureux, comment ça marche pas?!, essaie de télecharger le zip et tester la source (il y a un exemple), en fait t'ajoute une image (picture) au form1 pour l'effet transparence sera plus clair.
tu me tiens au courant si ça marche pas, c'est un peu étonnant quand meme!
a+
titnamoureux Messages postés 5 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 14 octobre 2004
14 oct. 2004 à 19:51
Je n'arrive pas le faire fonctionner.. ???
cs_NoFutur Messages postés 171 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 6 mai 2007 1
14 oct. 2004 à 19:43
10/10 pour moi.

J'ai cherché mais je n'ai jamais trouvé et en plus c'est idéal pour le composant Tabstrip de la version 5.0 associé au manifest.xp pour obtenir enfin une belle transparence sur les Frames sous XP !

Bonne prog !
Rejoignez-nous