Salut,
Alors voilà un petit bout de code, simple mais efficace:
Tu crées un nouveau User Control, je l'ai appelé ucSimpleLabel, libre à toi de trouver le nom qui correspond le mieux à ce que tu souhaites.
Dans le fichier source de l'UC:
CODE
'=========================================
' UC Simple Label
'=========================================
Private lBackColor As Long
Private sCaption As String
Private Sub UserControl_Load()
lBackColor=UIColor(hbUIFormFill)
sCaption="Label"
Move Left,Top,Width,Me.FontMetrics.LineHeight
BackColor=lBackColor
End Sub
Public Property Let Caption(szCaption As String)
Rectangle 0,0,Width-1,Height-1,hbRectBorderNone+hbRectFillSolid
sCaption=szCaption
TextOut 0,0,szCaption,hbTextAlignLeft,Width
End Property
Public Property Let CaptionColor(color As long)
TextColor=color
Rectangle 0,0,Width-1,Height-1,hbRectBorderNone+hbRectFillSolid
TextOut 0,0,sCaption,hbTextAlignLeft,Width
End Property
Private Sub UserControl_Paint()
Rectangle 0,0,Width-1,Height-1,hbRectBorderNone+hbRectFillSolid
TextOut 0,0,sCaption,hbTextAlignLeft,Width
End Sub
Puis, tu ajoutes ton UC à la FORM de ton choix.
Voici un exemple de code, dans la FORM en question qui change la couleur du texte quand tu cliques (PenDown puis PenUp) dessus:
CODE
Private Sub Form_Load()
ucSimpleLabel1.CaptionColor=hbColorRed
ucSimpleLabel1.Caption="Simple Label User Control"
End Sub
Private Sub ucSimpleLabel1_PenUp(ByVal x As Integer, ByVal y As Integer)
ucSimpleLabel1.CaptionColor=Color(Rnd*256,Rnd*256,Rnd*256)
End Sub
Remarques:1/ Le UC est redimensionné automatiquement à la hauteur de la police de caractères par défaut (il faut rajouter un petit bout de code pour le faire dynamiquement avec FontMetrics.LineHeight lors du changement de police).
2/ La variable
lBackColor n'est pas utile si tu affectes BackColor une seule fois (donc, tu peux la supprimer éventuellement dans cet exemple).
3/ La largeur n'est en rien modifiée par la chaine de caractères CAPTION. Je limite (bien que le cliping soit déjà intégré, à toi de voir) simplement l'écriture à la largeur de l'UC.
Tu peux modifier dynamiquement la largeur de l'UC avec Fontmetrics.TextWidth associé à MOVE si tu le souhaites... mais attention, si tu en as pas mal dans ta fenêtre, risque de scintillement.
4/ Tu peux par la suite ajouter tout ce que tu veux, encadrement, couleur de fond, etc...
A+
Eric.