cxcustomtablevieweditor.pas

来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,118 行 · 第 1/3 页

PAS
1,118
字号
  AItem := CreateViewItem(View);
  UpdateColumnList;
  ListBoxSelectByObject(LBColumns, AItem);
  LBColumnsClick(nil);
  UpdateDesigner;
end;

procedure TcxCustomTableViewEditor.BColumnAddMissingClick(Sender: TObject);
begin
  DoCreateViewItems(True);
end;

procedure TcxCustomTableViewEditor.BColumnDeleteClick(Sender: TObject);
begin
  if LBColumns.SelCount > 0 then
  begin
    BeginUpdate;
    try
      ListBoxDeleteSelection(LBColumns, True);
      UpdateColumnList;
      LBColumnsClick(nil);
      UpdateDesigner;
    finally
      EndUpdate;
    end;
  end;
end;

procedure TcxCustomTableViewEditor.BColumnRestoreClick(Sender: TObject);
var
  I: Integer; 
begin
  if LBColumns.SelCount > 0 then
  try
    for I := 0 to LBColumns.Items.Count - 1 do
      if LBColumns.Selected[I] then
        TcxCustomGridTableItem(LBColumns.Items.Objects[I]).RestoreDefaults;
  finally
    UpdateColumnList;
    LBColumnsClick(nil);
    UpdateDesigner;
  end;
end;

procedure TcxCustomTableViewEditor.BColumnMoveUpClick(Sender: TObject);
begin
  FColumnsPrevDragIndex := -1;
  ListBoxMoveUpItems(LBColumns, FColumnsPrevDragIndex, ReindexColumnsProc);
end;

procedure TcxCustomTableViewEditor.BColumnMoveDownClick(Sender: TObject);
begin
  FColumnsPrevDragIndex := -1;
  ListBoxMoveDownItems(LBColumns, FColumnsPrevDragIndex, ReindexColumnsProc);
end;

procedure TcxCustomTableViewEditor.BColumnAddAllClick(Sender: TObject);
begin
  if View.ItemCount > 0 then
    case Application.MessageBox(PChar(GetDeleteItemsCaption),
      'Confirm', MB_YESNOCANCEL) of
        IDYES:
          View.ClearItems;
        IDCANCEL:
          Exit;
    end;
  DoCreateViewItems(False);
end;

procedure TcxCustomTableViewEditor.MIColumnSelectAllClick(Sender: TObject);
begin
  SelectAllColumns;
  LBColumnsClick(nil);
end;

// Summary - Footer

procedure TcxCustomTableViewEditor.LBFooterSummaryClick(Sender: TObject);
begin
  FormEditor.ListBoxApplySelection(LBFooterSummary, FooterSummaryItems);
end;

procedure TcxCustomTableViewEditor.BAddFooterSummaryItemClick(
  Sender: TObject);
begin
  CollectionItemsAdd(LBFooterSummary, FooterSummaryItems);
end;

procedure TcxCustomTableViewEditor.BDeleteFooterSummaryItemClick(
  Sender: TObject);
begin
  CollectionItemsDelete(LBFooterSummary, FooterSummaryItems);
end;

// Summary - Default Group

procedure TcxCustomTableViewEditor.LBDefaultGroupsSummaryClick(
  Sender: TObject);
begin
  FormEditor.ListBoxApplySelection(LBDefaultGroupsSummary, DefaultGroupSummaryItems);
end;

procedure TcxCustomTableViewEditor.BDefaultGroupSummaryAddClick(Sender: TObject);
begin
  CollectionItemsAdd(LBDefaultGroupsSummary, DefaultGroupSummaryItems);
end;

procedure TcxCustomTableViewEditor.BDefaultGroupSummaryDeleteClick(
  Sender: TObject);
begin
  CollectionItemsDelete(LBDefaultGroupsSummary, DefaultGroupSummaryItems);
end;

// Summary - Groups

procedure TcxCustomTableViewEditor.LBSummaryGroupsClick(Sender: TObject);
begin
  FormEditor.ListBoxApplySelection(LBSummaryGroups, SummaryGroups);
end;

procedure TcxCustomTableViewEditor.BSummaryGroupAddClick(Sender: TObject);
begin
  CollectionItemsAdd(LBSummaryGroups, SummaryGroups);
end;

procedure TcxCustomTableViewEditor.BSummaryGroupDeleteClick(
  Sender: TObject);
begin
  CollectionItemsDelete(LBSummaryGroups, SummaryGroups);
end;

// Summary - Selected Group

procedure TcxCustomTableViewEditor.LBGroupSummaryItemsClick(
  Sender: TObject);
begin
  if GetCurrentGroup <> nil then
    FormEditor.ListBoxApplySelection(LBGroupSummaryItems, GetCurrentGroup.SummaryItems);
end;

procedure TcxCustomTableViewEditor.BGroupSummaryItemAddClick(
  Sender: TObject);
begin
  if GetCurrentGroup <> nil then
    CollectionItemsAdd(LBGroupSummaryItems, GetCurrentGroup.SummaryItems);
end;

procedure TcxCustomTableViewEditor.BGroupSummaryItemDeleteClick(
  Sender: TObject);
begin
  if GetCurrentGroup <> nil then
    CollectionItemsDelete(LBGroupSummaryItems, GetCurrentGroup.SummaryItems);
end;

procedure TcxCustomTableViewEditor.LBUnlinkedColumnsClick(Sender: TObject);
begin
  UpdateButtons;
end;

procedure TcxCustomTableViewEditor.BColumnLinkClick(Sender: TObject);
var
  ACurrentGroup: TcxDataSummaryGroup;
  I: Integer;
  AGroupItemLink: TcxDataSummaryGroupItemLink;
begin
  BeginUpdate;
  try
    ACurrentGroup := GetCurrentGroup;
    for I := 0 to LBUnlinkedColumns.Items.Count - 1 do
      if LBUnlinkedColumns.Selected[I] then
      begin
        AGroupItemLink := ACurrentGroup.Links.Add;
        AGroupItemLink.ItemLink := LBUnlinkedColumns.Items.Objects[I];
      end;
    UpdateSummaryGroupLinks;
    UpdateDesigner;
  finally
    EndUpdate;
  end;
end;

procedure TcxCustomTableViewEditor.BColumnUnlinkClick(Sender: TObject);
var
  ACurrentGroup: TcxDataSummaryGroup;
  I: Integer;
  AGroupItemLink: TcxDataSummaryGroupItemLink;
begin
  BeginUpdate;
  try
    ACurrentGroup := GetCurrentGroup;
    for I := LBLinkedColumns.Items.Count - 1 downto 0 do
      if LBLinkedColumns.Selected[I] then
      begin
        AGroupItemLink := ACurrentGroup.Links.ItemOfItemLink(LBLinkedColumns.Items.Objects[I]);
        AGroupItemLink.Free;
      end;
    UpdateSummaryGroupLinks;
    UpdateDesigner;
  finally
    EndUpdate;
  end;
end;

procedure TcxCustomTableViewEditor.PLinksResize(Sender: TObject);
var
  W: Integer;
begin
  W := (PLinks.Width - PLinkUnlink.Width) div 2;
  PUnlinkedColumns.Width := W;
  PLinkedColumns.Width := W;
end;

procedure TcxCustomTableViewEditor.PSummaryGroupsResize(Sender: TObject);
var
  W: Integer;
begin
  // Groups
  W := (PSummaryGroups.Width - PGSeparator.Width) div 2;
  PGroups.Width := W;
  PGroupItems.Width := W;
end;

// Drag Drop Columns

procedure TcxCustomTableViewEditor.LBColumnsStartDrag(Sender: TObject;
  var DragObject: TDragObject);
begin
  FColumnsPrevDragIndex := -1;
end;

procedure TcxCustomTableViewEditor.LBColumnsDragOver(Sender,
  Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
  ListBoxDragOver(LBColumns, Sender, Source, X, Y, State, Accept, FColumnsPrevDragIndex);
end;

procedure TcxCustomTableViewEditor.LBColumnsEndDrag(Sender,
  Target: TObject; X, Y: Integer);
begin
  ListBoxEndDrag(LBColumns, Sender, Target, X, Y, FColumnsPrevDragIndex);
end;

procedure TcxCustomTableViewEditor.LBColumnsDragDrop(Sender,
  Source: TObject; X, Y: Integer);
begin
  ListBoxDragDrop(LBColumns, Sender, Source, X, Y, FColumnsPrevDragIndex, ReindexColumnsProc);
end;

// Summary: Select All

procedure TcxCustomTableViewEditor.MIFooterSummarySelectAllClick(
  Sender: TObject);
begin
  ListBoxSelectAll(LBFooterSummary);
  LBFooterSummaryClick(nil);
end;

procedure TcxCustomTableViewEditor.MIDefaultGroupSummarySelectAllClick(
  Sender: TObject);
begin
  ListBoxSelectAll(LBDefaultGroupsSummary);
  LBDefaultGroupsSummaryClick(nil);
end;

procedure TcxCustomTableViewEditor.MISummaryGroupSelectAllClick(
  Sender: TObject);
begin
  ListBoxSelectAll(LBSummaryGroups);
  LBSummaryGroupsClick(nil);
end;

procedure TcxCustomTableViewEditor.MIGroupSummaryItemsSelectAllClick(
  Sender: TObject);
begin
  ListBoxSelectAll(LBGroupSummaryItems);
  LBGroupSummaryItemsClick(nil);
end;

procedure TcxCustomTableViewEditor.FormCreate(Sender: TObject);
begin
  inherited;
  CalculateListBoxItemHeight(LBColumns);
end;

procedure TcxCustomTableViewEditor.LBColumnsDrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
  DrawListBoxItem(Control, Index, Rect);
end;

{ TcxCustomGridTableViewMenuProvider }

function TcxCustomGridTableViewMenuProvider.GetGridView: TcxCustomGridTableView;
begin
  Result := TcxCustomGridTableView(inherited GridView);
end;

function TcxCustomGridTableViewMenuProvider.GetViewItemNameValue: string;
begin
  Result := GetViewItemName(GridView);
end;

function TcxCustomGridTableViewMenuProvider.CanDeleteItems: Boolean;
var
  I: Integer;
begin
  Result := GridView.ItemCount <> 0;
  if Result then
    for I := 0 to GridView.ItemCount - 1 do
    begin
      Result := CanDeleteComponent(GridView.Items[I].Owner, GridView.Items[I]);
      if not Result then Break;
    end;
end;

procedure TcxCustomGridTableViewMenuProvider.CreateAllItems(Sender: TcxGridViewMenuItem);
begin
  CreateViewItems(GridView, False);
  DesignerModified;
end;

procedure TcxCustomGridTableViewMenuProvider.CreateItem(Sender: TcxGridViewMenuItem);
begin
  ObjectCreated(CreateViewItem(GridView));
end;

procedure TcxCustomGridTableViewMenuProvider.CreateMissingItems(Sender: TcxGridViewMenuItem);
begin
  CreateViewItems(GridView, True);
  DesignerModified;
end;

procedure TcxCustomGridTableViewMenuProvider.DeleteAllItems(Sender: TcxGridViewMenuItem);
begin
  (GridView.DataController as IcxCustomGridDataController).DeleteAllItems;
  DesignerModified;
end;

procedure TcxCustomGridTableViewMenuProvider.InitStructureCreationItems;
begin
  if (GridView.DataController as IcxCustomGridDataController).SupportsCreateAllItems then
    if (GridView.DataController as IcxCustomGridDataController).IsDataLinked then
    begin
      Items.AddItem(Format('Create All %ss', [ViewItemName]), CreateAllItems,
        CanAddComponent(GridView.Owner));
      Items.AddItem(Format('Create Missing %ss', [ViewItemName]), CreateMissingItems,
        CanAddComponent(GridView.Owner) and not (GridView.DataController as IcxCustomGridDataController).HasAllItems);
    end
    else
      Items.AddItem('(no data linked)', nil, False);
  Items.AddItem(Format('Create %s', [ViewItemName]), CreateItem, CanAddComponent(GridView.Owner));
end;

procedure TcxCustomGridTableViewMenuProvider.InitStructureItems;
begin
  InitStructureCreationItems;
  Items.AddSeparator;
  if (GridView.DataController as IcxCustomGridDataController).SupportsCreateAllItems then
    Items.AddItem(Format('Delete All %ss', [ViewItemName]), DeleteAllItems, CanDeleteItems);
  inherited;
end;

initialization
  RegisterViewEditorClass(TcxCustomGridTableView, TcxCustomTableViewEditor);
  RegisterViewMenuProviderClass(TcxCustomGridTableView, TcxCustomGridTableViewMenuProvider);

finalization
  UnregisterViewMenuProviderClass(TcxCustomGridTableView, TcxCustomGridTableViewMenuProvider);
  UnregisterViewEditorClass(TcxCustomGridTableView, TcxCustomTableViewEditor);

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?