Помощь - Поиск - Пользователи - Календарь
Полная версия: Popup Menu
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
#$# PaVeL #$#
Popup Menu
Можно ли заставить не исчезать по событию выбора элемента, а допустим поставить галку и предоставить право отмечать другие элементы? Если ДА - то как?
volvo
Можно...

var pnt: TPoint;

// Вот эту процедуру вешаешь на обработчик клика всех MenuItem-ов
procedure TForm1.myClick(Sender: TObject);
begin
(Sender as TMenuItem).Checked := not (Sender as TMenuItem).Checked;
PopupMenu1.Popup(pnt.X, pnt.Y);
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssRight in Shift then begin
pnt := ClientToScreen(Point(X, Y));
end;
end;

#$# PaVeL #$#
Спасибо volvo но при том что я менюшки отрисовываю сам и построение списка занимает время - вариант неудобен... не красиво получается, что меню появляется с небольшой задержкой и иногда под таскбаром, делал чтоб всегда над ним была, звуки неудачно срабатывают... Вообщем жутко неудобный вариант...

Есть ли альтернативы?
volvo
Можно еще проще, без отслеживания кликов правой кнопкой:

procedure TForm1.first1Click(Sender: TObject);
var pnt: TPoint;
begin
(Sender as TMenuItem).Checked := not (Sender as TMenuItem).Checked;
pnt := PopupMenu1.PopupPoint;
PopupMenu1.Popup(pnt.X, pnt.Y);
end;
volvo
Цитата
при том что я менюшки отрисовываю сам и построение списка занимает время - вариант неудобен..
Можно посмотреть, как именно ты сам отрисовываешь, и какого размера у тебя эти менюшки, что это притормаживает? smile.gif

Может, ты AutoPopup не сбросил, и поэтому оно притормаживает?
#$# PaVeL #$#
Код был написанн на ассемблере, где я эксперементировал с менюшками...
Начинаю писать новую программу и задумался над тем как поступать дальше...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.