| 
| Autor | Beitrag |  
| Bronstein 
          Beiträge: 578
 Erhaltene Danke: 1
 
 WIN XP
 Delphi 6 / Delphi 2006 / Delphi XE
 
 | 
Verfasst: Sa 11.08.12 11:33 
 
Hallo,
 ich habe zwei NextGrid die ich zur Laufzeit erstelle.
 Jetzt möchte ich zum einen, dass man eine ganze Zeile von einem NextGrid zum anderen verschieben kann und zum anderen auch noch einzelne Zeilen innerhalb eines NextGrid verschieben kann.
 Das verschieben innerhalb hatte funktioniert durch die Eigenschaften die man im NextGrid einstellen kann.
 Jetzt habe ich jedoch die DragDrop Ereignisse belegt, damit man auch zwischen zwei NextGrids Zeilen verschieben kann.
 Das funktioniert jetzt, jedoch funktioniert das Verschieben innerhalb des NextGrids nicht mehr.
 Was muss ich da machen. Hier mal der Code:
 												| 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:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 91:
 92:
 93:
 94:
 95:
 96:
 97:
 98:
 99:
 100:
 101:
 102:
 103:
 104:
 105:
 106:
 107:
 108:
 109:
 110:
 111:
 112:
 113:
 114:
 115:
 116:
 117:
 118:
 119:
 120:
 121:
 122:
 123:
 124:
 
 | unit Unit1;
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, NxScrollControl, NxCustomGridControl, NxCustomGrid, NxGrid,
 NxColumns, NxColumnClasses;
 
 type
 TForm1 = class(TForm)
 procedure NextGridDragDrop(Sender, Source: TObject; X, Y: Integer);
 procedure NextGridDragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
 procedure NextGridMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
 procedure FormCreate(Sender: TObject);
 private
 
 arrNxGrid: array of TNextGrid;
 public
 
 end;
 
 var
 Form1: TForm1;
 
 implementation
 
 {$R *.dfm}
 
 procedure TForm1.NextGridDragDrop(Sender, Source: TObject; X, Y: Integer);
 var
 Punkt: TPoint;
 Quell_Row, i: Integer;
 begin
 
 if (Source is TNextGrid) and (Sender is TNextGrid) then
 begin
 if (Source as TNextGrid).Name <> (Sender as TNextGrid).name then
 begin
 Punkt.X := X;
 Punkt.Y := Y;
 
 for i := 0 to (Source as TNextGrid).Columns.Count-1 do
 begin
 if i = 0 then
 (Sender as TNextGrid).AddRow(1);
 (Sender as TNextGrid).Cell[i, (Sender as TNextGrid).LastAddedRow].AsString := (Source as TNextGrid).Cell[i, (Source as TNextGrid).SelectedRow].AsString
 end;
 (Source as TNextGrid).deleteRow((Source as TNextGrid).SelectedRow);
 end
 else
 begin
 end;
 end;
 
 end;
 
 procedure TForm1.NextGridDragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
 begin
 Accept := Source is TNextGrid;
 end;
 
 procedure TForm1.NextGridMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
 begin
 if Button = mbLeft then
 with Sender as TNextGrid do
 begin
 BeginDrag(True);
 end;
 end;
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 SetLength(arrNxGrid, 2);
 arrNxGrid[0] := TNextGrid.Create(Form1);
 arrNxGrid[0].Parent := Form1;
 arrNxGrid[0].Options := [goRowMoving, goHeader, goSelectFullRow];
 arrNxGrid[0].OnDragDrop := NextGridDragDrop;
 arrNxGrid[0].OnDragOver := NextGridDragOver;
 arrNxGrid[0].OnMouseDown := NextGridMouseDown;
 arrNxGrid[0].Columns.Add(TNxTextColumn);
 arrNxGrid[0].Columns[arrNxGrid[0].Columns.Count-1].Name := 'S11';
 arrNxGrid[0].Columns[arrNxGrid[0].Columns.Count-1].Header.Caption := 'S1';
 arrNxGrid[0].Columns.Add(TNxTextColumn);
 arrNxGrid[0].Columns[arrNxGrid[0].Columns.Count-1].Name := 'S12';
 arrNxGrid[0].Columns[arrNxGrid[0].Columns.Count-1].Header.Caption := 'S2';
 arrNxGrid[0].Left := 0;
 arrNxGrid[0].Width := 200;
 arrNxGrid[0].Top := 0;
 arrNxGrid[0].Height := 400;
 
 arrNxGrid[1] := TNextGrid.Create(Form1);
 arrNxGrid[1].Parent := Form1;
 arrNxGrid[1].Options := [goRowMoving, goHeader, goSelectFullRow];
 arrNxGrid[1].OnDragDrop := NextGridDragDrop;
 arrNxGrid[1].OnDragOver := NextGridDragOver;
 arrNxGrid[1].OnMouseDown := NextGridMouseDown;
 arrNxGrid[1].Columns.Add(TNxTextColumn);
 arrNxGrid[1].Columns[arrNxGrid[1].Columns.Count-1].Name := 'S21';
 arrNxGrid[1].Columns[arrNxGrid[1].Columns.Count-1].Header.Caption := 'S1';
 arrNxGrid[1].Columns.Add(TNxTextColumn);
 arrNxGrid[1].Columns[arrNxGrid[1].Columns.Count-1].Name := 'S22';
 arrNxGrid[1].Columns[arrNxGrid[1].Columns.Count-1].Header.Caption := 'S2';
 arrNxGrid[1].Left := 201;
 arrNxGrid[1].Width := 200;
 arrNxGrid[1].Top := 0;
 arrNxGrid[1].Height := 400;
 
 arrNxGrid[0].AddRow();
 arrNxGrid[0].CellByName[0, arrNxGrid[0].LastAddedRow].AsString := '1';
 arrNxGrid[0].CellByName[1, arrNxGrid[0].LastAddedRow].AsString := 'A';
 
 arrNxGrid[0].AddRow();
 arrNxGrid[0].CellByName[0, arrNxGrid[0].LastAddedRow].AsString := '2';
 arrNxGrid[0].CellByName[1, arrNxGrid[0].LastAddedRow].AsString := 'B';
 
 end;
 
 end.
 | _________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
 |  |  |  
| Bronstein  
          Beiträge: 578
 Erhaltene Danke: 1
 
 WIN XP
 Delphi 6 / Delphi 2006 / Delphi XE
 
 | 
Verfasst: Sa 11.08.12 12:52 
 
Ich habs hinbekommen, hier nochmal der komplette Code:
 												| 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:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 91:
 92:
 93:
 94:
 95:
 96:
 97:
 98:
 99:
 100:
 101:
 102:
 103:
 104:
 105:
 106:
 107:
 108:
 109:
 110:
 111:
 112:
 113:
 114:
 115:
 116:
 117:
 118:
 119:
 120:
 121:
 122:
 123:
 124:
 125:
 126:
 127:
 128:
 129:
 130:
 131:
 132:
 
 | unit Unit1;
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, NxScrollControl, NxCustomGridControl, NxCustomGrid, NxGrid,
 NxColumns, NxColumnClasses;
 
 type
 TForm1 = class(TForm)
 NextGrid1: TNextGrid;
 procedure NextGridDragDrop(Sender, Source: TObject; X, Y: Integer);
 procedure NextGridDragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
 procedure NextGridMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
 procedure FormCreate(Sender: TObject);
 private
 
 arrNxGrid: array of TNextGrid;
 public
 
 end;
 
 var
 Form1: TForm1;
 
 implementation
 
 {$R *.dfm}
 
 procedure TForm1.NextGridDragDrop(Sender, Source: TObject; X, Y: Integer);
 var
 i: Integer;
 begin
 if (Source is TNextGrid) and (Sender is TNextGrid) then
 begin
 if (Source as TNextGrid).Name <> (Sender as TNextGrid).name then
 begin
 for i := 0 to (Source as TNextGrid).Columns.Count-1 do
 begin
 if i = 0 then
 (Sender as TNextGrid).AddRow(1);
 (Sender as TNextGrid).Cell[i, (Sender as TNextGrid).LastAddedRow].AsString := (Source as TNextGrid).Cell[i, (Source as TNextGrid).SelectedRow].AsString
 end;
 (Source as TNextGrid).deleteRow((Source as TNextGrid).SelectedRow);
 end
 else
 begin
 (Source as TNextGrid).MoveRow((Source as TNextGrid).SelectedRow, (Source as TNextGrid).GetRowAtPos(X, Y));
 (Source as TNextGrid).selectedRow := (Source as TNextGrid).GetRowAtPos(X, Y);
 end;
 end;
 end;
 
 procedure TForm1.NextGridDragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
 begin
 Accept := Source is TNextGrid;
 end;
 
 procedure TForm1.NextGridMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
 begin
 if Button = mbLeft then
 with Sender as TNextGrid do
 begin
 BeginDrag(True);
 end;
 end;
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 SetLength(arrNxGrid, 2);
 arrNxGrid[0] := TNextGrid.Create(Form1);
 arrNxGrid[0].Parent := Form1;
 arrNxGrid[0].Options := [goRowMoving, goHeader, goSelectFullRow];
 arrNxGrid[0].Name := 'NG1';
 arrNxGrid[0].OnDragDrop := NextGridDragDrop;
 arrNxGrid[0].OnDragOver := NextGridDragOver;
 arrNxGrid[0].OnMouseDown := NextGridMouseDown;
 arrNxGrid[0].Columns.Add(TNxTextColumn);
 arrNxGrid[0].Columns[arrNxGrid[0].Columns.Count-1].Name := 'S11';
 arrNxGrid[0].Columns[arrNxGrid[0].Columns.Count-1].Header.Caption := 'S1';
 arrNxGrid[0].Columns.Add(TNxTextColumn);
 arrNxGrid[0].Columns[arrNxGrid[0].Columns.Count-1].Name := 'S12';
 arrNxGrid[0].Columns[arrNxGrid[0].Columns.Count-1].Header.Caption := 'S2';
 arrNxGrid[0].Left := 0;
 arrNxGrid[0].Width := 200;
 arrNxGrid[0].Top := 0;
 arrNxGrid[0].Height := 400;
 
 arrNxGrid[1] := TNextGrid.Create(Form1);
 arrNxGrid[1].Parent := Form1;
 arrNxGrid[1].Options := [goRowMoving, goHeader, goSelectFullRow];
 arrNxGrid[1].Name := 'NG2';
 arrNxGrid[1].OnDragDrop := NextGridDragDrop;
 arrNxGrid[1].OnDragOver := NextGridDragOver;
 arrNxGrid[1].OnMouseDown := NextGridMouseDown;
 arrNxGrid[1].Columns.Add(TNxTextColumn);
 arrNxGrid[1].Columns[arrNxGrid[1].Columns.Count-1].Name := 'S21';
 arrNxGrid[1].Columns[arrNxGrid[1].Columns.Count-1].Header.Caption := 'S1';
 arrNxGrid[1].Columns.Add(TNxTextColumn);
 arrNxGrid[1].Columns[arrNxGrid[1].Columns.Count-1].Name := 'S22';
 arrNxGrid[1].Columns[arrNxGrid[1].Columns.Count-1].Header.Caption := 'S2';
 arrNxGrid[1].Left := 201;
 arrNxGrid[1].Width := 200;
 arrNxGrid[1].Top := 0;
 arrNxGrid[1].Height := 400;
 
 arrNxGrid[0].AddRow();
 arrNxGrid[0].CellByName[0, arrNxGrid[0].LastAddedRow].AsString := '1';
 arrNxGrid[0].CellByName[1, arrNxGrid[0].LastAddedRow].AsString := 'A';
 
 arrNxGrid[0].AddRow();
 arrNxGrid[0].CellByName[0, arrNxGrid[0].LastAddedRow].AsString := '2';
 arrNxGrid[0].CellByName[1, arrNxGrid[0].LastAddedRow].AsString := 'B';
 
 arrNxGrid[0].AddRow();
 arrNxGrid[0].CellByName[0, arrNxGrid[0].LastAddedRow].AsString := '3';
 arrNxGrid[0].CellByName[1, arrNxGrid[0].LastAddedRow].AsString := 'C';
 
 arrNxGrid[0].AddRow();
 arrNxGrid[0].CellByName[0, arrNxGrid[0].LastAddedRow].AsString := '4';
 arrNxGrid[0].CellByName[1, arrNxGrid[0].LastAddedRow].AsString := 'D';
 
 end;
 
 end.
 | _________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
 |  |  |  
| rizla 
          Beiträge: 417
 Erhaltene Danke: 2
 
 XP
 FPC mit Lazarus
 
 | 
Verfasst: So 12.08.12 05:34 
 
Hi!
Danke für den Hinweis / Code!
 Gibt es einen Grund dafür, daß Du das Grid im OnCreate erzeugst / beschriftest / definierst?
 
 Beste Grüße
 
 r!a
 _________________ if you have what they want - they'll find a way to take it (bruce sterling)
 WOW - 10 JAHRE Mitglied beim Delphi-Forum. Wie die Zeit vergeht, Freunde.
 |  |  |  
| Bronstein  
          Beiträge: 578
 Erhaltene Danke: 1
 
 WIN XP
 Delphi 6 / Delphi 2006 / Delphi XE
 
 | 
Verfasst: So 12.08.12 12:00 
 
Hallo,
ja den gibt es, da ich soviel Grids erzeuge wie wir Maschinen in unserer Fetigung haben.
 
 Es handelt sich hier nur um ein Testprojekt wo ich die Funktionen des NextGrid testen wollte, später gibt das ganze eine abgespeckte Version eines PPS.
 _________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
 |  |  |  
| rizla 
          Beiträge: 417
 Erhaltene Danke: 2
 
 XP
 FPC mit Lazarus
 
 | 
Verfasst: So 12.08.12 22:42 
 
Hi!
 Achso. Klingt nach viel Schreibarbeit    Na dann, viel Erfolg und danke nochmal - vllt brauch ichs irgendwann mal._________________ if you have what they want - they'll find a way to take it (bruce sterling)
 WOW - 10 JAHRE Mitglied beim Delphi-Forum. Wie die Zeit vergeht, Freunde.
 |  |  |  |