Expression régulière date
Re: Expression régulière date
Merci @Marc56 pour ces conseils, je les appliques de suite)
Re: Expression régulière date
Bonsoirs à tous
je reviens vers vous pour vous montrer le résulta
tout est nickel sauf parfois les adresses se chevauchent, mais cela reste superficiel bien entendu))
dites moi se que vous en pensez svp?
je reviens vers vous pour vous montrer le résulta
Code : Tout sélectionner
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?
Re: Expression régulière date
Tu peux obtenir un affichage complet quelque soit le nombre d'articles en utilisant:
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.
- PathCursorY() qui donne la nouvelle position de Y après écriture
- VectorTextHeight() qui donne la taille tu bloc de texte.
Code : Tout sélectionner
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
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.
Re: Expression régulière date
@Marc56 ça c'est du lourd) t'es un winner là il y a rien à dire)
merci
merci