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 + -
显示快捷键?