Ich habe Daten in meiner Datenbank, die in einer Tabelle gedruckt werden sollen. Zur Überprüfung der Textbreite (ob der String in die Zelle passt),
nehme ich GraQueryTextBox. Hab die Funktion Gott sei Dank im Forum gefunden, sowas taucht in der Help-File natürlich wieder nicht auf...
Die Abprüfung in der Tabelle funktioniert auch, Breitenwert des Strings GraQueryTextBox(oPS, cText)[5][1].
Ziel ist es jetzt, über die Tabellenspalten Überschriften setzen zu lassen, und zwar mittig (automatisch) ohne Rumgefuchtel mit Pixelwerten. Das funktioniert auch fast.
Bild: http://imgur.com/a/WCIHs
Die erste Spalte wird nicht mittig betitelt, Grund scheint ein falsches, bzw. unverhältnismäßig großer Rückgabewert von GraQueryTextBox() (514px) für "Artikel / Leistung" zu sein. Im Vergleich: "Max.Preis" ist lediglich 160px breit. Die Pixelangaben beziehen sich natürlich auf Breite der Buchstaben, aber trotzdem scheint was nicht zu passen, denn die Spalte selbst ist 630 Pixel breit.
Nachfolgend mein Code, vllt fällt euch ja was ein, ich weiß nicht weiter...
Danke schonmal!
Code: Alles auswählen
PROCEDURE druckeZKtarif(oPS, aSize, oPrinter) /////Zusatzkosten drucken
LOCAL titelabstand, sDocName, ersteseite, seite, cnt_titel, cnt_proSeite, cnt_rec, pos_rec, beschr, maxpreis, minpreis, flat, kgvon, kgbis, fixpreis, knr, width_titel
holefonts()
DECLARE Ueberschriften[8]
Ueberschriften[1] := "Artikel / Leistung"
Ueberschriften[2] := "Max.Preis"
Ueberschriften[3] := "Min.Preis"
Ueberschriften[4] := "Flat"
Ueberschriften[5] := "KG-von"
Ueberschriften[6] := "KG-bis"
Ueberschriften[7] := "Fixpreis"
Ueberschriften[8] := "Knr."
DECLARE Breiten[8]
Breiten[1] := 630
Breiten[2] := 205
Breiten[3] := 205
Breiten[4] := 205
Breiten[5] := 205
Breiten[6] := 205
Breiten[7] := 205
Breiten[8] := 155
sFoot := "- Seite 1 -"
mLR_Rand := 50
cnt_titel := 1
titelabstand := 0
cnt_proSeite := 1
cnt_rec := 1
pos_rec := mLR_Rand
ersteseite := .T.
seite := 1
mZeile := 500
IF temp_scope == 0
info := "Allgemeine Tarifpositionen"
sDocName := info
ELSEIF temp_scope == 1
info := "Tarifpositionen " + temp_kunname
sDocName := info
ENDIF
sDocName := info
oPrinter:startDoc(sDocName)
DO WHILE ! Eof()
IF ersteseite == .T.
PRINT_NUR_LOGO(oPS, aSize, oPrinter)
PrintTextOnPage(oPS, mLR_Rand +150, 350, info, "" , mFontTitel3, aSize)
minstart := 0
Do While cnt_titel <= 8
titel := ftrim(Ueberschriften[cnt_titel])
Msgbox("Titel: '" + titel + "'")
width_titel := GraQueryTextBox(oPS, titel)[5][1]
? GraQueryTextBox(oPS, titel)
Msgbox("Breite Titel: " + Str(width_titel))
textstart := (Breiten[cnt_titel] / 2) - (width_titel / 2)
PrintTextOnPage(oPS, mLR_Rand + minstart + textstart, mZeile - 10, titel ,"", mFontNormalText, aSize, 45)
minstart += Breiten[cnt_titel]
cnt_titel += 1
EndDo
ENDIF