Entwickler-Ecke
Datenbanken - Grid Spalten, nach größtem Inhalt, automatisch anpassen .?!
LuckyStrike4life - Di 01.07.03 08:51
Titel: Grid Spalten, nach größtem Inhalt, automatisch anpassen .?!
Morgen,
gibt es eine Funktion, beim Grid, die es ermöglicht die Spaltengröße nicht immer nach dem größtem theoretischen Wert anzeigen zu lassen, sondern nach dem tatsächlich größtem Wert?
Da die User später gezwungen sein werden sich vorläufig über den Grid zu informieren, wäre das schon sehr schön wenn mir jemand helfen könnte.
Gruß,
Mardin.
Keldorn - Di 01.07.03 10:33
mit den DB-Sachen arbeite ich nicht, vielleicht gibts da auch was anderes.
Im normalen Grid würde ich die Spalte durchgehen und mit [b]Textwidth[b] die Breite eines Eintrages ermitteln.
in etwa so (ungetestet direkt ins Forum geklimpert):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var maxbreite,i:integer;
begin maxbreite:=0; for i:=0 to stringgrid1.rowcount-1 do maxbreite:=max(maxbreite,stringgrid1.canvas.textwidth(Stringgrid1.cells[1,i]); stringgrid1.colwidths[1]:=maxbreite+4; end; |
edit: ich glaube im swissdelphicenter dazu mal einen Tip gesehen zu haben, gugg auch mal dort nach
mfg Frank
LuckyStrike4life - Mi 02.07.03 08:39
Morgen,
wofür steht stringgrid1 in deinem Quelltext? Delphi meint:
| Zitat: |
| [Fehler] DB4realpas.pas(225) : Undefinierter Bezeichner: 'stringgrid' |
Auch wenn ich dafür den Namen meines Grids einsetze, meint Delphi das gleiche.
Hm.. wo mag der Fehler liegen?
Keldorn - Mi 02.07.03 09:13
| LuckyStrike4life hat folgendes geschrieben: |
Morgen,
wofür steht stringgrid1 in deinem Quelltext? Delphi meint:
Auch wenn ich dafür den Namen meines Grids einsetze, meint Delphi das gleiche.
|
Für dein stringgrid, das du verwendest, es muß der name deines Grids sein. Ich nutze keine DB-sachen, deswegen für das normale Stringgrid.
Wo hast du den Code hingenommen? du mußt die Proc in den private oder public teil der form aufnehmen oder Form1.stringgrid1
mfg Frank
LuckyStrike4life - Mi 02.07.03 10:32
Das Stringgrind1 wohl der Name des normalen Grids ist wahr mir schon klar, deswegen hatte ich ihn auch mit meinem richtigem ausgetauscht.
Leider brachte es auch nichts den Code in den public Bereich zu schreiben ... .
Keldorn - Mi 02.07.03 10:46
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids,math;
type TForm1 = class(TForm) StringGrid1: TStringGrid; procedure FormCreate(Sender: TObject); private Procedure OptimaleSpaltenbreite(Stringgrid:Tstringgrid;Spaltennr:integer); public end;
var Form1: TForm1;
implementation
{$R *.DFM}
Procedure TForm1.OptimaleSpaltenbreite(Stringgrid:Tstringgrid;Spaltennr:integer); var maxbreite,i:integer;
begin maxbreite:=0; for i:=0 to stringgrid.rowcount-1 do maxbreite:=max(maxbreite,stringgrid.canvas.textwidth(Stringgrid.cells[Spaltennr,i])); stringgrid.colwidths[Spaltennr]:=maxbreite+4; end;
procedure TForm1.FormCreate(Sender: TObject); Var i:integer; begin Stringgrid1.Cells[1,0] := 'fdsfsdfsd f '; Stringgrid1.Cells[1,1] := 'fdsfsd '; Stringgrid1.Cells[1,2] := 'fdsfsdfgdffsd f '; Stringgrid1.Cells[1,3] := 'fdsfsdfsdfdgdgd f '; Stringgrid1.Cells[1,4] := 'fdsfsdfgfgdgdfg sd f '; OptimaleSpaltenbreite(StringGrid1,1); end;
end. |
funktioniert
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!