unit ConvertGrid3MasterDetailDemoMain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, cxGridLevel, cxControls, cxGrid, StdCtrls, ExtCtrls, Menus, ImgList, ActnList, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridCustomView, ComCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxEdit, DB, cxDBData, cxClasses, cxLookAndFeels; type TConvertGrid3MasterDetailDemoMainForm = class(TForm) mmMain: TMainMenu; miFile: TMenuItem; miExit: TMenuItem; miOptions: TMenuItem; miGrid4: TMenuItem; miAbout: TMenuItem; StatusBar: TStatusBar; lbDescrip: TLabel; miGrid4MasterDetailStyle: TMenuItem; miGrid3MasterDetailStyle: TMenuItem; pnlGrids: TPanel; LookAndFeelController: TcxLookAndFeelController; procedure miAboutClick(Sender: TObject); procedure miExitClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure miMasterDetailStyleClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private procedure SetGrid3MasterDetailStyle; // Standard two grid style procedure SetGrid4MasterDetailStyle; // Grid4 single grid style end; var ConvertGrid3MasterDetailDemoMainForm: TConvertGrid3MasterDetailDemoMainForm; implementation {$R *.dfm} uses cxGridDBDataDefinitions, ConvertGrid3MasterDetailDemoData, ConvertGrid3MasterDetailDemoGrids, AboutDemoForm; procedure TConvertGrid3MasterDetailDemoMainForm.miAboutClick(Sender: TObject); begin ShowAboutDemoForm; end; procedure TConvertGrid3MasterDetailDemoMainForm.miExitClick(Sender: TObject); begin Close; end; procedure TConvertGrid3MasterDetailDemoMainForm.SetGrid4MasterDetailStyle; // Display in Grid4 single grid style begin // remove master/detail link in the data module ConvertGrid3MasterDetailDemoDataDM.tblOrders.MasterSource := nil; ConvertGrid3MasterDetailDemoGridsForm.dxDBGridCars.DataSource := nil; ConvertGrid3MasterDetailDemoGridsForm.dxDBGridOrders.DataSource := nil; ConvertGrid3MasterDetailDemoGridsForm.cxGrid1DBBandedTableView1.DataController.DataSource := ConvertGrid3MasterDetailDemoDataDM.dsCars; ConvertGrid3MasterDetailDemoGridsForm.cxGrid1DBTableView1.DataController.DataSource := ConvertGrid3MasterDetailDemoDataDM.dsOrders; with ConvertGrid3MasterDetailDemoGridsForm do begin tsGrid4Mode.Parent := pnlGrids; tsGrid4Mode.Visible := True; tsGrid3Mode.Parent := pcGrids; end; end; procedure TConvertGrid3MasterDetailDemoMainForm.SetGrid3MasterDetailStyle; // Display in standard two grid style begin ConvertGrid3MasterDetailDemoGridsForm.cxGrid1DBBandedTableView1.DataController.DataSource := nil; ConvertGrid3MasterDetailDemoGridsForm.cxGrid1DBTableView1.DataController.DataSource := nil; ConvertGrid3MasterDetailDemoGridsForm.dxDBGridCars.DataSource := ConvertGrid3MasterDetailDemoDataDM.dsCars; ConvertGrid3MasterDetailDemoGridsForm.dxDBGridOrders.DataSource := ConvertGrid3MasterDetailDemoDataDM.dsOrders; // restore master/detail link in the data module ConvertGrid3MasterDetailDemoDataDM.tblOrders.MasterSource := ConvertGrid3MasterDetailDemoDataDM.dsCars; with ConvertGrid3MasterDetailDemoGridsForm do begin tsGrid3Mode.Parent := pnlGrids; tsGrid3Mode.Visible := True; tsGrid4Mode.Parent := pcGrids; end; end; procedure TConvertGrid3MasterDetailDemoMainForm.FormShow(Sender: TObject); begin miMasterDetailStyleClick(miGrid3MasterDetailStyle); end; procedure TConvertGrid3MasterDetailDemoMainForm.miMasterDetailStyleClick( Sender: TObject); begin TMenuItem(Sender).Checked := True; Case TMenuItem(Sender).Tag of 0: SetGrid4MasterDetailStyle; 1: SetGrid3MasterDetailStyle; end end; procedure TConvertGrid3MasterDetailDemoMainForm.FormCloseQuery( Sender: TObject; var CanClose: Boolean); begin SetGrid3MasterDetailStyle; end; end.