Seite 1 von 1

Höhe XbpStatic feststellen [Erledigt]

Verfasst: Do, 26. Mai 2016 22:44
von Jan
... spät am Abend steh ich etwas auf dem Schlauch ...

Mit XBPSTATIC_TEXT_WORDBREAK kann ich einem XbpStatic sagen, das der übergebene Text mehrzeilig ausgegeben werden soll. Aber finde ich heraus, wie viele Zeilen das werden? Damit ich die Höhe des Static vorab bestimmen kann.

Jan

Re: Höhe XbpStatic feststellen

Verfasst: Fr, 27. Mai 2016 0:18
von brandelh
Was gibt GraQueryString() aus wenn du den Text und die oPS angibst, eigentlich sollte die Funktion wissen wieviel Platz der aktuelle Text bracht.
Ich habe das allerdings nie bei Zeilenumbruch getestet.

Re: Höhe XbpStatic feststellen

Verfasst: Fr, 27. Mai 2016 6:27
von Jan
Hubert,

Danke für den Hinweis, werde ich mal ausprobieren.

Nettes am Rande: Ich wußte das es da irgend eine Funktion gab, mit der man zumindest die Länge eines Textes berechnen kann. Hab die aber in der Hilfe nicht gefunden. Jetzt ist auch klar warum: GraQueryString() fehlt in der Hilfe, sowohl in der 1.9 SL1 als auch in der 2.0! Hab das gerade noch mal kontrolliert.

Jan

Re: Höhe XbpStatic feststellen

Verfasst: Fr, 27. Mai 2016 6:31
von Jan
Hubert,

bist Du Dir mit GraQueryString() wirklich sicher? Meinst Du nicht vielleicht wirklich GraQueryTextbox()?

Jan

Re: Höhe XbpStatic feststellen

Verfasst: Fr, 27. Mai 2016 10:12
von brandelh
Jan hat geschrieben:GraQueryTextbox()?
Jan
Du hast Recht, es ist diese Funktion. Die berechnit nicht nur die Länge, sondern über die 4 Koordinaten auch die Höhe ...

PS: mein Gedächtnis läßt nach :(

Re: Höhe XbpStatic feststellen

Verfasst: Fr, 27. Mai 2016 10:43
von Jan
Hallo Hubert,

stimmt, auch die Höhe. Aber das hilft mir nicht, da ich keine Begrenzung der Zeilenlänge als Parameter übergeben kann. Und damit ist das im einfachsten Fall in der Höhe einfach nur Abhängig von der eingesetzten Fonthöhe.

Im Prinzip brauch ich sowas wie MlCount() in GUI. Inzwischen bin ich soweit, das ich in Gedanken schon ein Gerüst dafür habe, um mir das selber zu schreiben. Das wird dann zwar über ein paar Schleifen laufen, und entsprechende Kontrollen mit GraQuerytextbox(), aber das sollte auch sehr präzise klappen. Wäre halt schön gewesen wenn es irgend sowas, analog zur Memoverarbeitung, schon gibt in Xbase++.

Jan

Re: Höhe XbpStatic feststellen

Verfasst: Fr, 27. Mai 2016 11:01
von brandelh
Hast du mal probiert, was passiert wenn du chr(13) in den Text schreibst ?
Wird dann die Höhe größer, berechnet er den tatsächlich belegten Platz auch bei mehrzeiligen Texten.

Die nötigen Umbrüche musst du aber selbst berechnen, einfach mit fixer Zeichenbreite, komplexer durch Aufteilen der Texte mit der Funktion.
Besonders Blocksatz ist komplex ... aber machbar, siehe MemoPrint() in meiner Druckerklasse ...

Re: Höhe XbpStatic feststellen

Verfasst: Fr, 27. Mai 2016 11:19
von Jan
Hallo Hubert,

ja, das ist das was ich mir überlegt hatte. Immer den Teilstring bis zum nächsten crlf bzw. Textende nehmen, per GraQuerytextbox() schauen wie lang der ist. Wenn länger als die vorgegebene Länge - Leerzeichen um Leerzeichen da rantasten, bei Erreichen der korrekten Position den Reststring ebenso abarbeiten.

Braucht halt ein paar Schleifen. Aber sollte gut gehen.

Jan