Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

gerer l'alignementent du texte

2 réponses
Avatar
Flex
bonjour à tous
dans ma form j'ai définit une région (qui peut etre rectangulaire ou
rectangulaire arrondi).
dans cette région j'ai créeer une zone "entete" rectangulaire, dans cette
derniere j'essaie d'ecrire du texte
mais j'ai un peu de mal pour gerer l'alignement.
j'essaie de faire un truc du genre HautGauche MileuGauche BasGauche (idem
pour droit et centre).
est ce que pouvez m'aidez svp.
Merci

voila un bout de mon code:
?faut il que je continue comme je fait ou y'a d'autre maniére pour gerer
l'alignement?

Sub DrawCaption()
Dim AlignmentCushion As Long '--décalage du texte
Dim ret As Long '--coordonnées
Dim Width As Long
Dim Height As Long

Dim rct As RECT 'rectangle pour coordonnees

AlignmentCushion = 3

'definit la region du header
GetItemClientRect rct, 1, 1, UserControl.ScaleWidth - 2, EnteteHeight

ret = DrawText(UserControl.hDc, strCaption, Len(strCaption), rct,
DT_CALCRECT) '--calcul les coordonnées du rectangle necessaire
Width = rct.Right - rct.Left '--largeur du rectangle du caption
Height = rct.Bottom - rct.Top '--hauteur du rectangle du caption

select case TextAlignment

'' Case xAlignLefttop '--haut gauche
' rct.Top = AlignmentCushion '
rct.Left = AlignmentCushion
rct.Bottom = rct.Top + Height
rct.Right = rct.Left + Width

' Case xAlignLeftBottom '--bas gauche
rct.Top = EnteteHeight- Height - (AlignmentCushion + 1)
rct.Left = AlignmentCushion
rct.Bottom = rct.Top + Height
rct.Right = rct.Left + Width
'......
Case xAlignCenterTop '--haut centre
rct.Top = AlignmentCushion
rct.Left = CLng((EnteteHeight- Width) / 2)
rct.Bottom = rct.Top + Height
rct.Right = rct.Left + Width
ret = DrawText(UserControl.hDc, strCaption, Len(strCaption), rct,
DT_SINGLELINE)
End Sub

Private Sub GetItemClientRect(tR As RECT, ByVal X1 As Long, ByVal Y1 As
Long, ByVal X2 As Long, ByVal Y2 As Long)
SetRect tR, X1, Y1, X2, Y2
End Sub

2 réponses

Avatar
LE TROLL
Salut,

Pas évident d'écrire sur la Form, pourquoi tu ne prends pas des objets
mis en 2D, qui en jouant sur les couleurs, se fondraient dans la Form
(listBox, TextBox)...
---------

"Flex" a écrit dans le message de news:
ef5j0Ou$
bonjour à tous
dans ma form j'ai définit une région (qui peut etre rectangulaire ou
rectangulaire arrondi).
dans cette région j'ai créeer une zone "entete" rectangulaire, dans cette
derniere j'essaie d'ecrire du texte
mais j'ai un peu de mal pour gerer l'alignement.
j'essaie de faire un truc du genre HautGauche MileuGauche BasGauche (idem
pour droit et centre).
est ce que pouvez m'aidez svp.
Merci

voila un bout de mon code:
?faut il que je continue comme je fait ou y'a d'autre maniére pour gerer
l'alignement?

Sub DrawCaption()
Dim AlignmentCushion As Long '--décalage du texte
Dim ret As Long '--coordonnées
Dim Width As Long
Dim Height As Long

Dim rct As RECT 'rectangle pour coordonnees

AlignmentCushion = 3

'definit la region du header
GetItemClientRect rct, 1, 1, UserControl.ScaleWidth - 2, EnteteHeight

ret = DrawText(UserControl.hDc, strCaption, Len(strCaption), rct,
DT_CALCRECT) '--calcul les coordonnées du rectangle necessaire
Width = rct.Right - rct.Left '--largeur du rectangle du caption
Height = rct.Bottom - rct.Top '--hauteur du rectangle du caption

select case TextAlignment

'' Case xAlignLefttop '--haut gauche
' rct.Top = AlignmentCushion '
rct.Left = AlignmentCushion
rct.Bottom = rct.Top + Height
rct.Right = rct.Left + Width

' Case xAlignLeftBottom '--bas gauche
rct.Top = EnteteHeight- Height - (AlignmentCushion + 1)
rct.Left = AlignmentCushion
rct.Bottom = rct.Top + Height
rct.Right = rct.Left + Width
'......
Case xAlignCenterTop '--haut centre
rct.Top = AlignmentCushion
rct.Left = CLng((EnteteHeight- Width) / 2)
rct.Bottom = rct.Top + Height
rct.Right = rct.Left + Width
ret = DrawText(UserControl.hDc, strCaption, Len(strCaption), rct,
DT_SINGLELINE)
End Sub

Private Sub GetItemClientRect(tR As RECT, ByVal X1 As Long, ByVal Y1 As
Long, ByVal X2 As Long, ByVal Y2 As Long)
SetRect tR, X1, Y1, X2, Y2
End Sub





Avatar
Flex
merci le troll
pourquoi je ne prends pas des objets?
Tout simplement parce qu'il s'agit d'un controle activex et quelqu'un ma dit
une fois sur ce newsgroup qu'il valait mieux créer les controles en évitant
d'incorporer d'autres objets.

en fouillant un peu plus je crois que c'est mon api DrawText qui me renvoie
0 donc je vais chercher par la.
Merci encore


"LE TROLL" <le a écrit dans le message de news:
uT3I%23Ax$
Salut,

Pas évident d'écrire sur la Form, pourquoi tu ne prends pas des objets
mis en 2D, qui en jouant sur les couleurs, se fondraient dans la Form
(listBox, TextBox)...
---------

"Flex" a écrit dans le message de news:
ef5j0Ou$
bonjour à tous
dans ma form j'ai définit une région (qui peut etre rectangulaire ou
rectangulaire arrondi).
dans cette région j'ai créeer une zone "entete" rectangulaire, dans
cette derniere j'essaie d'ecrire du texte
mais j'ai un peu de mal pour gerer l'alignement.
j'essaie de faire un truc du genre HautGauche MileuGauche BasGauche (idem
pour droit et centre).
est ce que pouvez m'aidez svp.
Merci

voila un bout de mon code:
?faut il que je continue comme je fait ou y'a d'autre maniére pour gerer
l'alignement?

Sub DrawCaption()
Dim AlignmentCushion As Long '--décalage du texte
Dim ret As Long '--coordonnées
Dim Width As Long
Dim Height As Long

Dim rct As RECT 'rectangle pour coordonnees

AlignmentCushion = 3

'definit la region du header
GetItemClientRect rct, 1, 1, UserControl.ScaleWidth - 2, EnteteHeight

ret = DrawText(UserControl.hDc, strCaption, Len(strCaption), rct,
DT_CALCRECT) '--calcul les coordonnées du rectangle necessaire
Width = rct.Right - rct.Left '--largeur du rectangle du caption
Height = rct.Bottom - rct.Top '--hauteur du rectangle du caption

select case TextAlignment

'' Case xAlignLefttop '--haut gauche
' rct.Top = AlignmentCushion '
rct.Left = AlignmentCushion
rct.Bottom = rct.Top + Height
rct.Right = rct.Left + Width

' Case xAlignLeftBottom '--bas gauche
rct.Top = EnteteHeight- Height - (AlignmentCushion + 1)
rct.Left = AlignmentCushion
rct.Bottom = rct.Top + Height
rct.Right = rct.Left + Width
'......
Case xAlignCenterTop '--haut centre
rct.Top = AlignmentCushion
rct.Left = CLng((EnteteHeight- Width) / 2)
rct.Bottom = rct.Top + Height
rct.Right = rct.Left + Width
ret = DrawText(UserControl.hDc, strCaption, Len(strCaption), rct,
DT_SINGLELINE)
End Sub

Private Sub GetItemClientRect(tR As RECT, ByVal X1 As Long, ByVal Y1 As
Long, ByVal X2 As Long, ByVal Y2 As Long)
SetRect tR, X1, Y1, X2, Y2
End Sub