티스토리 뷰

Programming/Delphi

Delphi - Drag & Drop

파란크리스마스 2010. 11. 10. 21:39
728x90
출처 : http://kjs1981.tistory.com/entry/%EB%8D%B8%ED%8C%8C%EC%9D%B4-Drag-Drop%EC%9D%98-%EC%A0%95%EB%A6%AC-%ED%8E%8C-softech%EA%B3%A8%EB%B1%85%EC%9D%B4pppkornet21net

1. 소스 : cxVirtualTreeList1.DragMode = dmAutomatic

DragMode = dmAutomatic의 경우 모든 객체에 대해서 Darg 모드가 적용되지만
특정객체만 선택적으로 Drag 모드가 적용되게 하려면 DragMode = dmManual 로 수정하고
MouseDown 이벤트에서 BeginDrag(False); 로 해준다.

cxVirtualTreeList1.DragMode = dmManual  // 수정

procedure TObjectTreeForm.cxVirtualTreeList1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  TableItem : TTableItem;
begin
  TableItem := DBManager.DBObjectTreeModel.DoSelectNode(cxVirtualTreeList1.GetNodeAt(x, y));
  if Assigned(TableItem) then begin
    cxVirtualTreeList1.BeginDrag(False);  { 있다면 드랙을 시작한다. }
    ColumnGridModel.ColumnList := TableItem.ColumnList;
    ColumnGridModel.DataChanged;
  end;
end;

2. 대상 : OnDragOver 이벤트

procedure TfrmSQLEditor.SyntaxMemo1DragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
var
  TableItem : TTableItem;
begin
  if (Source is TcxVirtualTreeList) then begin
    TableItem := DBManager.DBObjectTreeModel.DoSelectNode((Source as TcxVirtualTreeList).DragNode);
    if Assigned(TableItem) then begin
      Accept := true;
    end;
  end;
end;

3. 대상 : DragDrop이벤트

procedure TfrmSQLEditor.SyntaxMemo1DragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  TableItem : TTableItem;
begin
  if (Source is TcxVirtualTreeList) then begin
    TableItem := DBManager.DBObjectTreeModel.DoSelectNode((Source as TcxVirtualTreeList).DragNode);
    if Assigned(TableItem) then begin
      SyntaxMemo1.InsertText(TableItem.Name);
    end;
  end;
end;

댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함