Expression régulière date

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Ekim
Messages : 215
Inscription : dim. 24/juin/2018 1:20

Re: Expression régulière date

Message par Ekim »

Merci @Marc56 pour ces conseils, je les appliques de suite)
Ekim
Messages : 215
Inscription : dim. 24/juin/2018 1:20

Re: Expression régulière date

Message par Ekim »

Bonsoirs à tous :D

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? :wink:
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Expression régulière date

Message par Marc56 »

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 : 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
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:
Ekim
Messages : 215
Inscription : dim. 24/juin/2018 1:20

Re: Expression régulière date

Message par Ekim »

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