Einzelnen Beitrag anzeigen

Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Stringgrid, Zeile automatisch an Textgrösse anpassen

  Alt 23. Apr 2015, 16:33
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
  Mit Zitat antworten Zitat