![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странные символы & в PopupMenu
Ольга © (2004-12-13 11:01:00)Создаю 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;
Ольга (2004-12-13 12:11:00) [1]В базе & нет.
А AutoHotkeys = maManual сработало (ох, уж мне этот навязчивый сервис...)
Спасибо!
Юрий Зотов (2004-12-13 12:09:00) [2]ACanvas.TextOut(ARect.Left + 2, ARect.Top + 2,
StripHotKey((Sender as TMenuItem).Caption));
KSergey (2004-12-13 11:54:00) [3]Подозреваю, что эти самые & записаны в БД.
Это стандартные вещи обрабатываемые Win - после них символ подчеркивается и считается "горячей клавишей2 для этого пункта. Видимо, вам в отрисовывальщике необходимо добавит ьтакую функциональность либо вовсе отказаться от возможности горячих клавишь и выкинуть эти символы из БД.
stone (2004-12-13 11:54:00) [4]Поставь AutoHotkeys = maManual