Acro Multi-Language Class-Method for Devexpress VCL

( 不能附文件,请包涵,自己贴下成pas文件,加入专案使用或放到单独的包)

{==============================================================================}
{  Techamtion Application Service/Techamtion Transaction Server                }
{                                                                              }
{  Copyright (C), 2003-2008, Acroprise Inc.                            }
{  ALL RIGHTS RESERVED                                                         }
{                                                                              }
{  Author   : cc,Mustapha.Wang                                                 }
{  Package  : dxClassMethod70.dpk                                              }
{  Version  : 1.00                                                             }
{  Creation : 2004/05/06                                                       }
{  Revision :                                                                  }
{  Task     :                                                                  }
{    1.注册dx/cx元件的多语言替换函数;                                          }
{==============================================================================}
unit acroLibMLdxClassMethod;

interface

uses
  Classes, Graphics, Dialogs, Variants, AcroMultiClassMethod, dxTL, dxTLClms, cxTL;

  procedure TCustomdxTreeListControl_ReplaceNodes(ATable:IDataLocate; AComponent:TCustomdxTreeListControl; ACodePage,ASeqNo:String; AFont:TFont);
  procedure TcxCustomTreeListControl_ReplaceNodes(ATable:IDataLocate; AComponent:TcxCustomTreeListControl; ACodePage,ASeqNo:String; AFont:TFont);

implementation
uses
  dxBar, dxDockControl, dxStatusBar,
  dxNavBarCollns,
  dxOrgChr,
  dxPSCore,
  cxGrid, cxGridCustomTableView, cxGridBandedTableView,
  cxLabel, cxDropDownEdit, cxDBLookupComboBox,
  cxCheckBox, cxGroupBox, cxRadioGroup, cxPC,
  cxEdit, cxEditRepositoryItems, cxInplaceContainer,
  cxDBEditRepository, cxImageComboBox, cxCheckGroup,
  cxButtonEdit;

type
  TcxCustomCheckBox_Temp=class(TcxCustomCheckBox);
  TcxCustomGroupBox_Temp=class(TcxCustomGroupBox);
  TcxCustomRadioGroup_Temp=class(TcxCustomRadioGroup);
  TcxCustomTreeListControl_Temp=class(TcxCustomTreeListControl);
  TcxButtonGroupItem_Temp=class(TcxButtonGroupItem);

procedure Proc_TdxBarManager(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i: Integer;
begin
//TdxBarManager(AComponent).Font.Assign(AFont);                                 // Sometimes it raise Exception if Font.Size is different from the value set in design time
  for i:=0 to TdxBarManager(AComponent).Categories.Count-1 do
    TdxBarManager(AComponent).Categories[i] :=
      GetDisplayValue(ATable, TdxBarManager(AComponent).Categories[i], ACodePage, ASeqNo);
  for i:=0 to TdxBarManager(AComponent).Bars.Count-1 do
    TdxBarManager(AComponent).Bars[i].Caption :=
      GetDisplayValue(ATable, TdxBarManager(AComponent).Bars[i].Caption, ACodePage, ASeqNo);
end;

procedure Proc_TdxBarItem(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
begin
  TdxBarItem(AComponent).Hint :=                                                // Must replace Hint before Caption
    GetDisplayValue(ATable, TdxBarItem(AComponent).Hint, ACodePage, ASeqNo);    // Refer to ML20030125.txt
  TdxBarItem(AComponent).Caption :=
    GetDisplayValue(ATable, TdxBarItem(AComponent).Caption, ACodePage, ASeqNo);
end;

procedure Proc_TdxBarCustomCombo(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i, nItemIndex: Integer;
begin
  Proc_TdxBarItem(ATable, AComponent, ACodePage, ASeqNo, AFont);
  TdxBarCustomCombo(AComponent).Items.BeginUpdate;
  try
    nItemIndex := TdxBarCustomCombo(AComponent).ItemIndex;
    for i:=0 to TdxBarCustomCombo(AComponent).Items.Count-1 do
      TdxBarCustomCombo(AComponent).Items[i] :=
        GetDisplayValue(ATable, TdxBarCustomCombo(AComponent).Items[i], ACodePage, ASeqNo);
    TdxBarCustomCombo(AComponent).ItemIndex := nItemIndex;
  finally
    TdxBarCustomCombo(AComponent).Items.EndUpdate;
  end;
end;

procedure Proc_TdxCustomDockControl(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
begin
  TdxCustomDockControl(AComponent).Caption := GetDisplayValue(ATable, TdxCustomDockControl(AComponent).Caption, ACodePage, ASeqNo);
end;

procedure Proc_TdxStatusBar(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i: Integer;
begin
  for i:=0 to TdxStatusBar(AComponent).Panels.Count-1 do
    TdxStatusBar(AComponent).Panels[i].Text := GetDisplayValue(ATable, TdxStatusBar(AComponent).Panels[i].Text, ACodePage, ASeqNo);
end;

procedure Proc_TdxNavBarGroup(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
begin
  TdxNavBarGroup(AComponent).Caption:=
    GetDisplayValue(ATable, TdxNavBarGroup(AComponent).Caption, ACodePage, ASeqNo);
  TdxNavBarGroup(AComponent).Hint:=
    GetDisplayValue(ATable, TdxNavBarGroup(AComponent).Hint, ACodePage, ASeqNo);
end;

procedure Proc_TdxNavBarItem(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
begin
  TdxNavBarItem(AComponent).Caption:=
    GetDisplayValue(ATable,TdxNavBarItem(AComponent).Caption, ACodePage, ASeqNo);
  TdxNavBarItem(AComponent).Hint:=
    GetDisplayValue(ATable,TdxNavBarItem(AComponent).Hint, ACodePage, ASeqNo);
end;

procedure Proc_TdxCustomOrgChart(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
  procedure ReplaceNode(ANode:TdxOcNode);
  var
    i: Integer;
  begin
    ANode.Text := GetDisplayValue(ATable, ANode.Text, ACodePage, ASeqNo);
    for i:=0 to ANode.Count-1 do ReplaceNode(ANode.Items[i]);
  end;
var
  i: Integer;
begin
  TdxCustomOrgChart(AComponent).BeginUpdate;
  try
    for i:=0 to TdxCustomOrgChart(AComponent).RootNode.Count-1 do
      ReplaceNode(TdxCustomOrgChart(AComponent).Items[i]);
  finally
    TdxCustomOrgChart(AComponent).EndUpdate;
  end;
end;

procedure TCustomdxTreeListControl_ReplaceNodes(ATable:IDataLocate; AComponent:TCustomdxTreeListControl; ACodePage,ASeqNo:String; AFont:TFont);
  procedure ReplaceNode(ANode:TdxTreeListNode);
  var
    i: Integer;
  begin
    for i:=0 to TCustomdxTreeListControl(AComponent).ColumnCount-1 do
      if VarIsStr(ANode.Values[i]) then
        ANode.Values[i] := GetDisplayValue(ATable, ANode.Values[i], ACodePage, ASeqNo);
    for i:=0 to ANode.Count-1 do ReplaceNode(ANode.Items[i]);
  end;
var
  i: Integer;
begin
  TCustomdxTreeListControl(AComponent).BeginUpdate;
  try
    for i:=0 to TCustomdxTreeListControl(AComponent).Count-1 do
      ReplaceNode(TCustomdxTreeListControl(AComponent).Items[i]);
  finally
    TCustomdxTreeListControl(AComponent).EndUpdate;
  end;
end;

procedure Proc_TCustomdxTreeListControl(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i,j: Integer;
  AColumn: TdxTreeListPickColumn;
begin
  TCustomdxTreeListControl(AComponent).BeginUpdate;
  try
    for i:=0 to TCustomdxTreeListControl(AComponent).Bands.Count-1 do
    begin
      TCustomdxTreeListControl(AComponent).Bands[i].Caption :=
        GetDisplayValue(ATable, TCustomdxTreeListControl(AComponent).Bands[i].Caption, ACodePage, ASeqNo);
    end;
    for i:=0 to TCustomdxTreeListControl(AComponent).ColumnCount-1 do
    begin
      TCustomdxTreeListControl(AComponent).Columns[i].Caption :=
        GetDisplayValue(ATable, TCustomdxTreeListControl(AComponent).Columns[i].Caption, ACodePage, ASeqNo);
      if TCustomdxTreeListControl(AComponent).Columns[i] is TdxTreeListPickColumn then
      begin
        AColumn := TdxTreeListPickColumn(TCustomdxTreeListControl(AComponent).Columns[i]);
        for j:=0 to AColumn.Items.Count-1 do
          AColumn.Items[j] := GetDisplayValue(ATable, AColumn.Items[j], ACodePage, ASeqNo);
      end;
    end;
  finally
    TCustomdxTreeListControl(AComponent).EndUpdate;
  end;
end;

procedure Proc_TBasedxReportLink(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
  procedure TranslateStrings(AStrs:TStrings);
  var
    i: Integer;
  begin
    AStrs.BeginUpdate;
    try
      for i:=0 to AStrs.Count-1 do
        AStrs[i] := GetDisplayValue(ATable, AStrs[i], ACodePage, ASeqNo);
    finally
      AStrs.EndUpdate;
    end;
  end;
begin
  TBasedxReportLink(AComponent).ReportTitle.Text :=
    GetDisplayValue(ATable, TBasedxReportLink(AComponent).ReportTitle.Text, ACodePage, ASeqNo);
//这些东西必须也翻译,否则不能使用,如[Page # of Pages #]
  TranslateStrings(TBasedxReportLink(AComponent).PrinterPage.PageFooter.LeftTitle);
  TranslateStrings(TBasedxReportLink(AComponent).PrinterPage.PageFooter.CenterTitle);
  TranslateStrings(TBasedxReportLink(AComponent).PrinterPage.PageFooter.RightTitle);
  TranslateStrings(TBasedxReportLink(AComponent).PrinterPage.PageHeader.LeftTitle);
  TranslateStrings(TBasedxReportLink(AComponent).PrinterPage.PageHeader.CenterTitle);
  TranslateStrings(TBasedxReportLink(AComponent).PrinterPage.PageHeader.RightTitle);
end;

procedure Proc_TcxCustomGrid(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i,j: Integer;
  AV : TcxCustomGridTableView;
  BV : TcxGridBandedTableView;
begin
  TcxCustomGrid(AComponent).BeginUpdate;
  try
    for i:=0 to TcxCustomGrid(AComponent).Levels.Count-1 do
      TcxCustomGrid(AComponent).Levels[i].Caption :=
        GetDisplayValue(ATable, TcxCustomGrid(AComponent).Levels[i].Caption, ACodePage, ASeqNo);
    for i:=0 to TcxCustomGrid(AComponent).ViewCount-1 do
    begin
      if TcxCustomGrid(AComponent).Views[i] is TcxCustomGridTableView then
      begin
        AV := TcxCustomGridTableView(TcxCustomGrid(AComponent).Views[i]);
        for j:=0 to AV.ItemCount-1 do
          AV.Items[j].Caption := GetDisplayValue(ATable,AV.Items[j].Caption, ACodePage, ASeqNo);
      end;
      if TcxCustomGrid(AComponent).Views[i] is TcxGridBandedTableView then
      begin
        BV := TcxGridBandedTableView(TcxCustomGrid(AComponent).Views[i]);
        for j:=0 to BV.Bands.Count-1 do
          BV.Bands.Items[j].Caption := GetDisplayValue(ATable,BV.Bands.Items[j].Caption, ACodePage, ASeqNo);
      end;
    end;
  finally
    TcxCustomGrid(AComponent).EndUpdate;
  end;
end;

procedure Proc_TcxCustomLabel(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
begin
  TcxCustomLabel(AComponent).Caption := GetDisplayValue(ATable, TcxCustomLabel(AComponent).Caption, ACodePage, ASeqNo);
end;

procedure Proc_TcxCustomComboBox(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i, nItemIndex: Integer;
begin
  nItemIndex := TcxCustomComboBox(AComponent).ItemIndex;
  for i:=0 to TcxCustomComboBox(AComponent).Properties.Items.Count-1 do
    TcxCustomComboBox(AComponent).Properties.Items[i] := GetDisplayValue(ATable, TcxComboBox(AComponent).Properties.Items[i], ACodePage, ASeqNo);
  TcxCustomComboBox(AComponent).ItemIndex := nItemIndex;
end;

procedure Proc_TcxCustomLookupComboBox(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i: Integer;
begin
  for i:=0 to TcxCustomLookupComboBox(AComponent).Properties.ListColumns.Count-1 do
    TcxCustomLookupComboBox(AComponent).Properties.ListColumns[i].Caption :=
      GetDisplayValue(ATable, TcxCustomLookupComboBox(AComponent).Properties.ListColumns[i].Caption, ACodePage, ASeqNo);
end;

procedure Proc_TcxCustomCheckBox(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
begin
  TcxCustomCheckBox_Temp(AComponent).Caption := GetDisplayValue(ATable, TcxCustomCheckBox_Temp(AComponent).Caption, ACodePage, ASeqNo);
end;

procedure Proc_TcxCustomGroupBox(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
begin
  TcxCustomGroupBox_Temp(AComponent).Caption := GetDisplayValue(ATable,TcxCustomGroupBox_Temp(AComponent).Caption, ACodePage, ASeqNo);
end;

procedure Proc_TcxCustomRadioGroup(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i: Integer;
begin
  TcxCustomRadioGroup_Temp(AComponent).Caption :=
    GetDisplayValue(ATable, TcxCustomRadioGroup_Temp(AComponent).Caption, ACodePage, ASeqNo);
  for i:=0 to TcxCustomRadioGroup_Temp(AComponent).Properties.Items.Count-1 do
    TcxCustomRadioGroup_Temp(AComponent).Properties.Items[i].Caption :=
      GetDisplayValue(ATable, TcxCustomRadioGroup_Temp(AComponent).Properties.Items[i].Caption, ACodePage, ASeqNo);
end;

procedure Proc_TcxPageControl(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i:integer;
begin
  for i:=0 to TcxPageControl(AComponent).PageCount-1 do
    TcxPageControl(AComponent).Pages[i].Caption :=
      GetDisplayValue(ATable, TcxPageControl(AComponent).Pages[i].Caption, ACodePage, ASeqNo);
end;

//RepositoryItem的始祖
procedure Proc_TcxEditRepositoryItem(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  vClassMethod: TClassMethod;
  vProperties : TcxCustomEditProperties;
begin
  vProperties := TcxEditRepositoryItem(AComponent).Properties;
  if vProperties=nil then exit;
  vClassMethod := AcroMultiClassMethod.AcroClassMethodStorage.GetNearstClassMethod(vProperties.ClassType);
  if vClassMethod<>nil then
    vClassMethod.MLMethod(ATable, vProperties, ACodePage, ASeqNo, AFont);
end;

//cxGrid的Column的始祖
procedure Proc_TcxCustomGridTableItem(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  vClassMethod: TClassMethod;
  vProperties : TcxCustomEditProperties;
begin
  vProperties := TcxCustomGridTableItem(AComponent).Properties;
  if vProperties=nil then exit;
  vClassMethod := AcroMultiClassMethod.AcroClassMethodStorage.GetNearstClassMethod(vProperties.ClassType);
  if vClassMethod<>nil then
    vClassMethod.MLMethod(ATable, vProperties, ACodePage, ASeqNo, AFont);
end;

//cxTreeList的Column的始祖
procedure Proc_TcxCustomInplaceEditContainer(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  vClassMethod: TClassMethod;
  vProperties : TcxCustomEditProperties;
begin
  vProperties := TcxCustomInplaceEditContainer(AComponent).Properties;
  if vProperties=nil then exit;
  vClassMethod := AcroMultiClassMethod.AcroClassMethodStorage.GetNearstClassMethod(vProperties.ClassType);
  if vClassMethod<>nil then
    vClassMethod.MLMethod(ATable, vProperties, ACodePage, ASeqNo, AFont);
end;

procedure Proc_TcxCustomEditProperties(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i: Integer;
begin
  TcxCustomEditProperties(AComponent).Buttons.BeginUpdate;
  try
    for i:=0 to TcxCustomEditProperties(AComponent).Buttons.Count-1 do
      TcxCustomEditProperties(AComponent).Buttons[i].Caption :=
        GetDisplayValue(ATable, TcxCustomEditProperties(AComponent).Buttons[i].Caption, ACodePage, ASeqNo);
  finally
    TcxCustomEditProperties(AComponent).Buttons.EndUpdate;
  end;
end;

procedure Proc_TcxLookupComboBoxProperties(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i: Integer;
begin
  TcxLookupComboBoxProperties(AComponent).ListColumns.BeginUpdate;
  try
    for i:=0 to TcxLookupComboBoxProperties(AComponent).ListColumns.Count-1 do
      TcxLookupComboBoxProperties(AComponent).ListColumns[i].Caption :=
        GetDisplayValue(ATable, TcxLookupComboBoxProperties(AComponent).ListColumns[i].Caption, ACodePage, ASeqNo);
  finally
    TcxLookupComboBoxProperties(AComponent).ListColumns.EndUpdate;
  end;
end;

procedure Proc_TcxImageComboBoxProperties(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i: Integer;
begin
  TcxImageComboBoxProperties(AComponent).Items.BeginUpdate;
  try
    for i:=0 to TcxImageComboBoxProperties(AComponent).Items.Count-1 do
      TcxImageComboBoxProperties(AComponent).Items[i].Description :=
        GetDisplayValue(ATable, TcxImageComboBoxProperties(AComponent).Items[i].Description, ACodePage, ASeqNo);
  finally
    TcxImageComboBoxProperties(AComponent).Items.EndUpdate;
  end;
end;

//RadioGroupProperties与CheckGroupProperties的祖先
procedure Proc_TcxCustomButtonGroupProperties(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i: Integer;
begin
  TcxCustomButtonGroupProperties(AComponent).Items.BeginUpdate;
  try
    for i:=0 to TcxCustomButtonGroupProperties(AComponent).Items.Count-1 do
    begin
      TcxButtonGroupItem_Temp(TcxCustomButtonGroupProperties(AComponent).Items[i]).Caption :=
        GetDisplayValue(ATable, TcxButtonGroupItem_Temp(TcxCustomButtonGroupProperties(AComponent).Items[i]).Caption, ACodePage, ASeqNo);
    end;
  finally
    TcxCustomButtonGroupProperties(AComponent).Items.EndUpdate;
  end;
end;

procedure TcxCustomTreeListControl_ReplaceNodes(ATable:IDataLocate; AComponent:TcxCustomTreeListControl; ACodePage,ASeqNo:String; AFont:TFont);
  procedure ReplaceNode(ANode:TcxTreeListNode);
  var
    i: Integer;
  begin
    for i:=0 to TcxCustomTreeListControl_Temp(AComponent).ColumnCount-1 do
      if VarIsStr(ANode.Values[i]) then
        ANode.Values[i] := GetDisplayValue(ATable, ANode.Values[i], ACodePage, ASeqNo);
    for i:=0 to ANode.Count-1 do ReplaceNode(ANode.Items[i]);
  end;
var
  i: Integer;
begin
  TcxCustomTreeListControl_Temp(AComponent).BeginUpdate;
  try
    for i:=0 to TcxCustomTreeListControl_Temp(AComponent).Count-1 do
      ReplaceNode(TcxCustomTreeListControl_Temp(AComponent).Items[i]);
  finally
    TcxCustomTreeListControl_Temp(AComponent).EndUpdate;
  end;
end;

procedure Proc_TcxCustomTreeListControl(ATable:IDataLocate; AComponent:TObject; ACodePage,ASeqNo:String; AFont:TFont);
var
  i: Integer;
begin
  TcxCustomTreeListControl_Temp(AComponent).BeginUpdate;
  try
    for i:=0 to TcxCustomTreeListControl_Temp(AComponent).Bands.Count-1 do
    begin
      TcxCustomTreeListControl_Temp(AComponent).Bands[i].Caption.Text :=
        GetDisplayValue(ATable, TcxCustomTreeListControl_Temp(AComponent).Bands[i].Caption.Text, ACodePage, ASeqNo);
    end;
    for i:=0 to TcxCustomTreeListControl_Temp(AComponent).ColumnCount-1 do
    begin
      TcxCustomTreeListControl_Temp(AComponent).Columns[i].Caption.Text :=
        GetDisplayValue(ATable, TcxCustomTreeListControl_Temp(AComponent).Columns[i].Caption.Text, ACodePage, ASeqNo);
    end;
  finally
    TcxCustomTreeListControl_Temp(AComponent).EndUpdate;
  end;
end;

initialization
//BarManager相关
  AcroClassMethodStorage.RegisterClassMethod(TdxBarManager       , Proc_TdxBarManager);
  AcroClassMethodStorage.RegisterClassMethod(TdxBarItem          , Proc_TdxBarItem);
  AcroClassMethodStorage.RegisterClassMethod(TdxBarCustomCombo   , Proc_TdxBarCustomCombo);
  AcroClassMethodStorage.RegisterClassMethod(TdxCustomDockControl, Proc_TdxCustomDockControl);
  AcroClassMethodStorage.RegisterClassMethod(TdxStatusBar        , Proc_TdxStatusBar);
//NavBar相关
  AcroClassMethodStorage.RegisterClassMethod(TdxNavBarGroup, Proc_TdxNavBarGroup);
  AcroClassMethodStorage.RegisterClassMethod(TdxNavBarItem , Proc_TdxNavBarItem);
//OrgChart
  AcroClassMethodStorage.RegisterClassMethod(TdxCustomOrgChart, Proc_TdxCustomOrgChart);
//
  AcroClassMethodStorage.RegisterClassMethod(TCustomdxTreeListControl, Proc_TCustomdxTreeListControl);
//报表
  AcroClassMethodStorage.RegisterClassMethod(TBasedxReportLink, Proc_TBasedxReportLink);

  AcroClassMethodStorage.RegisterClassMethod(TcxCustomGrid          , Proc_TcxCustomGrid);
  AcroClassMethodStorage.RegisterClassMethod(TcxCustomLabel         , Proc_TcxCustomLabel);
  AcroClassMethodStorage.RegisterClassMethod(TcxCustomComboBox      , Proc_TcxCustomComboBox);
  AcroClassMethodStorage.RegisterClassMethod(TcxCustomLookupComboBox, Proc_TcxCustomLookupComboBox);
  AcroClassMethodStorage.RegisterClassMethod(TcxCustomCheckBox      , Proc_TcxCustomCheckBox);
  AcroClassMethodStorage.RegisterClassMethod(TcxCustomGroupBox      , Proc_TcxCustomGroupBox);
  AcroClassMethodStorage.RegisterClassMethod(TcxCustomRadioGroup    , Proc_TcxCustomRadioGroup);
  AcroClassMethodStorage.RegisterClassMethod(TcxPageControl         , Proc_TcxPageControl);
//注册使用到EditRepository的元件
  AcroClassMethodStorage.RegisterClassMethod(TcxEditRepositoryItem         , Proc_TcxEditRepositoryItem);
  AcroClassMethodStorage.RegisterClassMethod(TcxCustomGridTableItem        , Proc_TcxCustomGridTableItem);
  AcroClassMethodStorage.RegisterClassMethod(TcxCustomInplaceEditContainer , Proc_TcxCustomInplaceEditContainer);
//注册各种EditRepository
  AcroClassMethodStorage.RegisterClassMethod(TcxCustomEditProperties       , Proc_TcxCustomEditProperties);
  AcroClassMethodStorage.RegisterClassMethod(TcxLookupComboBoxProperties   , Proc_TcxLookupComboBoxProperties);
  AcroClassMethodStorage.RegisterClassMethod(TcxImageComboBoxProperties    , Proc_TcxImageComboBoxProperties);
  AcroClassMethodStorage.RegisterClassMethod(TcxCustomButtonGroupProperties, Proc_TcxCustomButtonGroupProperties);

  AcroClassMethodStorage.RegisterClassMethod(TcxCustomTreeListControl, Proc_TcxCustomTreeListControl);
finalization
  AcroClassMethodStorage.UnRegisterClassMethod(TdxBarManager);
  AcroClassMethodStorage.UnRegisterClassMethod(TdxBarItem);
  AcroClassMethodStorage.UnRegisterClassMethod(TdxBarCustomCombo);
  AcroClassMethodStorage.UnRegisterClassMethod(TdxCustomDockControl);
  AcroClassMethodStorage.UnRegisterClassMethod(TdxStatusBar);

  AcroClassMethodStorage.UnRegisterClassMethod(TdxNavBarGroup);
  AcroClassMethodStorage.UnRegisterClassMethod(TdxNavBarItem);

  AcroClassMethodStorage.UnRegisterClassMethod(TdxCustomOrgChart);
  AcroClassMethodStorage.UnRegisterClassMethod(TCustomdxTreeListControl);
  AcroClassMethodStorage.UnRegisterClassMethod(TBasedxReportLink);

  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomGrid);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomLabel);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomComboBox);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomLookupComboBox);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomCheckBox);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomGroupBox);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomRadioGroup);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxPageControl);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxEditRepositoryItem);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomGridTableItem);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomInplaceEditContainer);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomEditProperties);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxLookupComboBoxProperties);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxImageComboBoxProperties);
  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomButtonGroupProperties);

  AcroClassMethodStorage.UnRegisterClassMethod(TcxCustomTreeListControl);
end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火星牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值