Delphi 1
Использование контекстного меню с 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]