Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.26;
Скачать: CL | DM;

Вниз

Странные символы & в PopupMenu   Найти похожие ветки 

 
Ольга   (2004-12-13 11:01) [0]

Создаю PopupMenu динамически. Пункты меню читаю из базы (соединяю 3 поля типа varchar).
Если PopupMenu.OwnerDraw:=False, то все ОК. Получаю менюшку:

ИС 1.1 (-Р макс)
ИС 1.2 (+Р мин)
...

Но мне нужно вывести пункты меню разным цветом. Делаю PopupMenu.OwnerDraw:=True, пишу на onDrawItem обработку - получаю разноцветное меню, но с символами &:

ИС &1.1 (-Р макс)
ИС 1.&2 (+Р мин)
...

Откуда эти & беруться и как с ними бороться?

На всякий случай привожу код:

procedure TFMain.FormActivate(Sender: TObject);
var Cause: TADOQuery;
   mi: TMenuItem;  
   mystr: String;
begin

 // Связь с БД, открытие Cause
 // Формирование PopupMenu

   While not Cause.Eof do    
   begin
     mystr:=Trim(Cause.FieldByName("CauseGroup").AsString)+"   "+
            Trim(Cause.FieldByName("number").AsString)+"  "+
            Trim(Cause.FieldByName("SmallName2").AsString);

     mi:=TMenuItem.Create(self);
     Popup.Items.Add(mi);
     Popup.Items[i].Tag:=Cause.FieldByName("ID").AsInteger;
     Popup.Items[i].Caption:=mystr;
     Popup.Items[i].OnClick:=N1Click;
     Popup.Items[i].OnDrawItem:=N1DrawItem;
     inc(i);
     Cause.Next;
   end;
end;

procedure TFMain.N1DrawItem(Sender: TObject; ACanvas: TCanvas;
 ARect: TRect; Selected: Boolean);

begin
     if (Sender as TMenuItem).Tag < 8 then
          ACanvas.Font.Color:=clred
     else ACanvas.Font.Color:=clblue;
     ACanvas.TextOut(ARect.Left+2, ARect.Top+2,(Sender as TMenuItem).Caption);

end;


 
KSergey ©   (2004-12-13 11:54) [1]

Подозреваю, что эти самые & записаны в БД.
Это стандартные вещи обрабатываемые Win - после них символ подчеркивается и считается "горячей клавишей2 для этого пункта. Видимо, вам в отрисовывальщике необходимо добавит ьтакую функциональность либо вовсе отказаться от возможности горячих клавишь и выкинуть эти символы из БД.


 
stone ©   (2004-12-13 11:54) [2]

Поставь AutoHotkeys = maManual


 
Юрий Зотов ©   (2004-12-13 12:09) [3]

ACanvas.TextOut(ARect.Left + 2, ARect.Top + 2,
 StripHotKey((Sender as TMenuItem).Caption));


 
Ольга   (2004-12-13 12:11) [4]

В базе & нет.
А AutoHotkeys = maManual сработало (ох, уж мне этот навязчивый сервис...)
Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2004.12.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.034 c
1-1103043697
Sam Stone
2004-12-14 20:01
2004.12.26
Объект в объекте


1-1102497058
TUser
2004-12-08 12:10
2004.12.26
Одна консоль на двоих и много на одного


4-1100151730
Delph
2004-11-11 08:42
2004.12.26
Блокировка щелчка мышью в заголовке окна (формы)


3-1101947257
Alexey Leonchik
2004-12-02 03:27
2004.12.26
Распространение приложения под MS SQL 2000


4-1100024346
Федор
2004-11-09 21:19
2004.12.26
COM-порт