请看一下这个截图
替代文字http://www.maclife.com/files/u18/Yep3-big.jpg
我认为这些是'标签面板'的主要特征:
1)面板上的每个标签都是独立控件,可以单击
2)当没有足够的空间显示当前行中的下一个标记时自动换行.
3)每个标签的圆角矩形边框是一个很好的功能.
我想在Delphi中实现类似的功能,是否有现成的控件来执行此操作?如果没有,实施这种控制的最佳方法是什么?
谢谢.
每个可点击标签不一定必须是其自己的控件。它只需是您可以检测到被单击的区域即可。
假设您将每个区域表示为一个Windows 区域。您可以使用该函数根据其文本计算出每个文本的宽度TCanvas.TextExtent
。然后创建一个具有类似 函数的区域CreateRectRgn
。对于圆角,请尝试CreateRoundRectRgn
改为。您可以使用该函数测试每个区域的鼠标事件PtInRegion
。您可以使用 绘制它们周围的边框FrameRgn
。最后一个障碍是将它们绘制在屏幕上,以便它们全部适合。您正在创建区域并且知道它们的宽度,因此将标记分配给一行,直到空间不足,然后开始下一行。
归档时间: |
|
查看次数: |
782 次 |
最近记录: |