Как добавить TLabel в строку меню в Delphi? - PullRequest
5 голосов
/ 19 ноября 2009

Я использую Beyond Compare (отличная программа), и был очень впечатлен, когда он отобразил ярлык «Доступна новая версия» в строке меню. Я нажал на него, открыл окно установки новой версии, оно установилось, программа перезапустилась сама, и появилась новая версия, а метки больше нет.

Я думал, что это отличная особенность. Ярлык находится на видном месте в строке меню, где пользователь не может пропустить его. Я уже получил процедуру обновления, поэтому все, что мне нужно было сделать, это добавить ярлык. Это должно быть легко.

Вот этикетка, где я хочу это: The Label Where I Want It
(источник: beholdgenealogy.com )

... Неверно. Я не мог понять, как добавить ярлык туда. Строка меню и область управления над ней являются областью для визуальных компонентов. Я не мог поставить там одну.

Но я знаю, что это можно сделать, потому что Beyond Compare - это программа Delphi.

Может кто-нибудь сказать мне, что я должен сделать, чтобы поместить TLabel в мою строку меню или, по крайней мере, сделать так, чтобы он находился над строкой меню в правильном положении?

Для справки я использую Delphi 2009.


Заключение: Кристофер, похоже, правильно понял, что делали люди из Beyond Compare. Я решил реализовать пункт меню, но без настройки его решения «рисовать владельца». Таким образом, я не выгляжу как выделение гиперссылкой, выделенное синим жирным шрифтом, но я также не теряю все автоматические вещи (например, стиль Vista), которые пропускает рисование владельца.

Чтобы выделить пункт меню справа, я добавил пункт после «Справки» с заголовком «» и отключен.

Спасибо, Кристофер. Я застрял, думая, что это должен быть ярлык, но вы видели вокруг этого.

Ответы [ 2 ]

13 голосов
/ 19 ноября 2009

Вы уверены, что это лейбл?

Я не использовал программу, но это мог быть просто элемент меню, установленный на «рисование владельца» и окрашенный в виде ссылки?

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;

и затем любой из них имеет ImageList, присвоенный MainMenu1.Images или установите MainMenu1.OwnerDraw на true.

2 голосов
/ 30 ноября 2009

Реализация Beyond Compare на самом деле является TLabel. Мы используем Toolbar 2000 для наших меню и панелей инструментов, поэтому поддерживается непосредственное встраивание элемента управления в меню (с правильным фоном), а также преимущество в том, что он поддерживает выравниваемые по правому краю пункты меню.

...