https://www.cnblogs.com/false/archive/2013/02/24/2924308.html
通过百度网盘分享的文件:DesignVCL.rar
链接:https://pan.baidu.com/s/1CBNyyNl357Oi44ajH0xR8g
提取码:uxz9
两个组件 要 注册为包,才能再加载
https://www.cnblogs.com/yangxuming/p/9232599.html
一定要先拖放一个Button,在界面上,不要问为什么

var MStream : TMemoryStream; List : TList; aCheckButton: TButton; // 新 Button的指针 var c: boolean; // 是否移动的开关 tx, ty: Integer; // 鼠标在控件上按下时的坐标
//新增button procedure TForm1.ToolButton1Click(Sender: TObject); begin aCheckButton := TButton.Create(self); With aCheckButton do begin Top := 60; // button 的出现的坐标 Width := 60; // button 的宽度 Left := 20 ; height:=34; Parent := panel1; // 指明在那个窗体显示 // OnClick := CustomButtonClick; // 指定button click事件 OnMouseDown:=Button3MouseDown; OnMouseMove:=Button3MouseMove; OnMouseUp :=Button3MouseUp; DragMode:=dmManual; Caption := 'aButton'; end; // with if aCheckButton.CanFocus then aCheckButton.Focused; end;
procedure TForm1.ToolButton3Click(Sender: TObject); // 窗口控件 -> MStream->文件 begin MStream.Position := 0; ComPersist.SaveComsToStream(MStream, List); MStream.SaveToFile('aaa.tula'); end;
procedure TForm1.ToolButton2Click(Sender: TObject); //文件->MStream-> 窗口 begin MStream.Position := 0; MStream.LoadFromFile('aaa.tula'); ComPersist.LoadComsFromStream(MStream, Self); end;
procedure TForm1.Button3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then //判断按下的是不是鼠标左键 begin c := true; // 按下鼠标左键后,可以移动 tx := X; // 记录下鼠标点击的开始坐标X ty := Y; // 记录下鼠标点击的开始坐标 Y end; end; procedure TForm1.Button3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if c then if sender is TButton then begin TButton(sender).Left := Tbutton(sender).Left + X - tx; // 改变控件的Left坐标 ,X-tx是相对开始时移动的距离 TButton(sender).Top := Tbutton(sender).Top + Y - ty; // 改变控件的Top坐标 ,Y-ty是相对开始时移动的距离 end; end; procedure TForm1.Button3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin c := false; // 放开鼠标后,不可以移动 if sender is TButton then List.Add(sender); end;
With aCheckListBox do
begin
Parent := panel1; // 指明在那个窗体显示
aCheckListBox.Items.Add('1');
aCheckListBox.Items.Add('2');
浙公网安备 33010602011771号