我需要在Delphi中开发一个应用程序,我有一个TDrawGrid控件,图像显示在网格的单元格中,具体取决于我选择的布局类型。我在画面的画布上划一条线。我需要提供的功能是绘制一条线,在一个imgae上绘制多个线条,选择任意一条线并移动它,展开它,删除它。
有没有办法在运行时将这些行作为控件,以便它们都响应鼠标事件。
答案 0 :(得分:3)
我建议不要将绘图对象实现为非窗口VCL控件。你不会从中获得太多收益,但是有些东西(比如命中测试)会比你自己编写代码要困难得多。
VCL控件是矩形的,因此对于平行对角线,一个控件将至少部分地位于另一个控件之上。通常,鼠标事件仅到达Z顺序中的最顶层控件。这是你必须在你自己的代码中纠正的东西。
选定的行应标记结束点,以便用户知道在何处抓取它们以进行移动或调整大小。同样,自定义控件不提供(在运行时),因此您必须对此进行编码。
我可能只是创建一个线对象类,并实现创建,绘图,选择,移动和调整大小,自行删除行的所有功能。
答案 1 :(得分:1)
您可以创建自定义控件。 (请务必查看组件编写器手册,因为有一些捕获)。
您可以开始查看TShape控件。它用于简单的形状。也许你可以扩展它以支持线路。
答案 2 :(得分:1)
过去我创建了一个网络设计应用程序,使用形状,文本和&连接线。我使用了DevExpress'ExpressFlowChart产品,虽然它有一些缺点,但使任务相对简单。
正如mghie所提到的,打击测试是一个特别成问题的痛点。很高兴有人为你做一些繁重的工作。