您的位置:首页 > 产品设计 > 产品经理

TcxGridPopupMenu 中自定义菜单

2016-07-16 21:19 393 查看
procedure TFrm_SingleGrid.GridCustomPopupMenu(aGridPopup: TcxGridPopupMenu);
var
AMenu: TComponent;
FMenuItem, FSubMenuItem: TMenuItem;
begin
if aGridPopup.BuiltInPopupMenus.Count = 0 then Exit;
AMenu := aGridPopup.BuiltInPopupMenus[0].PopupMenu;
if Assigned(AMenu) and AMenu.InheritsFrom(TPopupMenu) then
begin
//表头位置
FMenuItem := TMenuItem.Create(Self);
FMenuItem.Name := 'miHeaderAlignment';
FMenuItem.Caption := '表头位置';

FSubMenuItem := TMenuItem.Create(Self);
FSubMenuItem.Name := 'miHeaderAlignmentLeft';
FSubMenuItem.Caption := '靠左';
FSubMenuItem.RadioItem := True;
FSubMenuItem.GroupIndex := 5; //指定同一组
//FSubMenuItem.Checked := True;
FSubMenuItem.OnClick := miHeaderAlignmentClick;
FMenuItem.Add(FSubMenuItem); //加入二级子菜单

FSubMenuItem := TMenuItem.Create(Self);
FSubMenuItem.Name := 'miHeaderAlignmentCenter';
FSubMenuItem.Caption := '居中';
FSubMenuItem.RadioItem := True;
FSubMenuItem.GroupIndex := 5;
FSubMenuItem.OnClick := miHeaderAlignmentClick;
FMenuItem.Add(FSubMenuItem);
TPopupMenu(AMenu).Items.Add(FMenuItem);

FSubMenuItem := TMenuItem.Create(Self);
FSubMenuItem.Name := 'miHeaderAlignmentRight';
FSubMenuItem.Caption := '靠右';
FSubMenuItem.RadioItem := True;
FSubMenuItem.GroupIndex := 5;
FSubMenuItem.OnClick := miHeaderAlignmentClick;
FMenuItem.Add(FSubMenuItem);

//表格位置
FMenuItem := TMenuItem.Create(Self);
FMenuItem.Name := 'miRowAlignment';
FMenuItem.Caption := '表格位置';

FSubMenuItem := TMenuItem.Create(Self);
FSubMenuItem.Name := 'miRowAlignmentLeft';
FSubMenuItem.Caption := '靠左';
FSubMenuItem.RadioItem := True;
FSubMenuItem.GroupIndex := 5; //指定同一组
//FSubMenuItem.Checked := True;
FSubMenuItem.OnClick := miRowAlignmentClick;
FMenuItem.Add(FSubMenuItem); //加入二级子菜单

FSubMenuItem := TMenuItem.Create(Self);
FSubMenuItem.Name := 'miRowAlignmentCenter';
FSubMenuItem.Caption := '居中';
FSubMenuItem.RadioItem := True;
FSubMenuItem.GroupIndex := 5;
FSubMenuItem.OnClick := miRowAlignmentClick;
FMenuItem.Add(FSubMenuItem);
TPopupMenu(AMenu).Items.Add(FMenuItem);

FSubMenuItem := TMenuItem.Create(Self);
FSubMenuItem.Name := 'miRowAlignmentRight';
FSubMenuItem.Caption := '靠右';
FSubMenuItem.RadioItem := True;
FSubMenuItem.GroupIndex := 5;
FSubMenuItem.OnClick := miRowAlignmentClick;
FMenuItem.Add(FSubMenuItem);
//导出
FMenuItem := TMenuItem.Create(Self);
FMenuItem.Name := 'miExport';
FMenuItem.Caption := '导出';
FMenuItem.OnClick := Self.miExportClick;
TPopupMenu(AMenu).Items.Add(FMenuItem);

//打印
FMenuItem := TMenuItem.Create(Self);
FMenuItem.Name := 'miPrint';
FMenuItem.Caption := '打印';
FMenuItem.OnClick := Self.miPrintClick;
TPopupMenu(AMenu).Items.Add(FMenuItem);
//布局
FMenuItem := TMenuItem.Create(Self);
FMenuItem.Name := 'miSaveLayout';
FMenuItem.Caption := '保存布局';
FMenuItem.OnClick := Self.miSaveLayoutClick;
TPopupMenu(AMenu).Items.Add(FMenuItem);
end;
end;

//cxgrid Header标题 居左、居中、居右
procedure TFrm_SingleGrid.miHeaderAlignmentClick(Sender: TObject);
var
AHitTest: TcxCustomGridHitTest;
begin
AHitTest := cxgrdpmn_Main.HitTest;
if GetHitTypeByHitCode(AHitTest.HitTestCode) = gvhtColumnHeader then
begin
if TMenuItem(Sender).Name = 'miHeaderAlignmentLeft' then
TcxGridColumnHeaderHitTest(AHitTest).Column.HeaderAlignmentHorz := taLeftJustify;
if TMenuItem(Sender).Name = 'miHeaderAlignmentRight' then
TcxGridColumnHeaderHitTest(AHitTest).Column.HeaderAlignmentHorz := taRightJustify;
if TMenuItem(Sender).Name = 'miHeaderAlignmentCenter' then
TcxGridColumnHeaderHitTest(AHitTest).Column.HeaderAlignmentHorz := taCenter;
end;
end;
//cxgrid 行数据  居左、居中、居右
procedure TFrm_SingleGrid.miRowAlignmentClick(Sender :TObject);
var
AHitTest: TcxCustomGridHitTest;
begin
AHitTest := cxgrdpmn_Main.HitTest;
if GetHitTypeByHitCode(AHitTest.HitTestCode) = gvhtColumnHeader then
begin
if TMenuItem(Sender).Name = 'miRowAlignmentLeft' then
TcxCustomGridColumnHitTest(AHitTest).Column.GetProperties.Alignment.Horz := taLeftJustify;
if TMenuItem(Sender).Name = 'miRowAlignmentRight' then
TcxCustomGridColumnHitTest(AHitTest).Column.GetProperties.Alignment.Horz := taRightJustify;
if TMenuItem(Sender).Name = 'miRowAlignmentCenter' then
TcxCustomGridColumnHitTest(AHitTest).Column.GetProperties.Alignment.Horz := taCenter;
end;

end;
// cxgrid 导出功能
procedure TFrm_SingleGrid.miExportClick(Sender: TObject);
var
FileName: String;
begin
dlgSave.Filter := '*.xls|*.xls|*.xml|*.xml|*.txt|*.txt|*.html|*.html';
dlgSave.Title := '导出为';
if not dlgSave.Execute then Exit;
FileName := dlgSave.FileName;
case dlgSave.FilterIndex of
1 : ExportGridToExcel(FileName, cxgrd_Main);
2 : ExportGridToXML(FileName, cxgrd_Main);
3 : ExportGridToText(FileName, cxgrd_Main);
4 : ExportGridToHTML(FileName, cxgrd_Main);
end;

TPublicClass.ShowDialog('导出完成...');

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: