Text vertikal drucken

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Text vertikal drucken

Beitrag von Koverhage »

Ich muss einen Text vertikal (linke Seite vom Blatt zwischen der Lochung) drucken.

Habe folgendes aus dem Sample print.prg entnommen

Code: Alles auswählen

Local aAttr, ;
      oPS := oPrinter:oPS, ;
      aOldAttr := GraSetAttrString(oPS)
      
aAttr := ARRAY( GRA_AS_COUNT )
aAttr [ GRA_AS_HORIZALIGN ] := GRA_HALIGN_LEFT
aAttr [ GRA_AS_VERTALIGN ]  := GRA_VALIGN_HALF
GraSetAttrString( oPS, aAttr )
GraSetColor(oPS,GRA_CLR_BLACK)

if GraStringAt(oPS,{10,10},"Teststring")
   msgbox("OK")
endif

GraSetAttrString( oPS, aOldAttr )
GraStrinAt gibt .t. zurück, allerdings sehe ich keinen Text auf dem Blatt.

Was mache ich falsch ?
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Text vertikal drucken

Beitrag von brandelh »

Hallo Klaus,

um die Schrift zu drehen, benötigtst du

GRA_AS_ANGLE

eigentlich dachte ich, dass ich die Farbe gleich mit ins Array packen würde, aber
in meiner Druckerklasse mache ich das NICHT ! Eventuell gab es da Probleme, dennoch vorher ist sicherer ;-)

Die Ausrichtung selbst würde ich nicht ändern, die passt meist mit left und bottom (allerdings ändern sich der Ursprung).
In meiner Druckerklasse verwende ich die Drehung der Zeichen ohne Probleme (p.s. genügend Platz vorsehen !)

GRA_AS_ANGLE verwendet aber keine GRAD Angabe !
Ein Beispiel mit Drehung steht auch bei GraStringAt() ...

Code: Alles auswählen

   aAttribNeu :=  {}
   ...
   if ! IsNil(nDrehen) // nDrehen in Grad
      aadd(aAttribNeu, { GRA_AS_ANGLE , HbGradToXppArray(nDrehen,100) } ) // ich brauche hier Winkel Grade
   endif
   if ! IsNil(nFarbe) // eventuell muss man erst die Farbe setzen 
      aAltColor := GraSetColor(::oPS,nFarbe)        // So nur den Fordergrund bestimmen - only foreground color
   endif

   if ! Empty( aAttribNeu ) // und danach die restlichen Attribute ???
      aAltAttr   := ::SetAttrString( aAttribNeu )
   endif
Wenn der zu druckende Text über den möglichen Platz hinaus geht wird er abgeschnitten,
so könnte es sein, dass dein Text im Druckerrand verschwindet ;-)
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Text vertikal drucken

Beitrag von Koverhage »

Es geht noch einfacher mit Express++

Code: Alles auswählen

Local aAttrVertical := array( GRA_AS_COUNT )
Local nVZeile := (oPrinter:nRows / 2)


aAttrVertical[ GRA_AS_ANGLE ] := { 0, 1 }

@nVZeile,0 DCPRINT SAY hkaversion()  FONT '6.Verdana' ;
           ATTRIBUTE aAttrVertical  PRINTER oPrinter
Jetzt muss ich nur sehen, wie ich das mit HKBPRINTPDF / QuickPDF hinbekomme ;-)
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Text vertikal drucken

Beitrag von brandelh »

Hi,

bei QuickPDF gibt es:

Code: Alles auswählen

DrawRotatedText
DrawRotatedTextBox
und bei meiner Klasse kommt noch

Code: Alles auswählen

PrintText( nPosX, nPosY, xData, cAusrichtung, nMaxLen, cArt, xColor, nDrehen )
hinzu, wobei nDrehen die Drehung in Grad angibt.
Gruß
Hubert
Antworten