// 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.
|