Druckerausgabe [ERLEDIGT]

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Druckerausgabe [ERLEDIGT]

Beitrag von Pure_Beginner »

Hallo und guten Abend,

ich habe ein wunderschönes Grid mit vielen Daten erstellt.
Wie schaffe ich es nun das ganze zu Drucken ?
Also ordentlich zu Papier zu bringen.

Code: Alles auswählen

EnableExplicit
XIncludeFile "D:\Program Files (x86)\PureBasic (X86)\Includes\esgrid.pbi"
IncludePath ""


Enumeration 20 Step 1
  #WINDOW
  #PANEL
  #GRID
  #BTN_ABBRECHEN
  #BTN_SPEICHERN
  #BTN_DRUCKEN
EndEnumeration

Procedure.i MyCellCallBack(egrid, uMsg, *cellinfo.egridCellInfo)
  Protected result
  Select uMsg
    Case #egrid_cellUpdated
      result=1
      
    Case #egrid_SelectCell
      result=#True
      InvalidateRect_(GadgetID(egrid),0,0)
      
    Case #egrid_FormatCell
      If *cellinfo\row=-1
        *cellinfo\textjustification = #egrid_centerText
      EndIf
      If *cellinfo\row<>-1 And *cellinfo\row=egrid_SelectedRow(egrid)
        
        
        *cellinfo\backcolour = $CCFFCC;$A5F4F9
      EndIf
      
      If *cellinfo\row <> - 1 ; ist nicht der header
        If egrid_GetCellText(egrid, 0, *cellinfo\row) = "Sa" Or egrid_GetCellText(egrid, 0, *cellinfo\row) = "So"
          *cellinfo\backcolour = $99CC99;#Yellow
        EndIf
      EndIf
    Default
      result = #True                     
  EndSelect
  
  ProcedureReturn result
EndProcedure


Procedure Tage_im_Monat(Jahr.i)

  If OpenWindow(#WINDOW, 10, 10, 1650, 900, "Kalender " + Str(Jahr), #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
    
    ButtonGadget(#BTN_ABBRECHEN,1558,840,80,40,"ABBRECHEN")
    ButtonGadget(#BTN_SPEICHERN,10,840,80,40,"SPEICHERN")
    ButtonGadget(#BTN_DRUCKEN,200,840,80,40,"DRUCKEN")
    
    If PanelGadget(#PANEL, 10, 10, 1628,810)
  
      Protected Tage.i, k.i, Ergebnis.i, i.i, Event.i, Quit.i, Weite.i = 96, GadgetID.i
      Protected Tagtext.s
      
      If Jahr % 4 = 0 And  (Jahr % 100 <> 0 Or Jahr % 400 = 0)         ;auf schaltjahr überprüfen
        Tage = 29
      Else
        Tage = 28
      EndIf
      
      Dim Monatstage.i(11)                                              ;array für anzahl der tage
      Monatstage(0) = 31
      Monatstage(1) = Tage
      Monatstage(2) = 31
      Monatstage(3) = 30
      Monatstage(4) = 31
      Monatstage(5) = 30
      Monatstage(6) = 31
      Monatstage(7) = 31
      Monatstage(8) = 30
      Monatstage(9) = 31
      Monatstage(10) = 30
      Monatstage(11) = 31
      
      Dim Monat.s(11)                                                     ;array für monatsnamen
      Monat(0) = "Januar"
      Monat(1) = "Februar"
      Monat(2) = "März"
      Monat(3) = "April"
      Monat(4) = "Mai"
      Monat(5) = "Juni"
      Monat(6) = "Juli"
      Monat(7) = "August"
      Monat(8) = "September"
      Monat(9) = "Oktober"
      Monat(10) = "November"
      Monat(11) = "Dezember"
      
      
      For k = 0 To 11                                             ;schleife für monate
        AddGadgetItem(#PANEL, k, Monat(k) )                            ;panelgadget beschriftung
        egrid_CreateGrid(2+k, 10, 10, 1600, 762, 22,#egrid_NoHeaderButtons|#egrid_GridLines,#egrid_CustomHeader|#egrid_MultiLineText)  ;|#egrid_GridLines,#egrid_CustomHeader|#egrid_MultiLineText
        egrid_CreateCellCallback(2+k, @MyCellCallBack())
        
        egrid_AddColumn(2+k,0,"Tag",35)
        egrid_AddColumn(2+k,1,"",25)
        egrid_AddColumn(2+k,2,"Desktop Visualizer", Weite.i)
        egrid_AddColumn(2+k,3,"Beamer 1 2500 Ansi Lumen",Weite.i)
        egrid_AddColumn(2+k,4,"Beamer 2 2500 Ansi Lumen",Weite.i)
        egrid_AddColumn(2+k,5,"Beamer 3 Full HD", Weite.i)
        egrid_AddColumn(2+k,6,"Laptop 1", Weite.i)
        egrid_AddColumn(2+k,7,"Laptop 2", Weite.i)
        egrid_AddColumn(2+k,8,"Overhead 1", Weite.i)
        egrid_AddColumn(2+k,9,"Overhead 2", Weite.i)
        egrid_AddColumn(2+k,10,"fahrbare Rollbild- leinwand", Weite.i)
        egrid_AddColumn(2+k,11,"Flipchart 1", Weite.i)
        egrid_AddColumn(2+k,12,"Flipchart 2", Weite.i)
        egrid_AddColumn(2+k,13,"Flipchart 3", Weite.i)
        egrid_AddColumn(2+k,14,"Pinnwand 1", Weite.i)
        egrid_AddColumn(2+k,15,"Pinnwand 2", Weite.i)
        egrid_AddColumn(2+k,16,"Pinnwand 3", Weite.i)
        egrid_AddColumn(2+k,17,"Moderator Koffer", Weite.i)

        egrid_SetHeaderHeight(2+k,45)
        
        egrid_SetOption(2+k, #egrid_HeaderBorderColour, #Red)
        egrid_SetOption(2+k, #egrid_SelectionBorderColour, #Blue)
        egrid_SetOption(2+k, #egrid_SelectionBorderWidth, 2)
        egrid_SetOption(2+k, #egrid_GridLineColour, #Black)
        SetActiveGadget(2+k)
        
        egrid_AddRows(2+k,-1, Monatstage(k)) ;100 rows.
        
        
        For i = 1 To Monatstage(k)                                ;schleife für anzahl der tage
          Ergebnis = DayOfWeek(Date (Jahr,1+k,i,0,0,0))            ;aktueller tag ermitteln
          
          Select Ergebnis                                          ;umwandeln in text
            Case 0
              Tagtext = "So"
            Case 1
              Tagtext = "Mo"
            Case 2
              Tagtext = "Di"
            Case 3
              Tagtext = "Mi"
            Case 4
              Tagtext = "Do"
            Case 5
              Tagtext = "Fr"
            Case 6
              Tagtext = "Sa"
          EndSelect
          
          egrid_SetCellText(2+k, 0, i-1, Tagtext)
          egrid_SetCellText(2+k, 1, i-1, Str(i))
          
        Next           
      Next     
      
      
      Repeat
        Event = WaitWindowEvent()
        GadgetID = EventGadget()
        Select GadgetID
          Case #BTN_ABBRECHEN
            End
          Case #BTN_SPEICHERN
          Case #BTN_DRUCKEN
          
            StopDrawing()
        EndSelect
        If Event = #PB_Event_CloseWindow 
          Quit = 1
        EndIf
 
      Until Quit = 1
    EndIf    
  EndIf
  
EndProcedure

Tage_im_Monat(2012)

Wäre für Eure Hilfe sehr dankbar.

Grüße Christian
Zuletzt geändert von Pure_Beginner am 15.01.2013 22:43, insgesamt 1-mal geändert.
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Druckerausgabe

Beitrag von H.Brill »

Sowas suche ich auch schon lange. Hatte bis dato noch nichts
brauchbares gefunden. Deshalb nutze ich immer noch gerne
Frank Abbings Listview.dll. Die hat eine super Druckroutine.

Schade ist nur, daß er an der DLL nicht mehr weitermacht und
sie als Freeware dahin vegetiert.
Hätte mich gefreut, wenn es eine 64-Bit Version davon gäbe.
PB 6.10
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Re: Druckerausgabe

Beitrag von dysti »

Das solltest du dir herunterladen:
http://frabbing.net/prg_listviewdll.php

und hier die Declarationen:

http://www.purebasic.fr/german/viewtopi ... t=Listview


dann kannst du auch drucken
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Re: Druckerausgabe

Beitrag von dysti »

Hallo Heinz,

schön von dir zu lesen.

Vielleicht liest Frank dies ja und stellt eine 64bit-Version her.

Wir sind ja sture Verfechter von Frank´s Listviewdll.

Also, ich persöhnlich vermisse keine Funktion in der Listview.

Für Vorschläge ist Frank ja immer offen.

Vielleicht bekommt er dann noch mal den Dreh, wenn er dies hier liest.

Mal sehen, ob Frank sich äußert. Er liest hier ja mit.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: Druckerausgabe

Beitrag von Pure_Beginner »

Danke für den Tipp,

werde mir den Download mal genauer anschauen.
Grüße
Christian
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Druckerausgabe

Beitrag von H.Brill »

Ja, Franks Druckroutine wäre das wichtigste.
Viele Funktionen der Listview.dll lassen sich
ja mittlerweile sehr gut in PB nachbilden, sei
es nun Drag&Drop oder die vor kurzem hier vor-
gestellte Procedure für editable Cells.

Außerdem hat ja PB schon einen gewissen Satz
an Funktionen für das ListIcon integriert.
PB 6.10
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Druckerausgabe

Beitrag von Danilo »

Pure_Beginner hat geschrieben:ich habe ein wunderschönes Grid mit vielen Daten erstellt.
Wie schaffe ich es nun das ganze zu Drucken ?
Probier mal ob Du mit CaptureGadget() das richtige Ergebnis für Dein ownerdrawn egrid-Gadget bekommst.
Ist dann nur ein Bitmap, was bei vergrößerter Druckerausgabe evtl. pixelig wird. Um das zu vermeiden hilft mMn nur selbst zeichnen, also vektorbasiert (z.B. mit gDrawing/GDI+).
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: Druckerausgabe

Beitrag von Thorsten1867 »

In meinen Programmen erzeuge ich für Druckausgaben von Daten usw. PDF-Dokumente (PurePDF). Diese lassen sich problemlos betrachten und ausdrucken und es gibt auch keine Probleme mit verschiedenen Druckern bzw. Druckeinstellungen.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: Druckerausgabe

Beitrag von Pure_Beginner »

Hallo Danilo,

danke für deinen Tipp, hab mir CaptureGadget angeschaut, wie nicht anders zu erwarten bekomm ich es nicht hin mit der Druckerausgabe.
Bin immer noch Anfänger aber das mit Leidenschaft. :lol:

Hättest du noch einen Tipp wie ich das ganze zu Papier bekomme ?

Grüße
Christian
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: Druckerausgabe

Beitrag von Pure_Beginner »

@Thorsten1867

Hallo Thorsten,

hört sich gut an in PDF wandeln und dann drucken,
leider finde ich kein geeignetes beispiel für meinen Fall.

Wie bekomme ich mein Grid vom Bildschirm in die PDF auf den Drucker ?

Grüße
Christian

nochmals Danke an alle
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Antworten