Autor Beitrag
LuckyStrike4life
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 196

Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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):

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 196

Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 196

Win 2000, XP, SuSE Linux 8.2
D5 Enterp.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mi 02.07.03 11:46 
ausblenden volle Höhe 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
    { Private-Deklarationen }
    Procedure OptimaleSpaltenbreite(Stringgrid:Tstringgrid;Spaltennr:integer);
  public
    { Public-Deklarationen }
  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)