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;
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;
728x90