Autor Beitrag
Nise
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Fr 28.03.03 10:08 
Hallo!!

Brauche Hilfe zu Columns arbeite mit Delphi6 und den zusatz komponenten RAd Sudio!

Das problem ist folgendes

Ich habe 4 Columns(0,1,2,3) und möchte diese die sich in einem DBGrid befinden die Reihenfolge ändern! Das Columns.Items[1] jetzt an 3.Stelle (letzte) ist und das was vorhin an 2.Stelle war soll jetzt an erster stelle sein usw. 3. an zweiter stelle ... Ich möchte das es mit einem popup menü funktioniert!

Ich habe es schon mit diesem Code ausprobiert aber es funktioniert nicht so wie ich es will!
Colde:

// Columns 1
procedure TFmHaupt.KontoExecute(Sender: TObject);
begin
ZiKontDBGP1.FreezeGrid; // IF YOU WANT IT
try
with ZiKontDBGP1.Columns.Items[0] do begin

// Code für die Columns
Columns.Regroup(Columns.Items[0], Columns.GroupsInfo[0], 0, 0);

// Größe der Columns

Columns.Items[0].Width := 70;
Columns.Items[1].Width := 352;
Columns.Items[2].Width := 120;
Columns.Items[3].Width := 200;

end;
finally
ZiKontDBGP1.UnFreezeGrid(true); // IF YOU WANT IT
end;
end;

// Columns 2
procedure TFmHaupt.BezeichnungExecute(Sender: TObject);
begin
ZiKontDBGP1.FreezeGrid; // IF YOU WANT IT
try
with ZiKontDBGP1.Columns.Items[1] do begin

// Code für die Columns
Columns.Regroup(Columns.Items[1], Columns.GroupsInfo[0], 0, 0);

// Größe der Columns
Columns.Items[0].Width := 352;
Columns.Items[1].Width := 120;
Columns.Items[2].Width := 200;
Columns.Items[3].Width := 70;

end;
finally
ZiKontDBGP1.UnFreezeGrid(true); // IF YOU WANT IT
end;
end;

Wie funktioniert das? Kann mir Jemand helfen??

Danke im Vorraus

Mfg Wega
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 28.03.03 14:22 
Hi
Regroup ändert IMHO nur die Gruppierung der Spalten untereinander. Ob's ne Patentlösung gibt weiss ich auch net, aber du kannst die Spalten in der benötigen Reihenfolge hinten anhängen und dann die ursprünglichen Spalten löschen. Etwa so:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
var
   sz  : string;
   i, p: Integer;
   col  : TgpColumn;
begin
   sz  := '1302'; //Reihenfolge der Spalten für den Test
   for i := 1 to 4 do begin
       p  := Ord(sz[i]) - 48;
       col := grd.Columns.Add;  //Neue Spalte am Ende erzeugen
       col.Assign(grd.Columns[p]);  //Gewünschte Spalte zuweisen
   end;
   for i := 0 to 3 do
       grd.Columns.Delete(0); //Ursprüngliche Spalten löschen
end;


Könnte sein, dass es bei vielen Spalten zeitkritisch wird, aber bei vier funktioniert das wunderbar.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...