⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 viewbandeddemomain.pas

📁 DevExpress ExpressQuantumGrid Suite v5.9 Full Source
💻 PAS
字号:
unit ViewBandedDemoMain;

interface

uses
  Windows, Messages, Classes, Graphics, Controls, Forms,
  Dialogs, cxGridCustomTableView, cxGridTableView, cxGridBandedTableView,
  cxGridDBBandedTableView, cxControls, cxGridCustomView, StdCtrls, Menus,
  cxGridLevel, cxGrid, ActnList, ImgList, cxLookAndFeels,
  ComCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter,
  cxData, cxEdit, cxClasses, cxListBox, cxDataStorage, DB, cxDBData,
  cxImageComboBox, cxDBLookupComboBox, cxCalendar;

type
  TViewBandedDemoMainForm = class(TForm)
    glItems: TcxGridLevel;
    cxGrid: TcxGrid;
    btvItems: TcxGridDBBandedTableView;
    btvItemsNAME: TcxGridDBBandedColumn;
    btvItemsTYPE: TcxGridDBBandedColumn;
    btvItemsPROJECTID: TcxGridDBBandedColumn;
    btvItemsPRIORITY: TcxGridDBBandedColumn;
    btvItemsSTATUS: TcxGridDBBandedColumn;
    btvItemsCREATEDDATE: TcxGridDBBandedColumn;
    btvItemsFIXEDDATE: TcxGridDBBandedColumn;
    btvItemsDESCRIPTION: TcxGridDBBandedColumn;
    btvItemsOwnerName: TcxGridDBBandedColumn;
    btvItemsCreatorName: TcxGridDBBandedColumn;
    mmMain: TMainMenu;
    miFile: TMenuItem;
    miExit: TMenuItem;
    miOptions: TMenuItem;
    miAbout: TMenuItem;
    ilMain: TImageList;
    lbDescrip: TLabel;
    sbMain: TStatusBar;
    btvItemsCreatorPhone: TcxGridDBBandedColumn;
    btvItemsOwnerPhone: TcxGridDBBandedColumn;
    miShowPreviewRow: TMenuItem;
    miBandMoving: TMenuItem;
    miBandSizing: TMenuItem;
    miDeleteBand: TMenuItem;
    miCreateBand: TMenuItem;
    miColumnsCustomization: TMenuItem;
    N1: TMenuItem;
    miShowNavigator: TMenuItem;
    LookAndFeelController: TcxLookAndFeelController;
    procedure miAboutClick(Sender: TObject);
    procedure miExitClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure miShowPreviewRowClick(Sender: TObject);
    procedure miBandMovingClick(Sender: TObject);
    procedure miBandSizingClick(Sender: TObject);
    procedure miColumnsCustomizationClick(Sender: TObject);
    procedure miCreateBandClick(Sender: TObject);
    procedure miDeleteBandClick(Sender: TObject);
    procedure miShowNavigatorClick(Sender: TObject);
  private
    procedure DeleteBand(ABandCaption: String);
    function GetBandByCaption(ABandCaption: String): TcxGridBand;
  protected
    procedure UpdateButtons;
  end;

var
  ViewBandedDemoMainForm: TViewBandedDemoMainForm;

implementation

{$R *.dfm}

uses
  ViewBandedDemoData, ViewBandeDemoBands, AboutDemoForm;

procedure TViewBandedDemoMainForm.miAboutClick(Sender: TObject);
begin
  ShowAboutDemoForm;
end;

procedure TViewBandedDemoMainForm.miExitClick(Sender: TObject);
begin
  Close;
end;

procedure TViewBandedDemoMainForm.FormShow(Sender: TObject);
begin
  TcxGridDBBandedTableView(cxGrid.FocusedView).DataController.Groups.FullExpand;
end;

procedure TViewBandedDemoMainForm.miShowPreviewRowClick(
  Sender: TObject);
begin
  if btvItems.Preview.Visible then
  begin
    btvItems.Preview.Visible := False;
    btvItems.Preview.Column := nil;
  end
  else
  begin
    //btvItemsDESCRIPTION.Visible := False;
    btvItems.Preview.Column := btvItemsDESCRIPTION;
    btvItems.Preview.Visible := True;
  end;
  (Sender as TMenuItem).Checked := btvItems.Preview.Visible;
end;

procedure TViewBandedDemoMainForm.miBandMovingClick(Sender: TObject);
begin
  with btvItems.OptionsCustomize do
    BandMoving := not BandMoving;
  (Sender as TMenuItem).Checked := btvItems.OptionsCustomize.BandMoving;
end;

procedure TViewBandedDemoMainForm.miBandSizingClick(Sender: TObject);
begin
  with btvItems.OptionsCustomize do
    BandSizing := not BandSizing;
  (Sender as TMenuItem).Checked := btvItems.OptionsCustomize.BandSizing;
end;

procedure TViewBandedDemoMainForm.DeleteBand(ABandCaption: String);
begin
  GetBandByCaption(ABandCaption).Free;
end;

function TViewBandedDemoMainForm.GetBandByCaption(ABandCaption: String): TcxGridBand;
var
  i: Integer;
begin
  Result := nil;
  for i := 0 to btvItems.Bands.Count - 1 do
    if btvItems.Bands[i].Caption = ABandCaption then
    begin
      Result := btvItems.Bands[i];
      Exit;
    end;
end;

procedure TViewBandedDemoMainForm.UpdateButtons;
begin
  miDeleteBand.Enabled := btvItems.Bands.Count <> 0;
  miShowPreviewRow.Enabled := btvItems.Bands.Count <> 0;
end;

procedure TViewBandedDemoMainForm.miColumnsCustomizationClick(Sender: TObject);
begin
  btvItems.Controller.Customization := True;
end;

procedure TViewBandedDemoMainForm.miCreateBandClick(Sender: TObject);
var
  BandCaption: String;
  ABand: TcxGridBand;
  ABandViewInfo: TcxGridbandViewInfo;
begin
  if InputQuery('Create band', 'Specify a caption of the band', BandCaption) then
    if GetBandByCaption(BandCaption) <> nil then
      MessageDlg('Band with this caption already exists', mtWarning, [mbOK], 0)
    else
    begin
      ABand := btvItems.Bands.Add;
      ABand.Caption := BandCaption;
      ABandViewInfo :=
        btvItems.ViewInfo.HeaderViewInfo.BandsViewInfo[ABand.VisibleIndex];
      btvItems.Controller.LeftPos := ABandViewInfo.Bounds.Right;
    end;
  UpdateButtons;
end;

procedure TViewBandedDemoMainForm.miDeleteBandClick(Sender: TObject);

  procedure HideCoulmns;
  var
    j: Integer;
  begin
    for j:=0 to btvItems.ColumnCount - 1 do
      if (btvItems.Columns[j].Position.Band = nil) and btvItems.Columns[j].Visible then
        btvItems.Columns[j].Visible := False;
  end;

  procedure AddBands(AStringList: TStrings);
  var
    i: Integer;
  begin
    for i:=0 to btvItems.Bands.Count - 1 do
      AStringList.Add(btvItems.Bands[i].Caption);
  end;

  procedure RemoveBands(AListBox: TcxListBox);
  var
    i: Integer;
  begin
    for i:=0 to AListBox.Items.Count - 1 do
      if AListBox.Selected[i] then
        DeleteBand(AListBox.Items[i]);
    HideCoulmns;
  end;

begin
  with TViewBandeDemoBandsForm.Create(nil) do
    try
      lbBands.Items.Clear;
      AddBands(lbBands.Items);
      if ShowModal = mrOK then
        RemoveBands(lbBands);
    finally
      Free;
    end;
  UpdateButtons;
end;

procedure TViewBandedDemoMainForm.miShowNavigatorClick(Sender: TObject);
begin
  with Sender as TMenuItem do
    Checked := not Checked;
  btvItems.OptionsView.Navigator := (Sender as TMenuItem).Checked;
end;

end.

⌨️ 快捷键说明

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