2010년 8월 3일 화요일

ExpressQuantumGrid에서 드래그 앤 드롭

cxGrid에서 cxGrid로 드래그 앤 드롭을 구현하기

드래그할 그리드와 드롭할 그리드에 모드 드래그 모드를 Auto로 설정한다.

드래그하는 그리드의 현재데이터를 가져오기위해서 다음의 스크립트 작성
procedure TForm1.cxGridItemStartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
DragContentID := udsContents.DataSet.FieldByName('rno').AsInteger;
end;
위에서 DragContentID는 전역변수로 데이터셋에서 드래그하는 데이터의 일련번호를 변수에 저장한다.


드래그를 드롭하는 그리드의 다음 속성을 추가한다.
Accept속성을 트루로 하여 드래그드롭을 받아들이도록 한다.

procedure TForm1.gridKind2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
id : integer;
begin
Accept := (Source is TcxDragControlObject);
end;

드롭할 그리드에 다음의 속성을 추가한다.

procedure TForm1.gridKind2DragDrop(Sender, Source: TObject; X, Y: Integer);
var
id : integer;
begin
id := udsKind2.DataSet.FieldByName('rno').AsInteger;
Label1.Caption := IntToStr(DragContentID);
with qryContentUpdate do begin
SQL.Clear;
SQL.Add('update scriptdata set kind2 = :nid ');
SQL.Add(' where rno = :orno ');
ParamByName('nid').Value := id;
ParamByName('orno').Value := DragContentID;
Execute;
end;
udsContents.DataSet.Refresh;
// ShowMessage(IntToStr(DragContentID));
end;
드롭하는 소스의 아이디(전역변수:DragcontentID)와 드롭한 그리드의 rno로 자료를 수정하는 sql문을 작성한다.
qryContentUpdate 는 uniQuery콘트롤을 폼에 올려만 놓으면 된다. 연결을 컴포넌트에서 지정한다.

댓글 없음: