AW: TStringGrid OnDrawCell - Bestimmte Felder makieren
Zitat:
Delphi-Quellcode:
Gruß
var
f : TFormat; begin if StringGrid1.Objects [ACol, ARow] is TFormat then begin f := TFormat (StringGrid1.Objects [ACol, ARow]); StringGrid1.Canvas.Font.Color := f.Color; StringGrid1.Canvas.Font.Style := f.Style; // usw. end end; |
AW: TStringGrid OnDrawCell - Bestimmte Felder makieren
Vielen Dank :)
Funktioniert genau so wie ich es mir vorgestellt habe. Problem bei meiner Methode wäre auch gewesen wenn ich noch weitere Formatierungen hätte vornehmen wollen wäre das in einem Chaos geendet^^ Kann mir jemand sagen wo hierbei mein Fehler bei der Textausrichtung ist? Den Codeschnipsel hab ich so gefunden:
Delphi-Quellcode:
Aufgerufen wird es in OnDrawCell
procedure TfrmMain.StringGridAlignment(Grid: TStringGrid; Rect: TRect; ACol, ARow: Integer;
Alignment: TAlignment; LineBreak: Boolean); var TextOut: string; begin Grid.Canvas.FillRect(Rect); TextOut := Grid.Cells[ACol,ARow]; if LineBreak = false then begin if Alignment = taLeftJustify then DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_LEFT); if Alignment = taCenter then DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_CENTER); if Alignment = taRightJustify then DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_RIGHT); end else begin if Alignment = taLeftJustify then DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_LEFT+DT_WORDBREAK); if Alignment = taCenter then DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect, DT_CENTER+DT_WORDBREAK); if Alignment = taRightJustify then DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect, DT_RIGHT+DT_WORDBREAK); end; end;
Delphi-Quellcode:
Und gesetzt wird der Wert hier
StringGridAlignment(StringGrid1,Rect,ACol,ARow,c.TextAlign,false);
Delphi-Quellcode:
Hab auch mal probiert im OnDrawCell direkt "taCenter" einzugeben. Hat aber nicht funktioniert, daher muss es an dem oberen Codeschnipsel liegen.
c.TextAlign := taCenter;
|
AW: TStringGrid OnDrawCell - Bestimmte Felder makieren
Versuch es mal mit DT_LEFT or DT_SINGLELINE.
|
AW: TStringGrid OnDrawCell - Bestimmte Felder makieren
Geht leider auch nicht. Der Text bleibt linksbündig.
|
AW: TStringGrid OnDrawCell - Bestimmte Felder makieren
Zitat:
Wenn ja, dann versuch mal die Zellenhöhe anzupassen vor dem Zeichnen (Drawtext). Gruß |
AW: TStringGrid OnDrawCell - Bestimmte Felder makieren
Nein, die Texte in den Zellen sind ausnahmslos kürzer als die Zellen breit sind.
Und einen Linebreak hab ich auch keinen in meinem Text. |
AW: TStringGrid OnDrawCell - Bestimmte Felder makieren
hasst Du dem Debugger mal geprüft ob Du in
Delphi-Quellcode:
ankommst?
if Alignment = taCenter then
|
AW: TStringGrid OnDrawCell - Bestimmte Felder makieren
Ja hab ich schon gemacht. Da kommt er hin.
|
AW: TStringGrid OnDrawCell - Bestimmte Felder makieren
Zitat:
Zitat:
Delphi-Quellcode:
StringGridAlignment (StringGrid1, Rect, ACol, ARow, taCenter, False)
wird der Zelleninhalt zentriert ausgegeben. Gruß |
AW: TStringGrid OnDrawCell - Bestimmte Felder makieren
Lasse ich die letzte Zeile, also
Delphi-Quellcode:
weg, dann ist der Text zwar zentriert, aber nicht mehr fett :/
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
Laut Hilfe soll es für TextRec() einen fünften Parameter geben, "Textflag", setze ich den aber kommt die Meldung "zu viele Parameter"... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz