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');
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)