masterdetailmultidemomain.pas

来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 237 行

PAS
237
字号
unit MasterDetailMultiDemoMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, cxControls, cxLookupGrid, cxLookupDBGrid, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxGridLevel, cxGridCustomView, cxGrid,
  cxGridCardView, cxGridDBCardView, cxMaskEdit, StdCtrls, ExtCtrls,
  cxContainer, cxEdit, cxTextEdit, cxDropDownEdit, cxDBEdit, cxStyles,
  Menus, ActnList, ImgList, ComCtrls, cxLookAndFeels, DB,
  DBTables, cxCustomData, cxGraphics, cxFilter, cxData, cxDBData, cxClasses,
  cxGridBandedTableView, cxGridDBBandedTableView, cxDataStorage,
  cxDBLookupComboBox, cxBlobEdit, cxImage, cxMemo, cxHyperLinkEdit;

type
  TMasterDetailMultiDemoMainForm = class(TForm)
    mmMain: TMainMenu;
    miAbout: TMenuItem;
    miFile: TMenuItem;
    miView: TMenuItem;
    miExit: TMenuItem;
    miGenreTabPosition: TMenuItem;
    lbDescrip: TLabel;
    Grid: TcxGrid;
    cvPeople: TcxGridDBCardView;
    cvPeopleName: TcxGridDBCardViewRow;
    cvPeoplePersonLineID: TcxGridDBCardViewRow;
    cvPeopleFIRSTNAME: TcxGridDBCardViewRow;
    cvPeopleSECONDNAME: TcxGridDBCardViewRow;
    cvPeopleNICKNAME: TcxGridDBCardViewRow;
    cvPeopleBIRTHNAME: TcxGridDBCardViewRow;
    cvPeopleDATEOFBIRTH: TcxGridDBCardViewRow;
    cvPeopleLOCATIONOFBIRTH: TcxGridDBCardViewRow;
    cvPeopleBIOGRAPHY: TcxGridDBCardViewRow;
    cvPeopleHOMEPAGE: TcxGridDBCardViewRow;
    cvPeopleID: TcxGridDBCardViewRow;
    cvPeopleFilmID: TcxGridDBCardViewRow;
    cvPeopleBIRTHCOUNTRY: TcxGridDBCardViewRow;
    cvPeopleGender: TcxGridDBCardViewRow;
    tvCompanies: TcxGridDBTableView;
    tvCompaniesName: TcxGridDBColumn;
    tvCompaniesType: TcxGridDBColumn;
    tvCompaniesCountry: TcxGridDBColumn;
    tvCompaniesWebSite: TcxGridDBColumn;
    tvCompaniesID: TcxGridDBColumn;
    tvCompaniesFILMID: TcxGridDBColumn;
    cvPhotos: TcxGridDBCardView;
    cvPhotosID: TcxGridDBCardViewRow;
    cvPhotosFILMID: TcxGridDBCardViewRow;
    cvPhotosSCREEN: TcxGridDBCardViewRow;
    cvPhotosICON: TcxGridDBCardViewRow;
    bvFilms: TcxGridDBBandedTableView;
    bvFilmsCAPTION: TcxGridDBBandedColumn;
    bvFilmsYEAR: TcxGridDBBandedColumn;
    bvFilmsPLOTOUTLINE: TcxGridDBBandedColumn;
    bvFilmsRUNTIME: TcxGridDBBandedColumn;
    bvFilmsPHOTO: TcxGridDBBandedColumn;
    bvFilmsWEBSITE: TcxGridDBBandedColumn;
    miTabPositionLeft: TMenuItem;
    miTabPositionTop: TMenuItem;
    miTabPositionNone: TMenuItem;
    LookAndFeelController: TcxLookAndFeelController;
    miTabsForEmptyDetails: TMenuItem;
    miTabStyle: TMenuItem;
    miTabCaptionAlignment: TMenuItem;
    miTabCaptionAlignmentLeft: TMenuItem;
    miTabCaptionAlignmentRight: TMenuItem;
    miTabCaptionAlignmentCenter: TMenuItem;
    procedure miAboutClick(Sender: TObject);
    procedure miExitClick(Sender: TObject);
    procedure GridActiveTabChanged(Sender: TcxCustomGrid;
      ALevel: TcxGridLevel);
    procedure GridRootLevelStylesGetTabStyle(Sender,
      ATabLevel: TcxGridLevel; out AStyle: TcxStyle);
    procedure miTabPositionClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure miTabsForEmptyDetailsClick(Sender: TObject);
    procedure miTabStyleClick(Sender: TObject);
    procedure miTabCaptionAlignmentClick(Sender: TObject);
  private
    procedure CreateLevels;
    procedure CreateTabStyleMenu;
  protected
    procedure UpdateMenu;
  end;

var
  MasterDetailMultiDemoMainForm: TMasterDetailMultiDemoMainForm;

implementation

{$R *.dfm}

uses
  cxPCPaintersFactory, MasterDetailMultiDemoData, AboutDemoForm, cxPC;

procedure TMasterDetailMultiDemoMainForm.CreateLevels;
begin
  with MasterDetailMultiDemoMainDM do
  begin
    tblGenres.First;
    while not tblGenres.Eof do
    begin
      with Grid.Levels.Add do
      begin
        Caption := tblGenresName.AsString;
        MaxDetailHeight := 250;
        Options.DetailTabsPosition := dtpTop;
        Options.TabsForEmptyDetails := False;
        Add.Caption := 'Companies';
        Add.Caption := 'People';
        Add.Caption := 'Photos';
        Tag := tblGenresID.AsInteger;
      end;
      tblGenres.Next;
    end;
  end;
end;

procedure TMasterDetailMultiDemoMainForm.CreateTabStyleMenu;

  procedure AddTabStyleMenuItem(AStyleID: TcxPCStyleID; const AStyleName: string);
  var
    AMenuItem: TMenuItem;
  begin
    AMenuItem := TMenuItem.Create(Self);
    AMenuItem.Tag := AStyleID;
    AMenuItem.Caption := AStyleName;
    AMenuItem.GroupIndex := 1;
    AMenuItem.RadioItem := True;
    AMenuItem.OnClick := miTabStyleClick;
    miTabStyle.Add(AMenuItem);
  end;

var
  I: Integer;
  APainterClass: TcxPCPainterClass;
begin
  AddTabStyleMenuItem(cxPCDefaultStyle, cxPCDefaultStyleName);
  for I := 0 to PaintersFactory.PainterClassCount - 1 do
  begin
    APainterClass := PaintersFactory.PainterClasses[I];
    AddTabStyleMenuItem(APainterClass.GetStyleID, APainterClass.GetStyleName);
  end;
end;

procedure TMasterDetailMultiDemoMainForm.UpdateMenu;
begin
  miGenreTabPosition[Ord(Grid.RootLevelOptions.DetailTabsPosition)].Checked := True;
  miTabsForEmptyDetails.Checked := Grid.Levels[0].Options.TabsForEmptyDetails;
  miTabStyle.Find(GetPCStyleName(Grid.LevelTabs.Style)).Checked := True;
  miTabCaptionAlignment[Ord(Grid.LevelTabs.CaptionAlignment)].Checked := True;
end;

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

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

procedure TMasterDetailMultiDemoMainForm.FormCreate(Sender: TObject);
begin
  CreateLevels;
  GridActiveTabChanged(Grid, Grid.Levels[0]);
  CreateTabStyleMenu;
  UpdateMenu;
end;

procedure TMasterDetailMultiDemoMainForm.GridActiveTabChanged(Sender: TcxCustomGrid;
  ALevel: TcxGridLevel);
begin
  if not ALevel.IsMaster then Exit;
  Grid.BeginUpdate;
  try
    ALevel.GridView := bvFilms;
    ALevel.Items[0].GridView := tvCompanies;
    ALevel.Items[1].GridView := cvPeople;
    ALevel.Items[2].GridView := cvPhotos;
    with MasterDetailMultiDemoMainDM do
    begin
      qryFilms.Params[0].Value := ALevel.Tag;
      qryFilms.Close;
      qryFilms.Open;
    end;
  finally
    Grid.EndUpdate;
  end;
end;

procedure TMasterDetailMultiDemoMainForm.GridRootLevelStylesGetTabStyle(
  Sender, ATabLevel: TcxGridLevel; out AStyle: TcxStyle);
begin
  if ATabLevel.Active then
    AStyle := MasterDetailMultiDemoMainDM.styleBold;
end;

procedure TMasterDetailMultiDemoMainForm.miTabCaptionAlignmentClick(Sender: TObject);
begin
  Grid.LevelTabs.CaptionAlignment := TAlignment(TMenuItem(Sender).MenuIndex);
  UpdateMenu;
end;

procedure TMasterDetailMultiDemoMainForm.miTabPositionClick(Sender: TObject);
begin
  Grid.RootLevelOptions.DetailTabsPosition :=
    TcxGridDetailTabsPosition(TMenuItem(Sender).MenuIndex);
  UpdateMenu;
end;

procedure TMasterDetailMultiDemoMainForm.miTabsForEmptyDetailsClick(Sender: TObject);
var
  I: Integer;
begin
  Grid.BeginUpdate;
  try
    for I := 0 to Grid.Levels.Count - 1 do
      with Grid.Levels[I].Options do
        TabsForEmptyDetails := not TabsForEmptyDetails;
  finally
    Grid.EndUpdate;
    UpdateMenu;
  end;
end;

procedure TMasterDetailMultiDemoMainForm.miTabStyleClick(Sender: TObject);
begin
  Grid.LevelTabs.Style := TcxPCStyleID(TMenuItem(Sender).Tag);
  UpdateMenu;
end;

end.

⌨️ 快捷键说明

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