Hallo, habe mir zu diesem Thema 3 folgende Routinen gestrickt (irgendwo im Internet gefunden und angepasst)
Delphi-Quellcode:
procedure TFrameAuftrag.GridPositionenDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var s:
String;
begin
if Sender =
nil then
Exit;
if not (Sender
is TJvStringGrid)
then
Exit;
with Sender
as TJvStringGrid
do
begin
s := Cells[ACol, ARow];
// Canvas.Brush.Color := Farbe;
Canvas.FillRect(Rect);
GrowRect(Rect, -2);
UpdateRowHeight(Sender
as TJvStringGrid, ARow, DrawText(Canvas.Handle, PChar(s), Length(s), Rect, DT_WordBreak) + 4);
end;
end;
procedure TFrameAuftrag.GrowRect(
var Rect: TRect;
const pixel: Integer);
begin
Dec(Rect.Left, pixel);
Inc(Rect.Right, pixel);
Dec(Rect.Top, pixel);
Inc(Rect.Bottom, pixel);
end;
procedure TFrameAuftrag.UpdateRowHeight(sg: TStringGrid;
const iRow, iHeight: Integer);
begin
with GridPositionen
do
if iHeight > RowHeights[iRow]
then
RowHeights[iRow] := iHeight;
end;
Jetzt werden die Zeilen im Grid höher, wenn der Inhalt der Zelle mehr wird, jedoch nicht kleiner, wenn der Inhalt weniger wird. Es funktioniert jedoch, wenn ich das Programm neu starte, wird die Zeilenhöhe wieder korrekt dargestellt. Hat Jemand eine Idee, was ich noch hier ändern müsste?
Danke, Luckner