Hilfe für Drucker gesucht

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

Hilfe für Drucker gesucht

Beitrag von Ironsmurf »

Hallo zusammen

ich möchte gerne meine Datenbank zu Papier bringen.
Habe es als Konsolenprogramm konzipiert.
Leider werde ich nicht aus den Druckerbefehlen schlau
Vieleicht kann mir jemand ein Beispiel geben.

Hier ist die Structure der Datenbank

Code: Alles auswählen

Structure Movie
           Code$
           Name$
           Star$
           Info$
           Regi$
           Jahr$
           Lang$
           Trai$
           Stat$
           Form$
           LiMo$
  EndStructure

 DVD (00144) \ Code$ = ""
  DVD (00144) \ Name$ = ""
  DVD (00144) \ Star$ = ""
  DVD (00144) \ Info$ = ""
  DVD (00144) \ Regi$ = ""
  DVD (00144) \ Jahr$ = ""
  DVD (00144) \ Lang$ = ""
  DVD (00144) \ Trai$ = ""
  DVD (00144) \ Stat$ = ""
  DVD (00144) \ Form$ = ""
  DVD (00144) \ LiMo$ = ""

SortStructuredArray(DVD(), 0, OffsetOf(Movie\Name$), #PB_Sort_String)
  PrintN("")
   For index = 1 To 19999
    AusgabeFilm$ = DVD(index)\Name$

Wie muß das Programm ausehen, damit ich einen alphabetischen Ausdruck bekomme ( Code$ & Name$ ) sind die beiden in Frage kommenden Variablen für den Ausdruck

Vielen Dank für eure Hilfe im voraus.

Es kommt immer auf die Sichtweise des Betrachters an.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Re: Hilfe für Drucker gesucht

Beitrag von scholly »

Ironsmurf hat geschrieben:ich möchte gerne meine Datenbank zu Papier bringen.
Konkret helfen kann ich Dir momentan leider nicht, weil ich mit meiner Video-Verwaltung noch weit davon entfernt bin, aber wäre es nicht eine Option für Dich, die Ausgabe in der gewünschten Form zuerst in ein File zu schreiben und das dann "von Hand" auszudrucken?
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Phil
Beiträge: 32
Registriert: 05.07.2006 10:46

Beitrag von Phil »

Du musst dir deinen Druckbereich einfach wie ein leeres Blatt Papier vorstellen, auf dem du mit der DrawText() Funktion an einer beliebigen Stelle deinen Text "hinstempeln" kannst. Das heißt aber, das du für jede neue Zeile deine "Stempelposition" verändern musst.
Das Beispiel ist nicht ausgereift, soll einfach nur zeigen, wie es prinzipiell geht.
Es druckt beispielsweise auch leere Inhalte aus und beginnt keine neue Seite. Spiel einfach damit rum. Ich hoffe es hilft dir ein bisschen.

Code: Alles auswählen

Structure Movie
           Code$
           Name$
           Star$
           Info$
           Regi$
           Jahr$
           Lang$
           Trai$
           Stat$
           Form$
           LiMo$
  EndStructure
  

Procedure Drucken(DVD.Movie(1)) ; die 1 steht für Array mit einer Dimension

If PrintRequester()
  If StartPrinting("Ausdruck des Arrays")
    
    Breite = PrinterPageWidth()
    Hoehe = PrinterPageHeight()
    mmY = Hoehe / 288 ; 288 mm ist bei mir die Höhe der tatsächlichen Druckseite
    mmX = Breite / 200 ; 200 mm ist bei mir die Breite der tatsächlichen Druckseite
    ptY = mmY * 0.265 ; dieser Faktor ist gemessen im Vergleich mit Word um Schriftgrößen in Punkten anzugeben
    ptX = mmX * 0.265 ; hier wurde einfach der selbe Faktor genommen

    LoadFont(0,"Arial",12*ptY)


    
    ; Ab hier gehts los mit Drucken!
    If StartDrawing(PrinterOutput())
 
      DrawingFont(FontID(0))
      
      For i=1 To 10    
        DrawText(X,i*10*mmY,DVD(i)\Code$)
        DrawText(X+50*mmX,i*10*mmY,DVD(i)\Name$)
      Next i

    StopDrawing() ; Schluss mit Drucken
    EndIf
  StopPrinting()
  EndIf
EndIf

EndProcedure

Dim DVD.Movie(10)
  DVD (3) \ Code$ = "Code1"
  DVD (3) \ Name$ = "Name1"
  DVD (3) \ Star$ = "Star1"
  DVD (3) \ Info$ = "Info1"
  DVD (3) \ Regi$ = "Regi1"
  DVD (3) \ Jahr$ = "Jahr1"
  DVD (3) \ Lang$ = "Lang1"
  DVD (3) \ Trai$ = "Trai1"
  DVD (3) \ Stat$ = "Stat1"
  DVD (3) \ Form$ = "Form1"
  DVD (3) \ LiMo$ = "LiMo1"  
  
  
SortStructuredArray(DVD(), 0, OffsetOf(Movie\Name$), #PB_Sort_String)

Drucken(DVD())
End
PB 5.62 on Win10
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

Beitrag von Ironsmurf »

Vielen Dank erstmal

er druckt schon mal, denn Rest finde ich noch heraus.
Es kommt immer auf die Sichtweise des Betrachters an.
Antworten