Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Заголовок в popup menu


Автор: Zlo 16.9.2009, 00:39
Как сделать в popup меню заголовок, т.е. пункт popupменю который бы не нажимался но выглядел как активный пункт меню?
Перерыл весь форум, но то ли неправильно сформулировал мысль то ли нет такой темы, да и в нете ничего не нашел-один мусор. Или это можно только сделать самому если создавать меню через WinAPI?
Может в Кепшене нужно просто какойто символ поставить в начале?

Автор: ~FoX~ 16.9.2009, 08:30
Zlo, 
В попупе OwnerDraw := true;
Выбираем первый итем, делаем его Enabled := false;
Дальше в обработчике итема AdvancedDrawItem пишем...
Код

procedure TForm1.N11AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; State: TOwnerDrawState);
begin
  ACanvas.FillRect(ARect);
  ACanvas.TextOut(2, ARect.Top + 2, (Sender as TMenuItem).Caption);
end;

Все, он вроде как активный, но и нажать низя будет

Автор: Zlo 16.9.2009, 11:24
Да,все кул. Я так и думал что его руками рисовать надо будет...
Но фишка в том что, у меня теперь не рисуются точки в меню, аля радиобутон. Как их тоже отрисовать?

Автор: ~FoX~ 16.9.2009, 13:06
Ну точку тоже придется самому рисовать...

У меня реалезовано так - бросаем ИмиджЛист туда грузим битмап с точкой или галкой или с чем угодно и что нить в этом роде и в обработчике добавляем такое

Код

if (Sender as TMenuItem).Checked then begin
  ImageList1.Draw(ACanvas, ARect.Left+2, ARect.Top+2, 0); //Вместо 0 поставь номер картинки в имиджлисте
end;


На картинке, в меню все глифы и галки отрисованы руками...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)