Использование контекстного меню с VBX
|
Выпущена новая версия WINDOWS для новых русских... При клике правой кнопкой мыши в пункте контекстного меню "упорядочить иконки" появляется подменю с пунктами "по типу", "чиста" и "канкретна".
|
Я хочу, чтобы при щелчке правой кнопкой мыши на моем VBX,
возникало контекстное меню. При вызове контекстного меню формы я не могу
определить где был произведен щелчок. Я же хочу показывать меню при щелчке
правой кнопкой на моем vbx.
Как мне перехватить это?
Например, так:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button = mbRight then
with (Sender as TControl) do
with ClientToScreen(Point(X, Y)) do
begin
PopupMenu1.PopupComponent := TComponent(Sender);
PopupMenu1.Popup(X, Y);
end;
end;
|
Примечание: Свойство формы PopupMenu должно быть пустым, иначе контекстное
меню будет появляться везде. Если вы хотите, чтобы форма была единственным
местом, где бы появлялось контекстное меню, разместите данный метод в
обработчике события формы OnMouseDown. Если вы хотите, чтобы единственно
возможным местом для появления контексного меню был бы VBX, то разместите
приведенный выше метод в обработчике события OnMouseDown самого VBX, ну и так
далее по аналогии.
|