Aperçu avant impression

Partagez votre expérience de PureBasic avec les autres utilisateurs.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Aperçu avant impression

Message par nico »

Ce code de Freak légèrement adapté pour l'occasion permet de disposer d'un aperçu avant impression sans prétention mais simple et efficace pour de petits fichiers.

Il fonctionne très bien avec les fichiers (*.rtf), de plus si les lignes sont trop larges, elles sont automatiquement scindées en plusieurs lignes ce qui est très pratique.

Ici un exemple qui permet d'avoir un aperçu de l' EditorGadget.
Libre à chacun de l'adapter.

Cela donnera peut-être des idées à Fred pour son éditeur.

Code : Tout sélectionner

; Application autour du code de Freak
; Exemple d'un Aperçu avant impression de l'éditeur

 #OLECMDID_PRINT= 6
 #OLECMDID_PRINTPREVIEW= 7
 #OLECMDID_PASTE = 13
 #OLECMDID_SELECTALL = 17

Enumeration 0 
  #OLECMDEXECOPT_DODEFAULT      
  #OLECMDEXECOPT_PROMPTUSER        
  #OLECMDEXECOPT_DONTPROMPTUSER    
  #OLECMDEXECOPT_SHOWHELP        
EndEnumeration 

Enumeration 0 
    #Window
    #Browser
EndEnumeration 

Enumeration 0 
    #WebGadget
    #Editor
    #Load
    #Preview
EndEnumeration 

Procedure lecture(fichier.s)
If ReadFile(0, fichier)
  While Eof(0)=0
    Texte$ = Texte$+ReadString()+Chr(13)+Chr(10)
  Wend 
    SetGadgetText(#Editor, Texte$)
    CloseFile(0)
Else
  MessageRequester("PureBasic", "Erreur", 0)
EndIf
EndProcedure

Procedure Print_Preview(id.l)
If ExamineDesktops() 
   Width=DesktopWidth(0)
    Height=DesktopHeight(0)

    flags= #PB_Window_MaximizeGadget | #PB_Window_Invisible 
    If OpenWindow(#Browser, 0, 0, width, height,flags, "WebBrowser") 
        If CreateGadgetList(WindowID(#Browser)) 
        WebGadget(#WebGadget, 10, 40, 780, 750, "about:.") 

        WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(#WebGadget), #GWL_USERDATA) 
        
        Repeat 
            While WindowEvent(): Wend 
            Delay(1)
            WebObject\get_Busy(@IsBusy.l) 
        Until IsBusy = 0 

         SendMessage_(GadgetID(id), #EM_SETSEL, 0, -1)
         SendMessage_(GadgetID(id), #WM_COPY, 0, 0)
         SendMessage_(GadgetID(id), #EM_SETSEL, -1, -1)
     
         WebObject\ExecWB( #OLECMDID_SELECTALL, #OLECMDEXECOPT_DODEFAULT, 0, 0)    
         WebObject\ExecWB(#OLECMDID_PASTE, #OLECMDEXECOPT_DODEFAULT, 0, 0)  
         WebObject\ExecWB( #OLECMDID_PRINTPREVIEW, #OLECMDEXECOPT_PROMPTUSER, 0, 0)    
        EndIf                 
    EndIf
EndIf
EndProcedure 


  If OpenWindow(#Window,0,0,400,400,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"EditorGadget") And CreateGadgetList(WindowID(0)) 
    EditorGadget (#Editor,10,40,380,340,#PB_Container_Raised) 
    ButtonGadget(#Load, 10, 10, 100, 20, "Ouvrir un Fichier")    
    ButtonGadget(#Preview, 140, 10, 100, 20, "Print_Preview")
     
    Repeat
      EventID = WaitWindowEvent()
      Select EventID
        Case  #PB_EventGadget
          Select EventGadgetID()
             Case #Load         
                file$ = OpenFileRequester("Please choose file to load", "c:\","*.*|*.*", 0)
                lecture(file$)
      
            Case #Preview
                CloseWindow(#Browser)   
                Print_Preview(#Editor)
                
           EndSelect 
               
        Case  #WM_CLOSE 
              Quit.l=1

      EndSelect       
    Until Quit=1
  EndIf