SftTree/DLL 7.5 - Tree Control
SftBox/OCX 5.0 - Combo Box Control
SftButton/OCX 3.0 - Button Control
SftMask/OCX 7.0 - Masked Edit Control
SftTabs/OCX 6.5 - Tab Control (VB6 only)
SftTree/OCX 7.5 - Tree Control
SftPrintPreview/DLL 2.0 - Print Preview Control (discontinued)
SftTree/DLL 7.5 - Tree Control
SftBox/OCX 5.0 - Combo Box Control
SftButton/OCX 3.0 - Button Control
SftDirectory 3.5 - File/Folder Control (discontinued)
SftMask/OCX 7.0 - Masked Edit Control
SftOptions 1.0 - Registry/INI Control (discontinued)
SftPrintPreview/OCX 1.0 - Print Preview Control (discontinued)
SftTabs/OCX 6.5 - Tab Control (VB6 only)
SftTree/OCX 7.5 - Tree Control
SftTabs/NET 6.0 - Tab Control (discontinued)
SftTree/NET 2.0 - Tree Control
This sample illustrates drag & drop.
The source code is located at C:\Program Files (x86)\Softelvdm\SftTree OCX 7.5\Samples\Visual Studio - CSharp\DragDrop\Form1.cs or C:\Program Files\Softelvdm\SftTree OCX 7.5\Samples\Visual Studio - CSharp\DragDrop\Form1.cs (on 32-bit Windows versions).
private void Command1_Click(object sender, System.EventArgs e) {
Application.Exit();
}
private void Form1_Load(object sender, System.EventArgs e) {
DropTargetPic.AllowDrop = true;
int i;
axSftTree1.Items.Add("Item 0");
i = axSftTree1.Items.Add("Item 1");
axSftTree1.get_Item(i).Level = 1;
i = axSftTree1.Items.Add("Item 2");
axSftTree1.get_Item(i).Level = 2;
i = axSftTree1.Items.Add("Item 3");
axSftTree1.get_Item(i).Level = 1;
}
private void axSftTree1_DragStarting(object sender, AxSftTreeLib75._DSftTreeEvents_DragStartingEvent e) {
axSftTree1.CancelMode(); // .NET controls drag&drop, so tree control needs to cancel
// This section demonstrates drag (&drop) using the .NET DoDragDrop method
// THIS CODE IS ONLY USED IF DRAGMETHOD IS SET TO ( 1 - Manual ) or SftTreeDragMethodConstants.dragSftTreeManual
int curr = axSftTree1.Items.Current;
// cell text
System.Windows.Forms.DataObject data = new System.Windows.Forms.DataObject();
data.SetData(DataFormats.Text, axSftTree1.get_Cell(curr, 0).Text);
// item picture
SftPictureObject img = null;
if (axSftTree1.get_Item(curr).Image.Type == SftPictureTypeConstants.sftTypeIDispatch) {
img = axSftTree1.get_Item(curr).Image;
} else {
if (axSftTree1.get_Item(curr).Expanded)
img = axSftTree1.Items.ItemImageExpanded;
else if (axSftTree1.get_Item(curr).DependentAllCount > 0)
img = axSftTree1.Items.ItemImageExpandable;
else
img = axSftTree1.Items.ItemImageLeaf;
}
Image sendingImage = OLECvt.ToImage(img.Picture);
data.SetData(DataFormats.Bitmap, true, sendingImage);
DoDragDrop(data, DragDropEffects.Copy);
}
private void axSftTree1_OLEStartDrag(object sender, AxSftTreeLib75._DSftTreeEvents_OLEStartDragEvent e) {
// This section demonstrates drag&drop) using OLE mechanisms built into this control
// THIS CODE IS ONLY USED IF DRAGMETHOD IS SET TO ( 3 - OLEDrag ) or SftTreeDragMethodConstants.dragSftTreeOLE
int curr = axSftTree1.Items.Current;
// cell text
e.data.SetData(axSftTree1.get_Cell(curr, 0).Text, SftOLEClipboardConstants.sftCFText);
// item picture
SftPictureObject img = null;
if (axSftTree1.get_Item(curr).Image.Type == SftPictureTypeConstants.sftTypeIDispatch) {
img = axSftTree1.get_Item(curr).Image;
} else {
if (axSftTree1.get_Item(curr).Expanded)
img = axSftTree1.Items.ItemImageExpanded;
else if (axSftTree1.get_Item(curr).DependentAllCount > 0)
img = axSftTree1.Items.ItemImageExpandable;
else
img = axSftTree1.Items.ItemImageLeaf;
}
e.data.SetData(img.Picture, SftOLEClipboardConstants.sftCFDIB);
e.data.SetData(img.Picture, SftOLEClipboardConstants.sftCFBitmap);
e.allowedEffects = 3;
}
private void DropTarget_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) {
if (e.Data.GetDataPresent(DataFormats.Text, true) || e.Data.GetDataPresent(DataFormats.Bitmap, true))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
private void DropTarget_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) {
String[] arrayOfFormats = e.Data.GetFormats(true); // informational
if (e.Data.GetDataPresent(DataFormats.Text, true))
DropTarget.Text = (string) e.Data.GetData(DataFormats.Text, true);
if (e.Data.GetDataPresent(DataFormats.Bitmap, true))
DropTargetPic.Image = (Image) e.Data.GetData(DataFormats.Bitmap, true);
}
private void DropTargetPic_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) {
if (e.Data.GetDataPresent(DataFormats.Bitmap, true))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
private void DropTargetPic_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) {
String[] arrayOfFormats = e.Data.GetFormats(true); // informational
if (e.Data.GetDataPresent(DataFormats.Bitmap, true)) {
object o = e.Data.GetData(DataFormats.Bitmap, true);
DropTargetPic.Image = (Image) o;
}
}
private void axSftTree1_OLEDragDrop(object sender, AxSftTreeLib75._DSftTreeEvents_OLEDragDropEvent e) {
// get horizontal extent and width of column 0
int horzExtent = axSftTree1.Items.HorizontalExtentPix;
int firstColumnWidth = axSftTree1.get_Column(0).WidthPix;
int insertAt = axSftTree1.Items.DropHighlight;
if (insertAt < 0) return;
if (e.data.GetFormat((short) SftOLEClipboardConstants.sftCFText)) {
short lvl = axSftTree1.get_Item(insertAt).Level;
string str = (string) e.data.GetData(SftOLEClipboardConstants.sftCFText);
int newItem = axSftTree1.Items.Insert(insertAt + 1, str);
axSftTree1.get_Item(newItem).Level = (short) (lvl + 1);
}
if (e.data.GetFormat((short) SftOLEClipboardConstants.sftCFDIB)) {
axSftTree1.get_Cell(insertAt, 0).Image.Picture = (stdole.IPictureDisp)e.data.GetData((short) SftOLEClipboardConstants.sftCFDIB);
axSftTree1.get_Cell(insertAt, 0).ImageHAlign = SftTreeHAlignConstants.halignSftTreeRight;
}
if (e.data.GetFormat((short) SftOLEClipboardConstants.sftCFBitmap)) {
axSftTree1.get_Cell(insertAt, 0).Image.Picture = (stdole.IPictureDisp)e.data.GetData((short) SftOLEClipboardConstants.sftCFBitmap);
axSftTree1.get_Cell(insertAt, 0).ImageHAlign = SftTreeHAlignConstants.halignSftTreeRight;
}
if (e.data.GetFormat((short) SftOLEClipboardConstants.sftCFFiles)) {
axSftTree1.BulkUpdate = true;
short lvl = axSftTree1.get_Item(insertAt).Level;
int newItem = insertAt + 1;
for (int i = e.data.Files.Count ; i >= 1 ; --i) {
newItem = axSftTree1.Items.Insert(newItem, e.data.Files[i]);
axSftTree1.get_Item(newItem).Level = (short) (lvl + 1);
}
axSftTree1.BulkUpdate = false;
}
// make horizontal extent and width of column 0 wider than previous
// setting, but never smaller
axSftTree1.ColumnsObj.MakeOptimal();
axSftTree1.Items.RecalcHorizontalExtent();
if (horzExtent > axSftTree1.Items.HorizontalExtent)
axSftTree1.Items.HorizontalExtent = horzExtent;
if (firstColumnWidth > axSftTree1.get_Column(0).WidthPix)
axSftTree1.get_Column(0).WidthPix = firstColumnWidth;
}
private void Picture1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
System.Windows.Forms.DataObject data = new System.Windows.Forms.DataObject();
data.SetData(DataFormats.Bitmap, true, Picture1.Image);
DoDragDrop(data, DragDropEffects.Copy);
}
private void Picture2_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
System.Windows.Forms.DataObject data = new System.Windows.Forms.DataObject();
data.SetData(DataFormats.Dib, true, Picture2.Image);
DoDragDrop(data, DragDropEffects.Copy);
}
private void Text1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
System.Windows.Forms.DataObject data = new System.Windows.Forms.DataObject();
data.SetData(DataFormats.Text, Text1.Text);
DoDragDrop(data, DragDropEffects.Copy);
}
}
}