Einzelnen Beitrag anzeigen

Mazen

Registriert seit: 6. Okt 2011
66 Beiträge
 
Delphi 7 Professional
 
#12

AW: TStringGrid OnDrawCell - Bestimmte Felder makieren

  Alt 20. Dez 2012, 13:44
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:
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;
Aufgerufen wird es in OnDrawCell

StringGridAlignment(StringGrid1,Rect,ACol,ARow,c.TextAlign,false); Und gesetzt wird der Wert hier

c.TextAlign := taCenter; Hab auch mal probiert im OnDrawCell direkt "taCenter" einzugeben. Hat aber nicht funktioniert, daher muss es an dem oberen Codeschnipsel liegen.
  Mit Zitat antworten Zitat