Советы по Delphi

         

Использование контекстного меню с VBX


Я хочу, чтобы при щелчке правой кнопкой мыши на моем 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, ну и так далее по аналогии.

[000839]



Содержание раздела