Project source
Form source (Pascal)
Form source (DFM)
Project source: uoddtest.dpr |
Program UODDTest; {Main program file for test application for UnitOOPS OLE Drag and Drop Components. Last modified: 07/04/98} uses Forms, fmuoddtest in 'fmuoddtest.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.Back to top |
Form source: fmUODDTest.pas |
unit fmuoddtest; {Test form for drag-and-drop between applications using the UnitOOPS OLE Drag and Drop Components. Demonstrates various techniques in the use of TUOTextSource, TUOTextTarget, TUOGraphicSource, TUOGraphicTarget. The main point here - see how little code is needed. Most of the code here was written by Delphi! And the portion that was manually coded is mainly for user-interface purposes. Last modified: 09/29/99} interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, uoole, StdCtrls, ComCtrls, Buttons, Grids, ExtCtrls; type TForm1 = class(TForm) pnlButtons: TPanel; Panel1: TPanel; btnClose: TButton; Panel2: TPanel; PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; UOTextSource1: TUOTextSource; UOTextTarget1: TUOTextTarget; ListBox1: TListBox; StaticText1: TStaticText; UOTextTarget2: TUOTextTarget; UOTextSource2: TUOTextSource; UOTextSource3: TUOTextSource; Memo1: TMemo; TabSheet3: TTabSheet; Label1: TLabel; Label2: TLabel; ListBox2: TListBox; Label3: TLabel; CheckBox2: TCheckBox; Label4: TLabel; CheckBox1: TCheckBox; Label5: TLabel; Label6: TLabel; ListBox3: TListBox; CheckBox3: TCheckBox; Label7: TLabel; Label8: TLabel; Label9: TLabel; TabSheet4: TTabSheet; TreeView1: TTreeView; Label10: TLabel; ListView1: TListView; Label11: TLabel; Label12: TLabel; UOTextSource4: TUOTextSource; Label13: TLabel; Label14: TLabel; TabSheet5: TTabSheet; Panel3: TPanel; GroupBox1: TGroupBox; Panel4: TPanel; Label19: TLabel; Label18: TLabel; Label21: TLabel; Label22: TLabel; Label23: TLabel; Label20: TLabel; CheckBox4: TCheckBox; CheckBox5: TCheckBox; RadioGroup1: TRadioGroup; Label24: TLabel; TabSheet6: TTabSheet; UOGraphicTarget1: TUOGraphicTarget; Panel5: TPanel; Label25: TLabel; TabSheet7: TTabSheet; Label26: TLabel; Label27: TLabel; Image2: TImage; UOGraphicSource1: TUOGraphicSource; Label28: TLabel; Label29: TLabel; Image3: TImage; Label30: TLabel; CheckBox6: TCheckBox; Label31: TLabel; UOGraphicSource2: TUOGraphicSource; RadioGroup2: TRadioGroup; CheckBox7: TCheckBox; UOGraphicSource3: TUOGraphicSource; CheckBox8: TCheckBox; ScrollBox1: TScrollBox; Image1: TImage; Panel6: TPanel; UOGraphicSource4: TUOGraphicSource; CheckBox9: TCheckBox; CheckBox10: TCheckBox; CheckBox11: TCheckBox; procedure ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure ListBox2StartDrag(Sender: TObject; var DragObject: TDragObject); procedure ListView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure UOTextTarget1Drop(Sender: TObject; Acceptor: TWinControl; const dropText: String; X, Y: integer); procedure btnCloseClick(Sender: TObject); procedure UOTextSource2BeforeDrop(Sender: TObject; Donor: TComponent; var dropText: String; var cancelDrop: Boolean); procedure UOTextSource2AfterDrop(Sender: TObject; Donor: TComponent; droppedOK: Boolean); procedure UOTextTarget2Drop(Sender: TObject; Acceptor: TWinControl; const dropText: String; X, Y: integer); procedure TreeView1StartDrag(Sender: TObject; var DragObject: TDragObject); procedure ListView1StartDrag(Sender: TObject; var DragObject: TDragObject); procedure UOTextSource4AfterDrop(Sender: TObject; Donor: TComponent; droppedOK: Boolean); procedure CheckBox4Click(Sender: TObject); procedure UOTextSource3AfterDrop(Sender: TObject; Donor: TComponent; droppedOK: Boolean); procedure UOTextSource3BeforeDrop(Sender: TObject; Donor: TComponent; var dropText: String; var cancelDrop: Boolean); procedure RadioGroup1Click(Sender: TObject); procedure UOTextTarget1DragEnter(Sender: TObject; effect: TDropEffect; X, Y: Integer); procedure UOTextTarget1DragLeave(Sender: TObject); procedure UOTextTarget1DragOver(Sender: TObject; effect: TDropEffect; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure UOGraphicTarget1Drop(Sender: TObject; Acceptor: TWinControl; thePicture: TPicture; X, Y: Integer); procedure CheckBox6Click(Sender: TObject); procedure Image2StartDrag(Sender: TObject; var DragObject: TDragObject); procedure Image3StartDrag(Sender: TObject; var DragObject: TDragObject); procedure RadioGroup2Click(Sender: TObject); procedure CheckBox7Click(Sender: TObject); procedure Image1StartDrag(Sender: TObject; var DragObject: TDragObject); procedure Panel6StartDrag(Sender: TObject; var DragObject: TDragObject); procedure CheckBox9Click(Sender: TObject); procedure CheckBox10Click(Sender: TObject); procedure CheckBox11Click(Sender: TObject); private { Private declarations } saveAcceptGraphicFormats: TDropGraphicFormats; procedure updateAcceptGraphicFormats; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} uses TypInfo; procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); // Drag detection for ListBox1. Style #1 - mouse-move with left button down. // Style #2 (see ListBox2StartDrag) is preferred. begin if (ssLeft in Shift) then UOTextSource1.Execute; end; procedure TForm1.ListBox2StartDrag(Sender: TObject; var DragObject: TDragObject); // Drag detection for ListBox2. Style #2 - start drag with DragMode = dmAutomatic, // followed by abort.. begin UOTextSource2.Execute; Abort; // to kill the Delphi drag/drop operation end; procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then UOTextSource1.execute; end; procedure TForm1.UOTextTarget1Drop(Sender: TObject; Acceptor: TWinControl; const dropText: String; X, Y: integer); // Handle drops on memo1. Notify the user whether files or just non-file text // has been dropped. begin label24.caption := Format('%s: (%d,%d)', ['Drop', X, Y]); if ((Sender as TUOTextTarget).DroppedTextFormat = dtfFiles) then label24.caption := label24.caption + ' [files]' else label24.caption := label24.caption + ' [text]'; // If this is a URL, the actual URL address is in dropText // (also in droppedLines[0] and Text). The title is in URLTitle. if ((Sender as TUOTextTarget).DroppedTextFormat = dtfURL) then label24.caption := label24.caption + Format(' [URL, title=%s]', [(Sender as TUOTextTarget).URLTitle]); // The only REQUIRED part of this handler. Do something with the text // that was just dropped. If this is missing, the drop won't do anything. // You have to decide what you want to do with the text you get! memo1.lines.add(dropText); // The following line is equivalent to the preceding line. // memo1.lines.add((Sender as TUOTextTarget).Text); end; procedure TForm1.btnCloseClick(Sender: TObject); // Close down begin Application.Terminate; end; procedure TForm1.UOTextSource2BeforeDrop(Sender: TObject; Donor: TComponent; var dropText: String; var cancelDrop: Boolean); // Called before the drop of text from UOTextSource2. Allow the // user to cancel. You can modify dropText here if you want. // // This handler is shared by UOTextSource1 and UOTextSource2. The particular // one in question is identified by looking at Sender. var aString: string; showConfirmation: boolean; begin showConfirmation := ((Sender = UOTextSource1) and (CheckBox1.Checked)) or ((Sender = UOTextSource2) and (CheckBox2.Checked)); if showConfirmation then begin if (deMove = (Sender as TUOTextSource).ReturnedEffect) then aString := 'Do you really want to move the string "%s"?' else aString := 'Do you really want to copy the string "%s"?'; aString := Format(aString, [dropText]); cancelDrop := (MessageDlg(aString, mtConfirmation, [mbYes, mbNo], 0) = mrNo); end; end; procedure TForm1.UOTextSource2AfterDrop(Sender: TObject; Donor: TComponent; droppedOK: Boolean); var j: integer; begin // A drop has been done from UOTextSource2. If the drop was a move, we // have to remove the text from ListBox2. You have to make sure that // droppedOK is true; if you end the drag while the "no drag" cursor is // showing, this event will still fire, but with droppedOK = false. // // In this handler, the expressions (Sender as TUOTextSource).DonorComponent, // Donor, and ListBox2 all refer to the same thing. if droppedOK then begin if (deMove = (Sender as TUOTextSource).ReturnedEffect) then begin // It's a move. Delete from the top down to avoid messing // up the Selected[] property. for j := ListBox2.items.count downTo 1 do // Iterate begin if ListBox2.Selected[j-1] then ListBox2.items.delete(j-1); end; // for end; end; end; procedure TForm1.UOTextTarget2Drop(Sender: TObject; Acceptor: TWinControl; const dropText: String; X, Y: integer); // Handle drops on ListBox3 //var // j: integer; /// aSL: TStringList; begin // Bring the form to the top, so that the message dialog won't accidentally // be hidden. SetForegroundWindow(Handle); if CheckBox3.Checked and (MessageDlg('Do you want to clear the list before dropping?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then ListBox3.Items.Clear; // Show a sign that files were dropped (rather than text) Label7.visible := ((Sender as TUOTextTarget).DroppedTextFormat = dtfFiles); // Handle the drop. Show the coordinates, just for fun. ListBox3.Items.Add(Format(' Drop at client pos (%d,%d):', [X, Y])); ListBox3.Items.AddStrings((Sender as TUOTextTarget).DroppedLines); // The following is equivalent to the preceding line, i.e., DroppedLines // and dropText contain the same information. //aSL := TStringList.create; //try // // Get the dropped text into dropText // aSL.text := dropText; // for j := 1 to aSL.count do // Iterate // begin // ListBox3.Items.Add(aSL[j-1]); // end; // for //finally // aSL.free; //end; end; procedure TForm1.TreeView1StartDrag(Sender: TObject; var DragObject: TDragObject); begin // For the explanation of the following line, see UOTextSource3BeforeDrop UOTextSource3.DonorComponent := TreeView1; UOTextSource3.Execute; Abort; // to kill the Delphi drag/drop operation end; procedure TForm1.ListView1StartDrag(Sender: TObject; var DragObject: TDragObject); begin UOTextSource4.Execute; Abort; // to kill the Delphi drag/drop operation end; procedure TForm1.UOTextSource4AfterDrop(Sender: TObject; Donor: TComponent; droppedOK: Boolean); var aLi, bLi: TListItem; begin // A drop has been done from UOTextSource4. If the drop was a move, we // have to remove the selections from ListView1. You have to make sure that // droppedOK is true; if you end the drag while the "no drag" cursor is // showing, this event will still fire, but with droppedOK = false. // This allows you to something on such an operation. if droppedOK then begin if (deMove = (Sender as TUOTextSource).ReturnedEffect) then begin // It's a move. Delete the selected ones. // Loop over the selected members of the TListView items with (Donor as TListView) do begin Items.BeginUpdate; // Efficiency aLi := Selected; while assigned(GetNextItem(aLi, sdAll, [isSelected])) do begin bLi := aLi; aLi := GetNextItem(aLi, sdAll, [isSelected]); // We know it's assigned - look at the while statement above... bLi.delete; end; // while // There's one left - delete it aLi.delete; Items.EndUpdate; // Efficiency end; // with end; end; end; procedure TForm1.CheckBox4Click(Sender: TObject); begin ListView1.Multiselect := CheckBox4.checked; end; procedure TForm1.UOTextSource3AfterDrop(Sender: TObject; Donor: TComponent; droppedOK: Boolean); begin // A drop has been done from UOTextSource3. If the drop was a move, we // have to remove the selections from TreeView1. You have to make sure that // droppedOK is true; if you end the drag while the "no drag" cursor is // showing, this event will still fire, but with droppedOK = false. // // We'll explicitly refer to TreeView1 rather than (Donor as TreeView) // for reasons explained in UOTextSource3BeforeDrop. if droppedOK then begin if (deMove = (Sender as TUOTextSource).ReturnedEffect) then begin // It's a move. Delete the selected ones with TreeView1 do begin if assigned(Selected) then Selected.Delete; end; // with end; end; end; procedure TForm1.UOTextSource3BeforeDrop(Sender: TObject; Donor: TComponent; var dropText: String; var cancelDrop: Boolean); // We're about to get a drop from the tree view. If the checkbox is // checked, we're going to pass the complete path to the selected node // as opposed to the node's title alone. Otherwise, we do nothing. // // NB - modifying the dropText when we have a DonorComponent will disconnect // the DonorComponent. For this reason, we reassign it explicily just before // the Execute call in TreeView1StartDrag const separator = '\'; // Separate nodes with this var aTn: TTreeNode; begin // Bale out if the checkbox is not checked. if not CheckBox5.checked then exit; with (Donor as TTreeView) do begin aTn := Selected; // Now, build it from the node toward the root dropText := aTn.Text; while (aTn.Parent <> nil) do begin dropText := aTn.Parent.Text + separator + dropText; aTn := aTn.Parent; end; // while end; // with // Put a header on it dropText := separator + separator + dropText; end; procedure TForm1.RadioGroup1Click(Sender: TObject); begin ListView1.ViewStyle := TViewStyle(RadioGroup1.ItemIndex); end; procedure TForm1.UOTextTarget1DragEnter(Sender: TObject; effect: TDropEffect; X, Y: Integer); // Handle drag enter for UOTextTarget1 begin label24.caption := Format('%s: (%d,%d) %s', ['Enter', X, Y, stringFromDropEffects([effect])]); end; procedure TForm1.UOTextTarget1DragLeave(Sender: TObject); // Handle drag leave for UOTextTarget1 begin label24.caption := 'Leave'; end; procedure TForm1.UOTextTarget1DragOver(Sender: TObject; effect: TDropEffect; X, Y: Integer); // Handle drag over for UOTextTarget1 begin label24.caption := Format('%s: (%d,%d) %s', ['Over', X, Y, stringFromDropEffects([effect])]); // "effect" in the preceding could be replaced by // "(Sender as TUOTextTarget).DropEffect" end; procedure TForm1.FormCreate(Sender: TObject); // Set up at form creation time var i, j: integer; begin // When the form loads, make sure the page showing is the // last one (to show the Help/About text) with PageControl1 do begin ActivePage := Pages[PageCount-1]; end; // with // Save the design-time state of the acceptable graphic formats // This is only for UI convenience later in implementing "Preferred only" saveAcceptGraphicFormats := UOGraphicTarget1.AcceptGraphicFormats; // Set various controls in the correct state RadioGroup2.itemIndex := integer(UOGraphicTarget1.PreferredFormat); with UOGraphicTarget1 do begin // Is the preferred format the only one? CheckBox7.Checked := [PreferredFormat] = AcceptGraphicFormats; end; // with CheckBox9.checked := UOTextTarget1.AcceptIEHTML; CheckBox10.Checked := UOTextTarget2.AcceptFiles; CheckBox11.Checked := UOTextTarget1.AcceptRichText; // Preceding 2 lines are equivalent to the (more cumbersome) // CheckBox9.checked := (atIEHTML in UOTextTarget1.AcceptTextFormats); // CheckBox10.checked := (atFiles in UOTextTarget2.AcceptTextFormats); // Opening a D4 project in D3 messes up the TListView contents, so we // set some listview contents manually to avoid this. This is only to allow // us to use the same example .DFM in both D3 and D4, without worrying about // losing the contents by opening in D4. with ListView1 do begin // Add 4 items for i := 1 to 4 do begin with Items.add do begin caption := Format('Item %d,1', [i]);; with subItems do begin for j := 2 to 4 do begin add(Format('Item %d,%d', [i, j])); end; end; end; end; // Try one with blanks with Items.add do begin caption := 'One more'; with subItems do begin add(''); add('testing'); end; end; end; end; procedure TForm1.UOGraphicTarget1Drop(Sender: TObject; Acceptor: TWinControl; thePicture: TPicture; X, Y: Integer); var aString: string; begin if assigned(thePicture) then begin // Give the picture to the TImage. The following 2 lines are equivalent. // image1.picture := (Sender as TUOGraphicTarget).Picture; image1.picture := thePicture; // Optionally stretch depending on checkbox. image1.stretch := CheckBox6.checked; // Show in the label what kind of object got dropped //aString := Image1.picture.graphic.ClassName; //Delete(aString, 1, 1); // Drop the leading "T" // Following is an alternative for the preceding 2 lines case (Sender as TUOGraphicTarget).DroppedGraphicFormat of dgfBitmap: aString := 'Bitmap'; dgfMetafile: aString := 'Metafile'; else aString := '???'; // Should never happen! end; label31.caption := 'Dropped a '+ aString; end; end; procedure TForm1.CheckBox6Click(Sender: TObject); begin with Image1 do begin // If the image is empty, don't do anything if not ((Picture.width=0) and (Picture.height=0)) then begin Stretch := CheckBox6.checked; // Are we stretching? // Image1.AutoSize and ScrollBox1.AutoScroll need to match AutoSize := not Stretch; ScrollBox1.AutoScroll := not Stretch; if Stretch then // Stretching, so reset the image to match the scrollbox bounds SetBounds(ScrollBox1.left, ScrollBox1.top, ScrollBox1.width, ScrollBox1.height); end; end; end; procedure TForm1.Image2StartDrag(Sender: TObject; var DragObject: TDragObject); begin UOGraphicSource1.execute; abort; end; procedure TForm1.Image3StartDrag(Sender: TObject; var DragObject: TDragObject); begin UOGraphicSource2.execute; abort; end; procedure TForm1.RadioGroup2Click(Sender: TObject); begin // Choose a new preferred format UOGraphicTarget1.PreferredFormat := TDropGraphicFormat(RadioGroup2.itemIndex); // And make sure the acceptible formats are updated as a result updateAcceptGraphicFormats; end; procedure TForm1.updateAcceptGraphicFormats; // After a change in the preferred format, or in whether the preferred format // alone is acceptable, update the acceptable formats. begin with UOGraphicTarget1 do begin if CheckBox7.Checked then // Preferred only - i.e., use the preferred one if it intersects with the // design-time acceptable graphic formats (set intersection) AcceptGraphicFormats := [PreferredFormat]*saveAcceptGraphicFormats else // Not preferred only - take the design-time defaults AcceptGraphicFormats := saveAcceptGraphicFormats; end; // with end; procedure TForm1.CheckBox7Click(Sender: TObject); begin updateAcceptGraphicFormats; end; procedure TForm1.Image1StartDrag(Sender: TObject; var DragObject: TDragObject); begin // If we're allowed, do a drag from this image if CheckBox8.checked then begin UOGraphicSource3.execute; end; // Either way, abort the native Delphi drag Abort; end; procedure TForm1.Panel6StartDrag(Sender: TObject; var DragObject: TDragObject); begin // No DonorImage this time. Just get the image of the form's client area // into the Picture property, and execute the graphic source. // See how easy this is? UOGraphicSource4.Picture.Bitmap := GetFormImage; UOGraphicSource4.execute; Abort; end; procedure TForm1.CheckBox9Click(Sender: TObject); // Handle checkbox click for accepting IEHTML format begin UOTextTarget1.AcceptIEHTML := CheckBox9.Checked; // Preceding is equivalent to the (more cumbersome) // if CheckBox9.Checked then // UOTextTarget1.AcceptTextFormats := UOTextTarget1.AcceptTextFormats + [atIEHTML] // else // UOTextTarget1.AcceptTextFormats := UOTextTarget1.AcceptTextFormats - [atIEHTML]; end; procedure TForm1.CheckBox10Click(Sender: TObject); // Demonstrate dynamic change in accept formats. begin UOTextTarget2.AcceptFiles := CheckBox10.Checked; // Preceding is equivalent to manipulating UOTextTarget2.AcceptTextFormats // (see CheckBox9Click method immediately above) // and is one of several Accept* public properties on the target // components provided for convenience. end; procedure TForm1.CheckBox11Click(Sender: TObject); // Handle checkbox click for accepting RTF begin UOTextTarget1.AcceptRichText := CheckBox11.Checked; end; end.Back to top |
Form source: fmUODDTest.dfm |
object Form1: TForm1 Left = 176 Top = 180 BorderStyle = bsDialog Caption = 'Test application for UnitOOPS Software Drag and Drop Components' ClientHeight = 332 ClientWidth = 562 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object pnlButtons: TPanel Left = 0 Top = 291 Width = 562 Height = 41 Align = alBottom BevelOuter = bvNone BorderWidth = 3 TabOrder = 0 object Label14: TLabel Left = 3 Top = 3 Width = 461 Height = 35 Align = alClient AutoSize = False Caption = 'If you have no other drag and drop applications available for te' + 'sting, run two instances of this program and drag and drop betwe' + 'en them.' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clActiveCaption Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] ParentColor = False ParentFont = False WordWrap = True end object Panel1: TPanel Left = 464 Top = 3 Width = 95 Height = 35 Align = alRight BevelOuter = bvNone TabOrder = 0 object btnClose: TButton Left = 12 Top = 6 Width = 75 Height = 25 Caption = 'Close' TabOrder = 0 OnClick = btnCloseClick end end end object Panel2: TPanel Left = 0 Top = 0 Width = 562 Height = 291 Align = alClient BevelOuter = bvNone BorderWidth = 3 TabOrder = 1 object PageControl1: TPageControl Left = 3 Top = 3 Width = 556 Height = 285 ActivePage = TabSheet2 Align = alClient TabOrder = 0 object TabSheet1: TTabSheet Caption = 'Drag demo &1' object Label1: TLabel Left = 16 Top = 16 Width = 104 Height = 13 Caption = 'Single-selection, Copy' end object Label4: TLabel Left = 160 Top = 32 Width = 289 Height = 57 AutoSize = False Caption = 'Drag a selection from this list box to any valid drop target, e.' + 'g., Word, Excel, or a TUOTextTarget-enabled window. Only Copy ' + 'is supported by this text source.' WordWrap = True end object ListBox1: TListBox Left = 16 Top = 32 Width = 121 Height = 193 ItemHeight = 13 Items.Strings = ( 'Apples' 'Bananas' 'Peaches' 'Pears' 'Nectarines' 'Tomatoes' 'Oranges' 'Plums') TabOrder = 0 OnMouseMove = ListBox1MouseMove end object StaticText1: TStaticText Left = 24 Top = 280 Width = 58 Height = 17 Caption = 'StaticText1' TabOrder = 1 end object CheckBox1: TCheckBox Left = 160 Top = 96 Width = 265 Height = 17 Caption = 'Display confirmation message before drop' State = cbChecked TabOrder = 2 end end object TabSheet3: TTabSheet Caption = 'Drag demo &2' object Label2: TLabel Left = 16 Top = 16 Width = 153 Height = 13 Caption = 'Multiple-selection, Copy or Move' end object Label3: TLabel Left = 160 Top = 32 Width = 289 Height = 57 AutoSize = False Caption = 'Drag multiple selections from this list box to any valid drop ta' + 'rget, e.g., Word, Excel, or a TUOTextTarget-enabled window. You' + ' can use the Shift and Ctrl keys to decide whether a move or a c' + 'opy is carried out. ' WordWrap = True end object ListBox2: TListBox Left = 16 Top = 32 Width = 121 Height = 193 DragMode = dmAutomatic ItemHeight = 13 Items.Strings = ( 'Apples' 'Bananas' 'Peaches' 'Pears' 'Nectarines' 'Tomatoes' 'Oranges' 'Plums') MultiSelect = True TabOrder = 0 OnStartDrag = ListBox2StartDrag end object CheckBox2: TCheckBox Left = 160 Top = 96 Width = 281 Height = 17 Caption = 'Display confirmation message before drop' State = cbChecked TabOrder = 1 end end object TabSheet4: TTabSheet Caption = 'Drag demo &3' object Label10: TLabel Left = 16 Top = 16 Width = 120 Height = 13 Caption = 'Tree View, Copy or Move' end object Label11: TLabel Left = 16 Top = 126 Width = 114 Height = 13 Caption = 'List View, Copy or Move' end object Label12: TLabel Left = 304 Top = 32 Width = 225 Height = 57 AutoSize = False Caption = 'Drag selections from this tree view to any valid drop target, e.' + 'g., Word, Excel, or a TUOTextTarget-enabled window. ' WordWrap = True end object Label13: TLabel Left = 304 Top = 142 Width = 225 Height = 57 AutoSize = False Caption = 'Drag selections from this list view to any valid drop target, e.' + 'g., Word, Excel, or a TUOTextTarget-enabled window. ' WordWrap = True end object TreeView1: TTreeView Left = 16 Top = 32 Width = 265 Height = 81 ReadOnly = True DragMode = dmAutomatic Indent = 19 Items.Data = { 030000001D0000000000000000000000FFFFFFFFFFFFFFFF0000000000000000 04746869731B0000000000000000000000FFFFFFFFFFFFFFFF00000000020000 000269731A0000000000000000000000FFFFFFFFFFFFFFFF0000000001000000 01611D0000000000000000000000FFFFFFFFFFFFFFFF00000000010000000474 6573741D0000000000000000000000FFFFFFFFFFFFFFFF000000000000000004 6974656D1C0000000000000000000000FFFFFFFFFFFFFFFF0000000001000000 0366756E1E0000000000000000000000FFFFFFFFFFFFFFFF0000000001000000 0569736E27741C0000000000000000000000FFFFFFFFFFFFFFFF000000000000 00000369743F200000000000000000000000FFFFFFFFFFFFFFFF000000000200 000007616E6F746865721D0000000000000000000000FFFFFFFFFFFFFFFF0000 00000000000004746573741E0000000000000000000000FFFFFFFFFFFFFFFF00 000000000000000568656C6C6F} TabOrder = 0 OnStartDrag = TreeView1StartDrag end object ListView1: TListView Left = 16 Top = 142 Width = 265 Height = 90 Columns = < item Caption = 'Col 1' Width = 65 end item Caption = 'Col 2' Width = 65 end item Caption = 'Col 3' Width = 65 end item Caption = 'Col 4' end> DragMode = dmAutomatic ReadOnly = True MultiSelect = True OnStartDrag = ListView1StartDrag TabOrder = 1 ViewStyle = vsReport end object CheckBox4: TCheckBox Left = 304 Top = 184 Width = 137 Height = 17 Caption = 'Multi-select list view' State = cbChecked TabOrder = 2 OnClick = CheckBox4Click end object CheckBox5: TCheckBox Left = 305 Top = 80 Width = 233 Height = 17 Caption = 'Drop path to node (see OnAfterDrop handler)' TabOrder = 3 end object RadioGroup1: TRadioGroup Left = 304 Top = 204 Width = 217 Height = 49 Caption = 'List View style' Columns = 2 ItemIndex = 3 Items.Strings = ( 'Icon' 'Small Icon' 'List' 'Report') TabOrder = 4 OnClick = RadioGroup1Click end end object TabSheet7: TTabSheet Caption = 'Drag demo &4' object Label26: TLabel Left = 16 Top = 16 Width = 104 Height = 13 Caption = 'Bitmap, Copy or Move' end object Label27: TLabel Left = 304 Top = 32 Width = 225 Height = 57 AutoSize = False Caption = 'Drag this bitmap to any valid drop target, e.g., Word, Excel, or' + ' a TUOGraphicTarget-enabled window. ' WordWrap = True end object Image2: TImage Left = 16 Top = 33 Width = 122 Height = 57 DragMode = dmAutomatic Picture.Data = { 07544269746D6170D21F0000424DD21F00000000000036040000280000007A00 .....lines removed for brevity..... D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D20000} OnStartDrag = Image2StartDrag end object Label28: TLabel Left = 16 Top = 108 Width = 109 Height = 13 Caption = 'Metafile, Copy or Move' end object Label29: TLabel Left = 304 Top = 125 Width = 225 Height = 57 AutoSize = False Caption = 'Drag this metafile to any valid drop target, e.g., Word, Excel, ' + 'or a TUOGraphicTarget-enabled window. ' WordWrap = True end object Image3: TImage Left = 16 Top = 126 Width = 185 Height = 105 DragMode = dmAutomatic Picture.Data = { 09544D65746166696C65DA3B0000D7CDC69A000000000000D50BDC0640020000 .....lines removed for brevity..... F50BB208} Stretch = True OnStartDrag = Image3StartDrag end object Panel6: TPanel Left = 304 Top = 179 Width = 217 Height = 49 DragMode = dmAutomatic Caption = 'Drag from here for form image' TabOrder = 0 OnStartDrag = Panel6StartDrag end end object TabSheet2: TTabSheet Caption = 'Drop demo &A ' object Label5: TLabel Left = 16 Top = 16 Width = 136 Height = 13 Caption = 'Memo: Accepts text or URLs' end object Label6: TLabel Left = 280 Top = 16 Width = 141 Height = 13 Caption = 'ListBox: Accepts text or URLs' end object Label7: TLabel Left = 471 Top = 16 Width = 66 Height = 13 Alignment = taRightJustify Caption = 'Files dropped!' Font.Charset = DEFAULT_CHARSET Font.Color = clRed Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] ParentFont = False Visible = False end object Label8: TLabel Left = 16 Top = 200 Width = 249 Height = 33 AutoSize = False Caption = 'Drop text from another application onto this memo.' end object Label9: TLabel Left = 277 Top = 200 Width = 249 Height = 33 AutoSize = False Caption = 'Drop text from another application onto this list box.' end object Label24: TLabel Left = 16 Top = 224 Width = 505 Height = 21 AutoSize = False end object Memo1: TMemo Left = 16 Top = 32 Width = 249 Height = 118 ScrollBars = ssBoth TabOrder = 0 end object ListBox3: TListBox Left = 280 Top = 32 Width = 257 Height = 119 ItemHeight = 13 TabOrder = 1 end object CheckBox3: TCheckBox Left = 280 Top = 173 Width = 257 Height = 17 Caption = 'Prompt to clear the list before dropping' TabOrder = 2 end object CheckBox9: TCheckBox Left = 16 Top = 156 Width = 249 Height = 17 Caption = 'Accept MS IE or MS FrontPage text as HTML' TabOrder = 3 OnClick = CheckBox9Click end object CheckBox10: TCheckBox Left = 280 Top = 156 Width = 249 Height = 17 Caption = 'Accept files from Explorer, Winzip, etc' TabOrder = 4 OnClick = CheckBox10Click end object CheckBox11: TCheckBox Left = 16 Top = 173 Width = 249 Height = 17 Caption = 'Accept MS Rich Text Format (RTF)' TabOrder = 5 OnClick = CheckBox11Click end end object TabSheet6: TTabSheet Caption = 'Drop demo &B' object Label25: TLabel Left = 17 Top = 13 Width = 99 Height = 13 Caption = 'Accepts image drops' end object Label30: TLabel Left = 16 Top = 200 Width = 265 Height = 29 AutoSize = False Caption = 'Drop a picture from another application (e.g., Word, Excel, Inte' + 'rnet Explorer) here.' WordWrap = True end object Label31: TLabel Left = 136 Top = 13 Width = 142 Height = 13 Alignment = taRightJustify AutoSize = False Font.Charset = DEFAULT_CHARSET Font.Color = clRed Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] ParentFont = False end object Panel5: TPanel Left = 16 Top = 32 Width = 265 Height = 161 BevelOuter = bvNone TabOrder = 0 object ScrollBox1: TScrollBox Left = 0 Top = 0 Width = 265 Height = 161 HorzScrollBar.Tracking = True VertScrollBar.Tracking = True Align = alClient TabOrder = 0 object Image1: TImage Left = 0 Top = 0 Width = 259 Height = 155 AutoSize = True DragMode = dmAutomatic OnStartDrag = Image1StartDrag end end end object CheckBox6: TCheckBox Left = 313 Top = 15 Width = 200 Height = 17 Caption = 'Stretch dropped image to fit' TabOrder = 1 OnClick = CheckBox6Click end object RadioGroup2: TRadioGroup Left = 304 Top = 56 Width = 225 Height = 65 Caption = 'Preferred graphic format to accept' Items.Strings = ( 'Enhanced &metafile' '&Bitmap') TabOrder = 2 OnClick = RadioGroup2Click end object CheckBox7: TCheckBox Left = 306 Top = 130 Width = 223 Height = 17 Caption = 'Accept preferred format only' TabOrder = 3 OnClick = CheckBox7Click end object CheckBox8: TCheckBox Left = 306 Top = 149 Width = 223 Height = 17 Caption = 'Allow drags from this image' TabOrder = 4 end end object TabSheet5: TTabSheet Caption = '&About' object Panel3: TPanel Left = 0 Top = 0 Width = 548 Height = 257 Align = alClient BevelOuter = bvNone BorderWidth = 3 TabOrder = 0 object GroupBox1: TGroupBox Left = 3 Top = 3 Width = 542 Height = 251 Align = alClient Caption = 'About the UnitOOPS Software Drag and Drop Components' TabOrder = 0 object Panel4: TPanel Left = 2 Top = 15 Width = 538 Height = 234 Align = alClient BevelOuter = bvNone BorderWidth = 10 TabOrder = 0 object Label19: TLabel Left = 10 Top = 130 Width = 518 Height = 14 Align = alTop Alignment = taCenter AutoSize = False Caption = 'Web: http://www.pobox.com/~unitoops' WordWrap = True end object Label18: TLabel Left = 10 Top = 73 Width = 518 Height = 15 Align = alTop AutoSize = False Caption = 'Contact UnitOOPS Software at:' Font.Charset = DEFAULT_CHARSET Font.Color = clActiveCaption Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [fsBold] ParentFont = False end object Label21: TLabel Left = 10 Top = 10 Width = 518 Height = 63 Align = alTop AutoSize = False Caption = 'Add inter-application drag and drop of text and graphics to your' + ' Delphi applications quickly and easily with these simple-to-use' + ' components.' WordWrap = True end object Label22: TLabel Left = 10 Top = 88 Width = 518 Height = 14 Align = alTop Alignment = taCenter AutoSize = False Caption = '132 Cherry Hill Road' WordWrap = True end object Label23: TLabel Left = 10 Top = 102 Width = 518 Height = 14 Align = alTop Alignment = taCenter AutoSize = False Caption = 'Orange, CT 06477, USA' WordWrap = True end object Label20: TLabel Left = 10 Top = 116 Width = 518 Height = 14 Align = alTop Alignment = taCenter AutoSize = False Caption = 'E-mail: unitoops@pobox.com' WordWrap = True end end end end end end end object UOTextSource1: TUOTextSource OnBeforeDrop = UOTextSource2BeforeDrop DropEffects = [deCopy] DonorComponent = ListBox1 Left = 16 Top = 246 end object UOTextTarget1: TUOTextTarget AcceptorControl = Memo1 AcceptTextFormats = [dtfURL, dtfText] OnDragEnter = UOTextTarget1DragEnter OnDragOver = UOTextTarget1DragOver OnDragLeave = UOTextTarget1DragLeave OnDrop = UOTextTarget1Drop Left = 158 Top = 247 end object UOTextTarget2: TUOTextTarget AcceptorControl = ListBox3 AcceptTextFormats = [dtfURL, dtfText] OnDrop = UOTextTarget2Drop Left = 190 Top = 247 end object UOTextSource2: TUOTextSource OnBeforeDrop = UOTextSource2BeforeDrop OnAfterDrop = UOTextSource2AfterDrop Text = 'Apples' DropEffects = [deCopy, deMove] DonorComponent = ListBox2 Left = 47 Top = 246 end object UOTextSource3: TUOTextSource OnBeforeDrop = UOTextSource3BeforeDrop OnAfterDrop = UOTextSource3AfterDrop DropEffects = [deCopy, deMove] DonorComponent = TreeView1 Left = 79 Top = 246 end object UOTextSource4: TUOTextSource OnAfterDrop = UOTextSource4AfterDrop DropEffects = [deCopy, deMove] DonorComponent = ListView1 Left = 110 Top = 246 end object UOGraphicTarget1: TUOGraphicTarget AcceptorControl = Panel5 AcceptGraphicFormats = [dgfMetafile, dgfBitmap] PreferredFormat = dgfMetafile OnDrop = UOGraphicTarget1Drop Left = 431 Top = 246 end object UOGraphicSource1: TUOGraphicSource Picture.Data = { 07544269746D6170D21F0000424DD21F00000000000036040000280000007A00 .....lines removed for brevity..... D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D20000} DropEffects = [deCopy] DonorImage = Image2 Left = 287 Top = 246 end object UOGraphicSource2: TUOGraphicSource Picture.Data = { 09544D65746166696C65DA3B0000D7CDC69A000000000000D50BDC0640020000 .....lines removed for brevity..... F50BB208} DropEffects = [deCopy] DonorImage = Image3 Left = 319 Top = 246 end object UOGraphicSource3: TUOGraphicSource DropEffects = [deCopy] DonorImage = Image1 Left = 350 Top = 246 end object UOGraphicSource4: TUOGraphicSource DropEffects = [deCopy] Left = 382 Top = 246 end endBack to top |