AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Stringgrid, Zeile automatisch an Textgrösse anpassen
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid, Zeile automatisch an Textgrösse anpassen

Ein Thema von Luckner · begonnen am 8. Dez 2014 · letzter Beitrag vom 19. Mai 2015
 
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#15

AW: Stringgrid, Zeile automatisch an Textgrösse anpassen

  Alt 8. Mai 2015, 20:04
sitze mal wieder an dem Stringrid und versuche Deinen Hinweis umzusetzen.
Sorry, ich hatte Deine Hilfesuche leider vergessen und daher Danke für die Erinnerung per PN.


Ein kleines schnell zusammengetipptes Beispiel, wie man so etwas machen könnte.

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, JvExGrids, JvStringGrid;

type
  TForm2 = class(TForm)
    JvStringGrid1: TJvStringGrid;
    procedure JvStringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure SetMaxRowHeight(AGrid: TJvStringGrid; ARow: Integer);
const
  cAddHeight = 4;
var
  lTextHeigth: Integer;
  lMaxRowHeight: Integer;
  liZ1: Integer;
  lBitmap: TBitmap;
  lText: String;
  lRect: TRect;
begin
  lMaxRowHeight := AGrid.DefaultRowHeight;

  lBitmap := TBitmap.Create;
  lBitmap.Canvas.Font := AGrid.Font;

  for liZ1 := 0 to AGrid.ColCount - 1 do
   begin
    lText := AGrid.Cells[liZ1, ARow];
    lTextHeigth := DrawText(lBitmap.Canvas.Handle, PChar(lText), Length(lText), lRect, DT_WordBreak or DT_NOCLIP) + cAddHeight;
    if (lTextHeigth > lMaxRowHeight) then
     begin
      lMaxRowHeight := lTextHeigth;
     end;
   end;

  lBitmap.Free;

  if (AGrid.RowHeights[ARow] <> lMaxRowHeight) then
   begin
    AGrid.RowHeights[ARow] := lMaxRowHeight;
   end;

end;


procedure TForm2.JvStringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  lText: String;
  lGrid: TJvStringGrid;
begin

  lGrid := TJvStringGrid(Sender);

  lText := lGrid.Cells[ACol, ARow];
  lGrid.Canvas.FillRect(Rect);
  Dec(Rect.Left, -2);
  Inc(Rect.Right, -2);
  Dec(Rect.Top, -2);
  Inc(Rect.Bottom, -2);
  DrawText(lGrid.Canvas.Handle, PChar(lText), Length(lText), Rect, DT_WordBreak);

  SetMaxRowHeight(lGrid ,ARow);

end;

end.
Ist mit Sicherheit noch verbesserungswürdig und soll als Gedankenanstoß dienen.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz