lke*_*ler 5 delphi user-interface label vcl
我使用Beyond Compare(一个很棒的程序),当它在菜单栏上显示"New Version Available"标签时给人留下了深刻的印象.我点击它,弹出一个安装新版本框,它安装,程序重新启动自己,有新版本,没有更多的标签.
我认为这是一个很棒的功能.标签位于菜单栏上的显着位置,用户不会错过它.我已经有了更新程序,所以我所要做的就是添加标签.这应该很容易.
这是我想要的标签: 标签我想要的地方http://www.beholdgenealogy.com/img/tlabel.jpg
......错了.我无法弄清楚如何在那里添加标签.菜单栏和其上方的控制区域似乎是可视组件的手动区域.我不能在那里放一个.
但我知道它可以做到,因为Beyond Compare是一个Delphi程序.
任何人都可以告诉我,我必须做什么才能将TLabel放入我的菜单栏或至少让它看起来在菜单栏上方的正确位置?
作为参考,我使用Delphi 2009.
结论:克里斯托弗似乎已经正确地弄清楚Beyond Compare人员做了什么.我决定实现菜单项,但没有定制他的"所有者绘制"解决方案.所以我没有得到蓝色粗体下划线超链接外观,但我也没有丢失所有者绘制跳过的所有自动内容(如Vista样式).
为了将菜单项分隔到右侧,我在"帮助"后面添加了一个带有标题""并禁用的项目.
谢谢,克里斯托弗.我被困在认为它必须是一个标签,但你看到了那个.
Chr*_*ase 13
你确定它是一个标签吗?
我没有使用过该程序,但它可能只是一个菜单项,设置为"所有者绘制"并绘制为看起来像一个链接?
http://sirmonkeys.com/images/updatelink.png
(在Delphi 7中完成)
procedure TForm1.MYITem1DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
acanvas.Font.Style := [fsUnderline,fsbold];
acanvas.Font.color := clblue;
acanvas.Brush.Style := bsClear;
acanvas.TextOut(arect.left+1,arect.top+1,'Link to Update...');
end;
procedure TForm1.MYITem1MeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
width := 100;
end;
Run Code Online (Sandbox Code Playgroud)
然后要么ImageList分配到MainMenu1.Images
或设置MainMenu1.OwnerDraw为true.