在Delphi中创建表单编辑器

在Delphi中创建表单编辑器,第1张

概述我的目标是创建一个简单的表单编辑器,就像我们在Delphi IDE上找到的那样. 现在,用户可以选择并添加组件,使其成为表单持有者的TPanel的父级.为简单起见,请将TPanel视为添加到表单中的可视组件. 我有2个缺少的部分,我想找出想法/代码来帮助完成: 1 – 如何移动创建的可视组件?与IDE相同的效果是移动可视组件,例如Tpanel,围绕它的顶部和左侧位置 2 – 如何使用焦点在表单编辑 我的目标是创建一个简单的表单编辑器,就像我们在Delphi IDE上找到的那样.

现在,用户可以选择并添加组件,使其成为表单持有者的TPanel的父级.为简单起见,请将TPanel视为添加到表单中的可视组件.

我有2个缺少的部分,我想找出想法/代码来帮助完成:

1 – 如何移动创建的可视组件?与IDE相同的效果是移动可视组件,例如Tpanel,围绕它的顶部和左侧位置
2 – 如何使用焦点在表单编辑器上绘制组件的钩子
3 – 如何使用钩子调整大小

我只想要与处理视觉部分相关的部分.我没有生成DFM或类似的东西.

解决方法 只需将您的移动代码需要执行此 *** 作:

>当鼠标按下时,检查鼠标位置是否在可以拖动的控件上.如果是,则设置名为fdragControl的变量以引用该控件.此代码位于OnMouseDown事件处理程序中.
>当鼠标移动时,如果fdragControl不是nil,则移动控件.此代码位于OnMouseMove事件处理程序中.
>当鼠标上升时,将fdragControl设置为nil.

这就是它的全部内容.主要的细微差别是你必须记住拖动开始时鼠标的X,Y值.所以在你的OnMouseDown处理程序中,你写道:

FStartMousePos := Point(X,Y);FStartDragControlPos := Point(fdragControl.left,fdragControl.top);

然后在OnMouseMove中,您的位置代码为:

fdragControl.left := FStartDragControlPos.X + (X-FStartX);fdragControl.top := FStartDragControlPos.Y + (Y-FStartY);

开始拖动时还需要捕获鼠标.

调整大小代码类似.同样,您需要在OnMouseDown中决定要调整大小而不是拖动,但代码仍然涉及处理鼠标按下,移动和向上事件.

至于绘画,只要你的一个事件处理程序更改了一个会影响表单视觉外观的属性,就需要强制重绘.您可以使用fdragControl的值来决定是否使用控件的特殊绘图并指示它是否被拖动.同样适合调整大小.

我没有编写完整的工作实现,因为你的问题是高级和概念性的.实施取决于您.

总结

以上是内存溢出为你收集整理的在Delphi中创建表单编辑器全部内容,希望文章能够帮你解决在Delphi中创建表单编辑器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1266754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存