PureBasic
https://www.purebasic.fr/french/

Expression régulière date
https://www.purebasic.fr/french/viewtopic.php?f=1&t=17644
Page 2 sur 2

Auteur:  Ekim [ Lun 15/Avr/2019 19:21 ]
Sujet du message:  Re: Expression régulière date

Merci @Marc56 pour ces conseils, je les appliques de suite)

Auteur:  Ekim [ Mar 16/Avr/2019 20:08 ]
Sujet du message:  Re: Expression régulière date

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:

Auteur:  Marc56 [ Mer 17/Avr/2019 8:36 ]
Sujet du message:  Re: Expression régulière date

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:

Auteur:  Ekim [ Mer 17/Avr/2019 20:32 ]
Sujet du message:  Re: Expression régulière date

@Marc56 ça c'est du lourd) t'es un winner là il y a rien à dire)
merci :D

Page 2 sur 2 Heures au format UTC + 1 heure
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/