Autor |
Beitrag |
LuckyStrike4life
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Di 01.07.03 09:51
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.
_________________ ... ich kann doch nichts ...
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Di 01.07.03 11: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
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
LuckyStrike4life 
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Mi 02.07.03 09: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?
_________________ ... ich kann doch nichts ...
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Mi 02.07.03 10: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
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
LuckyStrike4life 
      
Beiträge: 196
Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
|
Verfasst: Mi 02.07.03 11: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 ... .
_________________ ... ich kann doch nichts ...
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Mi 02.07.03 11:46
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
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
|