Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Popup Menu

Автор: #$# PaVeL #$# 1.05.2008 13:43

Popup Menu
Можно ли заставить не исчезать по событию выбора элемента, а допустим поставить галку и предоставить право отмечать другие элементы? Если ДА - то как?

Автор: volvo 1.05.2008 14:59

Можно...

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 #$# 1.05.2008 15:06

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

Есть ли альтернативы?

Автор: volvo 1.05.2008 15:07

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

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 1.05.2008 15:39

Цитата
при том что я менюшки отрисовываю сам и построение списка занимает время - вариант неудобен..
Можно посмотреть, как именно ты сам отрисовываешь, и какого размера у тебя эти менюшки, что это притормаживает? smile.gif

Может, ты AutoPopup не сбросил, и поэтому оно притормаживает?

Автор: #$# PaVeL #$# 1.05.2008 16:47

Код был написанн на ассемблере, где я эксперементировал с менюшками...
Начинаю писать новую программу и задумался над тем как поступать дальше...