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

📄 unboundlistdemomain.pas

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

interface

uses
  Windows, Messages, SysUtils, Classes, Controls,  Forms, Dialogs, cxStyles,
  cxCustomData, cxGraphics, cxFilter, cxData, cxEdit, cxGridTableView,
  Menus, cxGridLevel, cxGridCustomTableView, cxClasses,
  cxControls, cxGridCustomView, cxGrid, StdCtrls, ComCtrls,
  cxGridCustomPopupMenu, cxGridPopupMenu, cxDataStorage, cxLookAndFeels;

type
  TUnboundListDemoMainForm = class(TForm)
    mmMain: TMainMenu;
    miAbout: TMenuItem;
    miFile: TMenuItem;
    miExit: TMenuItem;
    sbMain: TStatusBar;
    lbDescrip: TLabel;
    lvCustomers: TcxGridLevel;
    cxGrid: TcxGrid;
    StyleRepository: TcxStyleRepository;
    tvCustomers: TcxGridTableView;
    cxGridPopupMenu: TcxGridPopupMenu;
    GridTableViewStyleSheetDevExpress: TcxGridTableViewStyleSheet;
    cxStyle1: TcxStyle;
    cxStyle2: TcxStyle;
    cxStyle3: TcxStyle;
    cxStyle4: TcxStyle;
    cxStyle5: TcxStyle;
    cxStyle6: TcxStyle;
    cxStyle7: TcxStyle;
    cxStyle8: TcxStyle;
    cxStyle9: TcxStyle;
    cxStyle10: TcxStyle;
    cxStyle11: TcxStyle;
    cxStyle12: TcxStyle;
    cxStyle13: TcxStyle;
    cxStyle14: TcxStyle;
    LookAndFeelController: TcxLookAndFeelController;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure miAboutClick(Sender: TObject);
    procedure miExitClick(Sender: TObject);
  private
    procedure CustomizeGrid;
    procedure GenerateColumns;
    procedure LoadData;
    procedure SaveData;
  end;

var
  UnboundListDemoMainForm: TUnboundListDemoMainForm;

implementation

uses
  UnboundListDemoClasses, AboutDemoForm;

{$R *.dfm}

const
  TabChar = #9;

var
  CustomerList: TCustomerList;
  CustomerDataSource: TCustomerDataSource;

procedure TUnboundListDemoMainForm.CustomizeGrid;
begin
  GenerateColumns;
  LoadData;
end;

procedure TUnboundListDemoMainForm.GenerateColumns;
begin
  with tvCustomers as TcxGridTableView do
  begin
    ClearItems;

    with CreateColumn as TcxGridColumn do
    begin
      Caption := 'ID';
      DataBinding.ValueTypeClass := TcxIntegerValueType;
      Width := 50;
    end;

    with CreateColumn as TcxGridColumn do
    begin
      Caption := 'Customer';
      DataBinding.ValueTypeClass := TcxStringValueType;
      Width := 200;
    end;

    with CreateColumn as TcxGridColumn do
    begin
      Caption := 'Company';
      DataBinding.ValueTypeClass := TcxStringValueType;
      Width := 200;
    end;
  end;

  tvCustomers.DataController.CustomDataSource := CustomerDataSource;
end;

procedure TUnboundListDemoMainForm.LoadData;
var
  ACustomer: TCustomer;
  I: Integer;
  s: string;
begin
  with TStringList.Create do
  try
    LoadFromFile('contacts.txt');
    for I := 0 to Count - 1 do
    begin
      ACustomer := TCustomer.Create(CustomerList.NextID);
      s := Strings[I];
      ACustomer.Name := Copy(s, 1, Pos(TabChar, s) - 1);
      ACustomer.Description := Copy(s, Pos(TabChar, s) + 1, Length(s));
      CustomerList.Add(ACustomer);
    end;
  finally
    Free;
  end;
  CustomerDataSource.DataChanged;
  tvCustomers.DataController.GotoFirst;
end;

procedure TUnboundListDemoMainForm.SaveData;
var
  ACustomer: TCustomer;
  I: Integer;
begin
  with TStringList.Create do
  try
    for I := 0 to CustomerList.Count - 1 do
    begin
       ACustomer := CustomerList.Customers[I];
       Add(ACustomer.Name + TabChar + ACustomer.Description);
    end;
    SaveToFile('contacts.txt');
  finally
    Free;
  end;
end;

procedure TUnboundListDemoMainForm.FormCreate(Sender: TObject);
begin
  CustomerList := TCustomerList.Create;
  CustomerDataSource := TCustomerDataSource.Create(CustomerList);
  CustomizeGrid;
end;

procedure TUnboundListDemoMainForm.FormDestroy(Sender: TObject);
begin
  CustomerDataSource.Free;
  CustomerList.Free;
end;

procedure TUnboundListDemoMainForm.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
var
  I: Integer;
begin
  I := -1;
  if CustomerDataSource.Modified then
    I := MessageDlg('Do you want to save the changes ?', mtConfirmation, [mbYes, mbNo, mbCancel], 0);
  case I of
    mrYes: SaveData;
    mrCancel: CanClose := False;
  end;
end;

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

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

end.

⌨️ 快捷键说明

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