把显示字段、隐藏字段的功能做到DBGrid的右键PopMenu中
1)隐藏
在MenuItem的onClick事件中
TDBGrid(PM_sort.PopupComponent).Columns[当前列].Visible := (sender <> N_隐藏字段);
2)显示
在PopMenu的onPopup事件中动态加入当前DBGrid的所以字段到PopMenu的“显示字段”中去,
并且如果Field。Width为-1则在显示字段菜单中的Visiable为tur,否则为falsee;
例子:
if(ActiveControl is TDBGrid) then
begin
N_FieldC.Clear;
N_FieldS.Clear;
with TDBGrid(ActiveControl) do
for loopin:=0 to FieldCount-1 do
begin
{}
NewItem := TMenuItem.Create(nil);
NewItem.RadioItem := true;
NewItem.OnClick := MenuNode_Click;
NewItem.Visible :=(Columns[loopin].Title.Font.Color = TDBGrid(ActiveControl).TitleFont.Color) or(Edit_pyw_js.Text = ADM_USER);
NewItem.Checked :=(Columns[loopin].Color <> TDBGrid(ActiveControl).Color);
NewItem.Caption := Columns[loopin].Title.Caption;
NewItem.Hint := Columns[loopin].FieldName;
NewItem.Name := format('N_Sort%0.2d',[loopin]);
N_FieldC.Add(NewItem);//增加到字段排序子菜单中
{}
OldItem := TMenuItem.Create(nil);
// OldItem.RadioItem := true;
OldItem.OnClick := MenuNode_Click;
OldItem.Visible :=(Columns[loopin].Visible = false) and(NewItem.Visible = true);
OldItem.Caption := Columns[loopin].Title.Caption;
OldItem.Hint := Columns[loopin].FieldName;
OldItem.Name := format('N_Show%0.2d',[loopin]);
N_FieldS.Add(OldItem);//增加到字段显示子菜单中
end;
end;
3)保存
将DGBGrid的Field.Widthbcun保存到Ini文件即可;