gerer l'alignementent du texte

Le
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
Vos réponses
Trier par : date / pertinence
LE TROLL
Le #15610781
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" 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





Flex
Le #15610591
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" 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" 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









Publicité
Poster une réponse
Anonyme