How to drag an object from the database schema tree to external control?
Last modified:
listBox1.AllowDrop = true; listBox1.DragDrop += new System.Windows.Forms.DragEventHandler(listBox1_DragDrop); listBox1.DragOver += new System.Windows.Forms.DragEventHandler(listBox1_DragOver); private MetadataDragObject GetMetadataDragObject(DragEventArgs e) { var dataObject = (DataObject)e.Data; string[] formats = dataObject.GetFormats(); var metadataDragObjectFormatIndex = Array.IndexOf(formats, typeof(MetadataDragObject).ToString()); var dragObject = e.Data.GetData(formats[metadataDragObjectFormatIndex]); return dragObject as MetadataDragObject; } private void listBox1_DragOver(object sender, DragEventArgs e) { var metadataDragObject = GetMetadataDragObject(e); if (metadataDragObject != null) { e.Effect = DragDropEffects.Link; } } private void listBox1_DragDrop(object sender, DragEventArgs e) { var metadataDragObject = GetMetadataDragObject(e); if (metadataDragObject != null) { foreach (var metadataItem in metadataDragObject.MetadataDragged) { listBox1.Items.Add(metadataItem.NameFull); } } }
private void listBox1_DragOver(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(DataSourceFieldList))) { e.Effect = DragDropEffects.Link; } } private void listBox1_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(DataSourceFieldList))) { e.Effect = DragDropEffects.Link; DataSourceFieldList fieldListControl = (DataSourceFieldList) e.Data.GetData(typeof(DataSourceFieldList)); if (fieldListControl.SelectedItem != null) { if (((TextAndObject) fieldListControl.SelectedItem).obj != null) { MetadataField field = (MetadataField) ((TextAndObject) fieldListControl.SelectedItem).obj; int x = listBox1.Items.Add(field.NameStr + " [" + field.FieldTypeName + "]"); listBox1.SelectedIndex = x; } } } }
procedure TForm2.Memo1DragDrop(Sender, Source: TObject; X, Y: Integer); var n:TacTreeNode; mo:TacMetadataObject; begin Assert(Source=qb.MetadataTree); Assert(qb.MetadataTree.Selected<>nil); n:=qb.MetadataTree.Selected; mo:=TacMetadataObject(n.Data); Memo1.Lines.Add(mo.FullNameStr); end; procedure TForm2.Memo1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept:=false; if (Source=qb.MetadataTree)and (qb.MetadataTree.Selected<>nil) then Accept:=true; end;
jTextArea1.setDropTarget(new DropTarget(this, new DropTargetAdapter() { @Override public void dragOver(DropTargetDragEvent event) { if (!event.getTransferable().isDataFlavorSupported(DataFlavor.stringFlavor)) { event.rejectDrag(); } } @Override public void drop(DropTargetDropEvent event) { event.acceptDrop(DnDConstants.ACTION_LINK); Transferable transferable = event.getTransferable(); if (transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) { try { String data = (String) transferable.getTransferData(DataFlavor.stringFlavor); jTextArea1.setText(data); } catch (UnsupportedFlavorException ex) { // handle exception } catch (IOException ex) { // handle exception } } } }));