DBGid i zawijanie tekstu (Canvas.TextOut)

0

Witam
Od dłuższego czasu próbuję "zmusić" DBgrida w Lazarusie do zawijania tekstu w komórkach. Próbowałem już poprzez rysowanie tekstu w Canvas.TextOut (w OnDrawColumnCell), ale niestety ten sposób nie umożliwia łamania tekstu. Czy ktoś ma może pomysł jak coś takiego zrobić a może działający przykład?

1

OnDrawColumnCell powinno zadziałać sprawdziłem na TStringGrid i działa taki kod:

DrawText(TStringGrid(Sender).Canvas.Handle,
    PAnsiChar(TStringGrid(Sender).Cells[ACol, ARow]), //W nowszych Delphi PWideChar
    -1, Rect, DT_LEFT or DT_VCENTER or DT_WORDBREAK);

Oczywiście w celu lepszej estetyki trzeba by zmodyfikować rozmiary obszaru rysowania (parametr Rect) i zrobić marginesy.

0

Niestety: "Error: Identifier not found "DrawText"". Nie wiem czy DBGrid w ogóle obsługuje DrawText?

0

Faktycznie, nie dodałem, po dodaniu są inne błędy:

Error: identifier idents no member "Cell"
Error: Identifier not found "ACol"
Error: Identifier not found "ARow"
1

Ja tak jak pisałem podałem przykład z TStringGrid w TDBGrid trzeba trochę inaczej jakoś tak:

var
  tmpRect: TRect;
begin
  tmpRect:= Rect;
  DrawText(TDBGrid(Sender).Canvas.Handle,
    PChar(Column.Field.DisplayText),
    -1, tmpRect, DT_LEFT or DT_VCENTER or DT_WORDBREAK);
end; 

1 użytkowników online, w tym zalogowanych: 0, gości: 1