Wie kann man bei einer StringGrid-Komponente mehrzeiligen Text ausgeben?
Dazu muß man das Zeichnen der Zelleninhalte selber übernehmen. Zu diesem Zweck
schreibt man eine Methode für das OnDrawCell-Ereignis des StringGrids. In dieser Methode
kann man direkt auf das Ausgaberechteck der jeweiligen Zelle zugreifen, es wird in der
Variablen "Rect" übergeben.
Für die Ausgabe von mehrzeiligem Text ist "DrawText" ist die Funktion der Wahl.
Mit dem Parameter DT_CalcRect kann man die Größe des Ausgaberechtecks ermitteln, der
Parameter DT_WordBreak sorgt für den Zeilenumbruch.
Hier mal ein paar Beispielzeilen:
var outRect : Rect;
Dimension des Ausgaberechtecks ermitteln (wird in outRect zurückgegeben):
DrawText(Stringgrid1.Canvas.Handle,PCHar(SText),length(SText),outRect,DT_CalcRect or DT_WordBreak or DT_NoClip);
Text mehrzeilig und horizontal zentriert im Recteck outRect ausgeben:
DrawText(Stringgrid1.Canvas.Handle,PChar(SText),length(SText),outRect,DT_Center or DT_WordBreak);
Text einzeilig und zentriert im Recteck outRect ausgeben:
DrawText(Stringgrid1.Canvas.Handle,PChar(SText),length(SText),outRect,DT_VCenter or DT_Center or DT_SingleLine);
Delphi 1 | Delphi 2 | Delphi 3 | Delphi 4 |
nicht getestet | Version nicht betroffen | getestet |
siehe auch:
Wie kann ich in einer Grid-Komponente für jede Zelle einen anderen Hint
ausgeben?
Wie kann ich bei einer Stringgrid nur bestimmte Zeilen auf Readonly
setzen?
Wie kann ich ein Bild in eine Stringgrid zeichnen?