DBGid i zawijanie tekstu (Canvas.TextOut)

DBGid i zawijanie tekstu (Canvas.TextOut)
TL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
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?

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
1

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

Kopiuj
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.

TL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
0

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

TL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
0

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

Kopiuj
Error: identifier idents no member "Cell"
Error: Identifier not found "ACol"
Error: Identifier not found "ARow"
KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
1

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

Kopiuj
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; 

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.