type
TForm2 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure ListBox1StartDrag(Sender: TObject;
var DragObject: TDragObject);
private
{ Private declarations }
public
procedure wndproc (var message: Tmessage);override;
{ Public declarations }
end;
var
Form2: TForm2;
lb_droptext:string;
implementation
{$R *.DFM}
procedure TForm2.FormCreate(Sender: TObject);
var
i:integer;
begin
for i:= 0 to 9 do begin
listbox1.Items.Add (inttostr(i));
end;
listbox1.DragMode:=dmAutomatic;
end;
procedure TForm2.ListBox1StartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
lb_droptext:=listbox1.Items[listbox1.itemindex];
end;
procedure TForm2.wndproc(var message: Tmessage);
var
i_fmhwnd,i_lbhwnd:longint;
p_mpoint:Tpoint;
begin
if message.Msg = WM_USER+100 then begin
i_fmhwnd:=findwindow(nil,'form1');
if i_fmhwnd<> 0 then begin
getcursorpos(p_mpoint);
p_mpoint.x :=p_mpoint.x - message.WParam ;
p_mpoint.y :=p_mpoint.y -message.LParam;
i_lbhwnd:=ChildWindowFromPoint(i_fmhwnd, p_mpoint);
if i_lbhwnd<> 0 then begin
sendmessage(i_lbhwnd,LB_ADDSTRING,0,integer(pchar(lb_DropText)));
end;
end;
end
else inherited wndproc(message);
type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
private
procedure CMMouseEnter(var msg:tmessage);message CM_MOUSEENTER;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const SENDMEMESSAGE=WM_USER+100;
implementation
{$R *.DFM}
{ TForm1 }
procedure TForm1.CMMouseEnter(var msg: tmessage);
var
o_obj: TObject;
i_fmhwnd:Longint;
begin
o_obj:=Tobject(msg.lParam);
if o_obj is Tlistbox then
begin
i_fmhwnd:=findwindow(nil,'form2');
if i_fmhwnd<>0 then begin
sendmessage(i_fmhwnd,SENDMEMESSAGE,form1.Left ,form1.Top);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin