( 不能附文件,请包涵,自己贴下成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.

Acro Multi-Language Class-Method for Devexpress VCL相关推荐

  1. Devexpress VCL Build v2014 vol 14.1.4 发布

    虽然这次没加什么新东西,但是及时更新支持xe7,还算可以. What's New in 14.1.4 (VCL Product Line) New Major Features in 14.1 Wha ...

  2. VCL界面控件DevExpress VCL Controls发布v18.2.5|附下载

    DevExpress VCL Controls是 Devexpress公司旗下最老牌的用户界面套包.所包含的控件有:数据录入,图表,数据分析,导航,布局,网格,日程管理,样式,打印和工作流等,让您快速 ...

  3. DevExpress VCL Controls v15.1.5正式发布[附下载]

    2019独角兽企业重金招聘Python工程师标准>>> DevExpress VCL Controls是Devexpress公司旗下用户界面产品套包,包含该公司所有VCL控件产品和 ...

  4. Devexpress VCL Build v2014 vol 14.2.6 发布

    终于支持XE8 了.需要这么长时间吗? New Major Features in 14.2 What's New in VCL Products 14.2 Feature Highlights To ...

  5. DevExpress VCL for Delphi 各版本收集下载(最新支持Delphi 10.3.3 RIO)

    点此下载 最新更新: DevExpress VCL 18.1.6 Full Sources 下载包含以下内容: DevExpress VCL for Delphi 帮助文档,CHM格式: DevExp ...

  6. DevExpress VCL 一键安装工具

    一键安装工具 DxAutoInstaller-2.1.3 For Devexpress VCL:http://download.csdn.net/detail/wozengcong/8396181 一 ...

  7. VCL界面控件DevExpress VCL发布v20.2.5

    DevExpress技术交流群3:700924826      欢迎一起进群讨论 DevExpress VCL Controls是Devexpress公司旗下最老牌的用户界面套包,所包含的控件有:数据 ...

  8. VCL界面组件DevExpress VCL v22.2 - 拥有全新的矢量图形

    DevExpress VCL是Devexpress公司旗下最老牌的用户界面套包,所包含的控件有:数据录入.图表.数据分析.导航.布局等.该控件能帮助您创建优异的用户体验,提供高影响力的业务解决方案,并 ...

  9. DevExpress VCL for Delphi 各版本收集下载

    更多VCL组件请到:http://maxwoods.400gb.com/u/758954/1974711 DevExpress VCL 5.7:http://www.ctdisk.com/file/7 ...

  10. DevExpress VCL for Delphi 各版本收集下载(最新支持Delphi XE 7)

    DevExpress VCL for Delphi 帮助文档,CHM格式: http://maxwoods.400gb.com/u/758954/6239515 DevExpress VCL 5.7: ...

最新文章

  1. l#039;oracle 酒,【金钟庄园副牌干红葡萄酒Carillon de L#039;angelus】价格_年份_评分 - 酒窝网官网...
  2. 3月29日 如何在winform中加入动态系统时间
  3. rabbitmq 在centos下的安装
  4. oracle表分区设计_ORACLE 分区表的设计
  5. launch edge 和 latch edge 延迟以及静态时序分析相关概念
  6. SqlSession介绍
  7. git 的sshkeys生成方法以及上传代码鱼git
  8. LVGL『Roller滚轮控件』介绍
  9. 鸿蒙系统官网电脑版,华为鸿蒙系统官方pc版下载-华为鸿蒙系统官方电脑pc版 -优盘手机站...
  10. 车牌识别及提取系统MATLAB,车牌识别系统设计及MATLAB仿真
  11. ObjectARX如何打开一个dwg文件
  12. 用python自动制作ppt第二讲——插入文字的两种方法和追加文字
  13. java面试基础题整理(二)
  14. React.js学习(一):设计并实现一个“任务清单列表”
  15. homelede软路由设置方法_二级lede软路由设置方法,lede设置软路由网卡
  16. Ubuntu18.04配置搭建基于Gazebo的虚拟仿真平台(Px4):无人机(UAV)、无人车等模拟实验平台
  17. 详解JSP 中Spring工作原理及其作用
  18. 什么是BOSS业务?
  19. Linux下Oracle开机自启动
  20. oracle数据库dmp文件查看,查看oracle数据库dmp文件的字符集信息

热门文章

  1. 让你的文字会「说话」,抠脚大汉秒变撒娇萌妹
  2. HTML中网页如何显示多个空格?
  3. 计算机基于Springboot框架的美食发现系统的设计与实现.rar(毕业论文+源码+数据库文件)
  4. 我在哈佛辅导过桑德伯格(facebook 二号人物): 她让我明白我们误解了美国的精英教育
  5. 【Web网站服务】Apache网页优化
  6. 二次元单页导航 HTML模板源码
  7. 前端笔记-使用CSS为前端界面设置背景底纹
  8. Android自定义ScrollBar,Android必知必会-自定义Scrollbar样式
  9. 5g手机性价比高的手机
  10. webpack4引入JQuery的两种方法