Einzelnen Beitrag anzeigen

taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#1

DrawText : optimale Breite + Zeilenumbruch kombinieren

  Alt 15. Nov 2008, 19:40
Moin, Moin.

In meiner StringGrid-Komponente gibt es für die Ausgabe der Zellinhalte u. a. die Attribute "optimale Breite" und "Zeilenumbruch". Beide Darstellungsarten funktionieren für sich allein einwandfrei. Schwierigkeiten macht jetzt die Kombination beider Attribute; also "Zeilenumbruch und optimale Breite".

Ich versuche es an einem Beispiel zu erklären:

Delphi-Quellcode:
DIES IST DER TEXT // AusgabeString

+----------+
| | // Standardbreite der Zelle
+----------+

+-----------------+ // "optimale Breite"
|DIES IST DER TEXT| // erforderliche Breite mit TextWidth()
+-----------------+ // berechnen und Spalte anpassen

+----------+ // "Zeilenumbruch"
|DIES IST | // Ausgabe mit DrawText() in das
|DER TEXT | // Standard-Rect der Zelle, DrawText()
+----------+ // liefert die erforderliche HÖHE des CellRect
                    
Die Kombination von "optimale Breite" und "Zeilenumbruch" soll
nun dieses Ergebnis liefern:

+--------+ // "optimale Breite" und "Zeilenumbruch"
|DIES IST| // hierfür sind die Angaben
|DER TEXT| // erforderliche HÖHE und erforderliche BREITE
+--------+ // notwendig um die Zelle anzupassen!
Problem ist, die tatsächlich erforderliche Breite zu bekommen. Ich habe bisher keine API-Funktion gefunden, die man hierzu verwenden könnte, DrawText() gibt als Funktionsergebnis ja nur die erforderliche Höhe zurück.

Meine Idee ist derzeit, nach dem ersten Aufruf von DrawText(), diese Funktion wiederholt solange mit jeweils in der Breite reduziertem Rectangle aufzurufen, bis die erforderliche Höhe größer wird. Der vorletzte Aufruf würde dann die optimale Breite nutzen.

Gibt es da noch eine einfachere und schnellere Lösung?
Ralph
  Mit Zitat antworten Zitat