Popup Menu
Можно ли заставить не исчезать по событию выбора элемента, а допустим поставить галку и предоставить право отмечать другие элементы? Если ДА - то как?
Можно...
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;
Спасибо 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;
Код был написанн на ассемблере, где я эксперементировал с менюшками...
Начинаю писать новую программу и задумался над тем как поступать дальше...