// Bei einem Stringgrid werden Spalten zu Zeilen und umgekehrt.
// Damit wird dem Anwender die Möglichkeit gegeben, selbst zu entscheiden,
// welche Daten in der Waagerechten und welche in der Senkrechten
// angezeigt werden. Siehe auch
Stringgrids speichern und laden

// Getestet mit D4 unter Win98

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
StdCtrls,Grids;

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen}
public
{ Public-Deklarationen}
end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure anpassen(grd:TStringGrid);
var x,b,h:integer;
begin
with
grd do begin
b:=ColWidths[0]+gridlinewidth;
h:=rowheights[0]+gridlinewidth;
for x:=1 to colcount-1 do b:=b+colwidths[x]+gridlinewidth;
for x:=1 to rowcount-1 do h:=h+rowheights[x]+gridlinewidth;
clientwidth:=b;
clientheight:=h;
end;
end;

procedure
SwapGrid(grd:TStringgrid);
var tmp:TStringgrid;
x:integer;
begin
tmp:=TStringGrid.create(nil);
tmp.colcount:=grd.rowcount;
tmp.rowcount:=grd.colcount;
for x:=0 to grd.colcount-1 do
tmp.rows[x]:=grd.cols[x];
grd.colcount:=tmp.colcount;
grd.rowcount:=tmp.rowcount;
for x:=0 to grd.colcount-1 do
grd.cols[x]:=tmp.cols[x];
anpassen(grd);
tmp.free;
end;


procedure
grid_fuellen(grd:TStringGrid);
// zur Demonstration
var x,y:integer;
begin
with
grd do begin
colcount:=7;
rowcount:=5;
scrollbars:=ssNone;
for x:=1 to colcount-1 do cells[x,0]:='Spalte '+inttostr(x);
for x:=1 to rowcount-1 do cells[0,x]:='Zeile '+inttostr(x);
for x:=1 to colcount-1 do
for y:=1 to rowcount-1 do cells[x,y]:=inttostr(x)+inttostr(y);
end;
anpassen(grd);
end;

procedure
TForm1.FormCreate(Sender: TObject);
begin
grid_fuellen(StringGrid1);
// damit auch etwas zu sehen ist;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
swapgrid(StringGrid1);
end;

end.


Zugriffe seit 6.9.2001 auf Delphi-Ecke