PureBasic

Forums PureBasic
Nous sommes le Mer 17/Juil/2019 15:42

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 19 messages ]  Aller à la page Précédente  1, 2
Auteur Message
 Sujet du message: Re: Expression régulière date
MessagePosté: Lun 15/Avr/2019 19:21 
Hors ligne

Inscription: Dim 24/Juin/2018 1:20
Messages: 95
Merci @Marc56 pour ces conseils, je les appliques de suite)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Expression régulière date
MessagePosté: Mar 16/Avr/2019 20:08 
Hors ligne

Inscription: Dim 24/Juin/2018 1:20
Messages: 95
Bonsoirs à tous :D

je reviens vers vous pour vous montrer le résulta

Code:
Window=OpenWindow(#PB_Any, 0, 0, 400, 320, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)

If Window
   ListIcon_ITEM = ListIconGadget(#PB_Any, 0, 0, 400, 300, "CODEGAN", 42,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_HeaderDragDrop|#PB_ListIcon_AlwaysShowSelection)
   
   AddGadgetColumn(ListIcon_ITEM, 1, "EAN",75)
   AddGadgetColumn(ListIcon_ITEM, 2, "PCB", 45)
   AddGadgetColumn(ListIcon_ITEM, 3, "Description", 100)
   AddGadgetColumn(ListIcon_ITEM, 4, "ADRESSE", 75)
   
   Button_Impr = ButtonGadget(#PB_Any, 0, 300, 70, 20, "Imprimer")
EndIf

For i=0 To 5
   AddGadgetItem(ListIcon_ITEM, i,Str(Random(4552,1224))+Chr(10)+"1245764974"+Str(Random(988,124))+Chr(10)+Str(Random(10,5))+Chr(10)+"Produit "+Str(i)+Chr(10)+"30/04/19 > 37-035-02 > 32]]30/04/19 > 36-042-05 > 42]]30/04/19 > 36-090-03 > 72]]")
Next i

SetGadgetItemText(ListIcon_ITEM,3, "30/04/19 > 37-035-02 > 32]]30/04/19 > 36-042-05 > 42]]30/04/19 > 36-090-03 > 72]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]", 4)


Repeat
   Event = WaitWindowEvent()
   WindowID = EventWindow()
   GadgetID = EventGadget()
   EventType = EventType()
   
   Select GadgetID
      Case Button_Impr   
         
         If PrintRequester()
            If StartPrinting("Liste à contrôler")
               
               If Not LoadFont(0, "Arial", 12)
                  Debug "Font Arial non chargeable!"
               EndIf
               
               StartVectorDrawing(PrinterVectorOutput(#PB_Unit_Millimeter))
               VectorFont(FontID(0),3)
               MovePathCursor(5,5)
               ;DrawVectorText("DESCRIPTION                   -G13    -PCB")
               
               For ln=0 To 5
                  MovePathCursor(5, ln * 30 + 20)
                  
                  codegan$ = GetGadgetItemText(ListIcon_ITEM, ln,0)
                  ean$ = GetGadgetItemText(ListIcon_ITEM, ln,1)
                  pcb$ = GetGadgetItemText(ListIcon_ITEM, ln,2)
                  desctmp$ = LSet(Left(GetGadgetItemText(ListIcon_ITEM, ln,3),25),25,"_")
                  adr$ = ReplaceString(GetGadgetItemText(ListIcon_ITEM, ln,4),"]]",#CRLF$)
                  
                  DrawVectorText(desctmp$+" "+"G13..."+Right(ean$,3)+" PCB("+RSet(pcb$,2,"0")+")")
                  MovePathCursor(3, 0, #PB_Path_Relative)
                  DrawVectorText(adr$)
               Next ln
               
               StopVectorDrawing()
               StopPrinting()
            EndIf
         Else
            Debug "Erreur de parametrage d'imprimante"
         EndIf
         
   EndSelect
         
Until Event = #PB_Event_CloseWindow


tout est nickel sauf parfois les adresses se chevauchent, mais cela reste superficiel bien entendu))

dites moi se que vous en pensez svp? :wink:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Expression régulière date
MessagePosté: Mer 17/Avr/2019 8:36 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1579
Tu peux obtenir un affichage complet quelque soit le nombre d'articles en utilisant:

  • PathCursorY() qui donne la nouvelle position de Y après écriture
  • VectorTextHeight() qui donne la taille tu bloc de texte.
Code:
Window=OpenWindow(#PB_Any, 0, 0, 400, 320, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)

If Window
    ListIcon_ITEM = ListIconGadget(#PB_Any, 0, 0, 400, 300, "CODEGAN", 42,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_HeaderDragDrop|#PB_ListIcon_AlwaysShowSelection)
   
    AddGadgetColumn(ListIcon_ITEM, 1, "EAN",75)
    AddGadgetColumn(ListIcon_ITEM, 2, "PCB", 45)
    AddGadgetColumn(ListIcon_ITEM, 3, "Description", 100)
    AddGadgetColumn(ListIcon_ITEM, 4, "ADRESSE", 75)
   
    Button_Impr = ButtonGadget(#PB_Any, 0, 300, 70, 20, "Imprimer")
EndIf

For i=0 To 5
    AddGadgetItem(ListIcon_ITEM, i,Str(Random(4552,1224))+Chr(10)+"1245764974"+Str(Random(988,124))+Chr(10)+Str(Random(10,5))+Chr(10)+"Produit "+Str(i)+Chr(10)+"30/04/19 > 37-035-02 > 32]]30/04/19 > 36-042-05 > 42]]30/04/19 > 36-090-03 > 72]]")
Next i

SetGadgetItemText(ListIcon_ITEM,3, "30/04/19 > 37-035-02 > 32]]30/04/19 > 36-042-05 > 42]]30/04/19 > 36-090-03 > 72]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]30/04/19 > 37-035-02 > 32]]", 4)


Repeat
    Event = WaitWindowEvent()
    WindowID = EventWindow()
    GadgetID = EventGadget()
    EventType = EventType()
   
    Select GadgetID
        Case Button_Impr   
           
            If PrintRequester()
                If StartPrinting("Liste à contrôler")
                   
                    If Not LoadFont(0, "Arial", 12)
                        Debug "Font Arial non chargeable!"
                    EndIf
                   
                    StartVectorDrawing(PrinterVectorOutput(#PB_Unit_Millimeter))
                    VectorFont(FontID(0),3)
                    MovePathCursor(5,5)
                    ;DrawVectorText("DESCRIPTION                   -G13    -PCB")
                   
                    For ln=0 To 5
                        ; à 5 mm en dessous de la position Y
                        MovePathCursor(5, PathCursorY())
                       
                        codegan$ = GetGadgetItemText(ListIcon_ITEM, ln,0)
                        ean$ = GetGadgetItemText(ListIcon_ITEM, ln,1)
                        pcb$ = GetGadgetItemText(ListIcon_ITEM, ln,2)
                        desctmp$ = LSet(Left(GetGadgetItemText(ListIcon_ITEM, ln,3),25),25,"_")
                       
                        adr$ = ReplaceString(GetGadgetItemText(ListIcon_ITEM, ln,4),"]]",#CRLF$)
                        DrawVectorText(desctmp$+" "+"G13..."+Right(ean$,3)+" PCB("+RSet(pcb$,2,"0")+")")
                       
                        ; Décaler de 3 mm à droite
                        MovePathCursor(3, 0, #PB_Path_Relative)
                       
                        ; Imprimer le bloc des références
                        DrawVectorText(adr$)
                       
                        ; Décaler de 5 mm en dessous de la hauteur du bloc de texte
                        MovePathCursor(0, VectorTextHeight(adr$) + 5, #PB_Path_Relative)
                    Next ln
                   
                    StopVectorDrawing()
                    StopPrinting()
                EndIf
            Else
                Debug "Erreur de parametrage d'imprimante"
            EndIf
           
    EndSelect
   
Until Event = #PB_Event_CloseWindow


Image

Sachant que tu peux connaitre la hauteur d'un bloc de texte et la hauteur d'une page, tu peux faire en sorte de ne jamais couper (saut de page) en milieu d'article et même insérer titre et numéro de page à chaque fois.

C'est beau PB et la lib Vector. Pas besoin de gestionnaire de rapport (type Crystal Reports). Code réalisé uniquement avec les fonctions internes = application pérenne.

:wink:

_________________
HP de 2012 - Intel i3-3220 @3.30 GHz, 2 coeurs, 4 threads - RAM 16 Go - Nvidia GT 620 1920x1080 DPI 100%
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Expression régulière date
MessagePosté: Mer 17/Avr/2019 20:32 
Hors ligne

Inscription: Dim 24/Juin/2018 1:20
Messages: 95
@Marc56 ça c'est du lourd) t'es un winner là il y a rien à dire)
merci :D


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 19 messages ]  Aller à la page Précédente  1, 2

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye