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?
0
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;