| 发表于:2007-05-15 10:18:151楼 得分:0 |
放一个panel在上面,为它写两个事件, 还有一个可以动态生成button的按钮,代码如下: unit unit1; interface uses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, extctrls, stdctrls; type tform1 = class(tform) panel1: tpanel; button1: tbutton; procedure panel1dragdrop(sender, source: tobject; x, y: integer); procedure panel1dragover(sender, source: tobject; x, y: integer; state: tdragstate; var accept: boolean); procedure button1click(sender: tobject); private { private declarations } public { public declarations } end; var form1: tform1; implementation {$r *.dfm} procedure tform1.panel1dragdrop(sender, source: tobject; x, y: integer); begin if (source is tbutton) then begin with source as tbutton do begin left := x; top := y; end; end; end; procedure tform1.panel1dragover(sender, source: tobject; x, y: integer; state: tdragstate; var accept: boolean); begin if source is tbutton then accept := true; end; procedure tform1.button1click(sender: tobject); begin with tbutton.create(self) do begin parent := panel1; top := panel1.top + 5; left := panel1.left + 5; dragmode := dmautomatic; caption := 'test '; end; end; end. | | |
|