begin process at 2012 02 13 14:52:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

Débutants

 > 

Imprimer label sur plusieurs lignes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Imprimer label sur plusieurs lignes

mercredi 9 juillet 2008 à 09:01:04 | Imprimer label sur plusieurs lignes

dan93190

bonjour à tous,

J'ai une picturebox qui contient plusieurs contrôls: labels, lignes, shapes,...
quand j'imprime ma picturebox, les contrôls n'apparaissent pas ce qui est tout à fait normal.

J'ai donc deux options pour imprimer un à un mes controls:
   - utiliser printer.line, printer.print
   - utiliser picture1.line, picture1.print

Seulement, dans les deux cas, les textes s'impriment sur une seule ligne alors que les textes qui sont dans mes labels sont sur plusieurs lignes (et les sauts de ligne sont donc géré automatiquement).

Y a-t-il une méthode toute faite ou est-ce que je dois bidouiller pour sauter moi-même les lignes?
Je préfèrerais la première solution car les paramètres des labels sont tous différents (longueur de la zone, largeur de la zone, taille de police du texte, nombre de caractère du texte)

Merci d'avance pour votre aide
mercredi 9 juillet 2008 à 09:40:54 | Re : Imprimer label sur plusieurs lignes

Renfield

Administrateur CodeS-SourceS
Réponse acceptée !
voir API DrawText plutot que la methode Print
mercredi 9 juillet 2008 à 10:07:11 | Re : Imprimer label sur plusieurs lignes

dan93190

Réponse acceptée !
Slt,

merci pour ton aide.
J'ai essayé de l'utiliser mais ça ne marche pas, rien n'apparait dans ma picturebox. Peux-tu me dire ou je me suis planté?
(Je suis allé voir dans www.vbfrance.com/codes/API-DRAWTEXT-EXPLICATIONS-EXEMPLE_2781.aspx)

'Dans un module

Public Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type
Public Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Public Const DT_BOTTOM = &H8
Public Const DT_CALCRECT = &H400
Public Const DT_CENTER = &H1
Public Const DT_EXPANDTABS = &H40
Public Const DT_EXTERNALLEADING = &H200
Public Const DT_LEFT = &H0
Public Const DT_NOCLIP = &H100
Public Const DT_NOPREFIX = &H800
Public Const DT_RIGHT = &H2
Public Const DT_SINGLELINE = &H20
Public Const DT_TABSTOP = &H80
Public Const DT_TOP = &H0
Public Const DT_VCENTER = &H4
Public Const DT_WORDBREAK = &H10


'Dans ma form
      Dim R As RECT
      Dim Ret As Long

      picture2.autoRedraw = true
      R.Bottom = Label1(i).Top + Label1(i).Height
      R.Left = Label1(i).Left
      R.Top = Label1(i).Top
      R.Right = Label1(i).Left + Label1(i).Width
      Ret = DrawText(Me.Picture2.hdc, Label1(i).Caption, Len(Label1(i).Caption), R, DT_TOP + DT_CENTER)
mercredi 9 juillet 2008 à 10:25:11 | Re : Imprimer label sur plusieurs lignes

dan93190

C'est bon j'ai trouvé, il faut mettre en pixel et non twip

Maintenant le texte s'affiche bien, mais pas sur plusieurs lignes. Pourquoi ?
mercredi 9 juillet 2008 à 10:27:10 | Re : Imprimer label sur plusieurs lignes

dan93190

Autant pour moi, cela marche parfaitement, j'avais pas mis DT_WORDBREAK.

Je te remercie beaucoup de m'avoir indiqué cette API.
A+
mercredi 9 juillet 2008 à 10:33:04 | Re : Imprimer label sur plusieurs lignes

Renfield

Administrateur CodeS-SourceS
bien que tu ais trouvé seul...

je te préparais une réponse, que je vais te filer tout de même
mercredi 9 juillet 2008 à 10:33:17 | Re : Imprimer label sur plusieurs lignes

Renfield

Administrateur CodeS-SourceS
Réponse acceptée !
utile de conserver les labels, si, plus pro, tu utilises DrawText ?

DT_TOP + DT_CENTER
ne JAMAIS utiliser +, mais bien Or:
DT_TOP Or DT_CENTER

Ret n'est pas testé ? alors n'ajoute pas cette variable.

Len(Label1(i).Caption)
pas obligatoire, tu peux mettre -1 (lire doc sur cette API)

les APIs fonctionnent en pixels, pour les coordonnées, change le ScaleMode de ta Form, ca roulera..

ajoute enfin un Picture2.Refresh...

au final, j'ai corrigé, et ca me donne le code ci-dessous:
Private Sub Command1_Click()
Dim tR As RECT
Dim oLbl As Label

    Picture2.AutoRedraw = True
    For Each oLbl In Label1
        With tR
            .Left = oLbl.Left
            .Top = oLbl.Top
            .Bottom = .Top + oLbl.Height
            .Right = .Left + oLbl.Width
        End With
        DrawText Picture2.hdc, oLbl.Caption, -1, tR, DT_TOP Or DT_CENTER Or DT_WORDBREAK
    Next oLbl
    Picture2.Refresh
End Sub



Cette discussion est classée dans : label, lignes, imprimer, picturebox, labels


Répondre à ce message

Sujets en rapport avec ce message

Comment imprimer un picturebox [ par luc ] Ma question est trés simple, comment peut'on imprimer un picturebox ( vers une imprimante bien sur ...)Merci Insertion de texte dans un PictureBox [ par GMI ] Pour une application, je dessine des courbes dans un PictureBox et je voudrais écrire dans ce PictureBox les valeurs des minimas et des maximas. Comme imprimer un picture box [ par fred ] bojour,j'ai mis dans un picturebox plusieurs textbox.Mon picturebox a une vscollbar pour faire défiler mes textbox.Comment faire pour imprimer mon pic Je voudrais imprimer des line et des circle [ par cassiopee ] Dans mon prog je creer des line et des circle dans un picturebox. Je voudrais les imprimer mais si j'imprime avecPicture1.paintpicture ...ca ne m'impr Je voudrais imprimer des line et des circle [ par cassiopee ] Dans mon prog je creer des line et des circle dans un picturebox. Je voudrais les imprimer mais si j'imprime avecPicture1.paintpicture ...ca ne m'impr Créé des labels dynamiquement avec index ??? [ par Chriss ] Je sais comment on fait pour créé un label, mais pas plusieurs avec un index....Pouvez-vous m'aider svp.MerciEx sans index pour créé un seul label: imprimer picturebox [ par you ] comment imprimer le contenu d'un picture box Prob avec labels VB [ par edouthijssen ] Bonjour tt le monde,je suis en train de créer un prog pour créer des jaquettes pour CD. Juste une question je recois donc ts les titres et auteurs des G deux question tres importante : [ par CaptainChoc ] la première : Comment on fait pour inmprimmer une imagebox avec un cadre autour ?La deuxième : Est il possible d'imprimer une picture box qui comprend


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,769 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales