Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stringgrid autosize (https://www.delphipraxis.net/134673-stringgrid-autosize.html)

youuu 26. Mai 2009 21:10


Stringgrid autosize
 
Hi,

wie kann man es bewergstelligen, das stringgrid sich automatisch der größe der Wörter anpasst?

quendolineDD 26. Mai 2009 21:19

Re: Stringgrid autosize
 
Schau dir mal Canvas.TextHeight() an

Edit:
Sieht dann ungefähr so aus:
Delphi-Quellcode:
procedure TForm4.StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer;
  var Value: string);
begin
  if StringGrid1.Cells[ACol, ARow] <> '' then
    StringGrid1.RowHeights[ARow] := Canvas.TextHeight(StringGrid1.Cells[ACol, ARow]);
end;

youuu 26. Mai 2009 21:31

Re: Stringgrid autosize
 
Zitat:

Zitat von quendolineDD
Schau dir mal Canvas.TextHeight() an

Edit:
Sieht dann ungefähr so aus:
Delphi-Quellcode:
procedure TForm4.StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer;
  var Value: string);
begin
  if StringGrid1.Cells[ACol, ARow] <> '' then
    StringGrid1.RowHeights[ARow] := Canvas.TextHeight(StringGrid1.Cells[ACol, ARow]);
end;

Ich brauch nicht die Höhe sondern die "weite" logischerweise ;)

Allerdings klappt

Delphi-Quellcode:
StringGridKunden.ColWidths[2] := canvas.TextWidth(StringGridKunden.Cells[2,i+1]);
nicht.

Um genau zu sein wird trotzdem der letzte Buchstabe nicht angezeigt, wie kann das sein?

mkinzler 26. Mai 2009 21:35

Re: Stringgrid autosize
 
Was meinst du mit "klappt nicht"?

youuu 26. Mai 2009 21:38

Re: Stringgrid autosize
 
Zitat:

Zitat von mkinzler
Was meinst du mit "klappt nicht"?

Habe Editiert

Delphi-Quellcode:
StringGridKunden.ColWidths[3] := canvas.TextWidth(StringGridKunden.Cells[3,0]) + 10;
Muss ich machen damit das komplette Wort sichtbar ist

Satty67 26. Mai 2009 21:41

Re: Stringgrid autosize
 
Dir fehlen 10 Pixel?

Wird wohl daran liegen, das die Textausgabe innerhalb der Zelle ist und dadurch die "Ränder" der Zelle zu ColWiths dazugezählt werden muss. Also Zellenbreite <> Breite der Ausgabefläche.

youuu 26. Mai 2009 21:41

Re: Stringgrid autosize
 
Ah ok dann wird es das gewesen sein.

Danke

youuu 26. Mai 2009 21:46

Re: Stringgrid autosize
 
Eine Sache funktioniert leider aber immernoch nicht.

Wenn ich im Event "FormPaint" die Größe abtesten und einstelle, dann allerdings später Daten eintrage und wieder die Größe abtaste
ändert sich die Cellen Weite nicht mehr.

Delphi-Quellcode:
  for i:=0 to RowCustomer - 1 do
  begin
    StringGridKunden.Cells[0,i+1] := UTF8ToString(QueryCustomer.FieldByName('title').AsString);
      if StringGridKunden.ColWidths[0] < canvas.TextWidth(StringGridKunden.Cells[0,i+1]) + 10 then
        StringGridKunden.ColWidths[0] := canvas.TextWidth(StringGridKunden.Cells[0,i+1]) + 10;
  end;
Delphi übernimmt lediglich die Größenänderung im "FormPaint" Event

sx2008 26. Mai 2009 21:50

Re: Stringgrid autosize
 
Da gibt's schon was in der Code-Library:
http://www.delphipraxis.net/internal...ct.php?t=29223


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 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