0]MainModule的BrowserOptions.boDisableMouseRightClick设置为Trure;
1]控件的OnCellContextClick的事件
procedure TMainForm.UniDBGrid1CellContextClick(Column: TUniDBGridColumn; X, Y: Integer); begin UniPopupMenu1.Popup(X, Y, UniDBGrid1);//弹出 右键菜单,绑定UniDBGrid1 end;
procedure TMainForm.UniContainerPanel2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbRight then begin LastX := X; LastY := Y; UniPopupMenu1.Popup(X, Y, UniContainerPanel2); //X,Y为坐标 end; end;
2]再写菜单事件
procedure TMainForm.N1Click(Sender: TObject); begin UniDBGrid1.DataSource.DataSet.Delete; end;
uniGUI开发的项目在运行时能否禁用鼠标右键菜单呢?答案是肯定的,因为uniGUI提供了一系列的配置属性让你可以根据需要个性化设置,如此将UniMainModule的BrowserOptions属性的boDisableMouseRightClick设置为true就可以禁用右键菜单,特别简单。但是如此设置后整个页面上的所有控件都看不见右键菜单了,如何只禁用某个控件的右键菜单呢?比如不做全局设置,而是仅仅让UniTreeView1控件内不能右键弹出菜单,代码如下:
procedure TMainForm.UniFormAfterShow(Sender: TObject); begin UniSession.AddJS( UniTreeView1.JSId+'.addEventListener("contextmenu", e => e.preventDefault())' ); end;
禁止的右键菜单是这个
不包括UniPopupMenu1