cxdxgridconverter.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,743 行 · 第 1/5 页
PAS
1,743 行
ASummaryItems: TObject;
AcxSummaryGroup: TcxDataSummaryGroup;
AcxSummaryItem: TcxGridDBTableSummaryItem;
I, J, K: Integer;
ASeparator: string;
AFieldName: string;
AIsDefaultGroup: Boolean;
AdxColumn: TComponent;
ABeginText, AEndText: string;
begin
ASeparator := Converter.GetStringProperty(nil, 'SummarySeparator', '');
ASummaryGroups := Converter.GetClassProperty(nil, 'SummaryGroups');
if ASummaryGroups <> nil then
begin
if ASummaryGroups is TCollection then
with TCollection(ASummaryGroups) do
begin
for I := 0 to Count - 1 do
begin
ABeginText := Converter.GetStringProperty(Items[I], 'BeginSummaryText', '');
AEndText := Converter.GetStringProperty(Items[I], 'EndSummaryText', '');
AIsDefaultGroup := Converter.GetBooleanProperty(Items[I], 'DefaultGroup', True);
if AIsDefaultGroup then
begin
cxGridView.DataController.Summary.DefaultGroupSummaryItems.BeginText := ABeginText;
cxGridView.DataController.Summary.DefaultGroupSummaryItems.EndText := AEndText;
cxGridView.DataController.Summary.DefaultGroupSummaryItems.Separator := ASeparator;
AcxSummaryGroup := nil;
end
else
begin
AcxSummaryGroup := cxGridView.DataController.Summary.SummaryGroups.Add;
AcxSummaryGroup.SummaryItems.BeginText := ABeginText;
AcxSummaryGroup.SummaryItems.EndText := AEndText;
AcxSummaryGroup.SummaryItems.Separator := ASeparator;
end;
if AcxSummaryGroup <> nil then
FcxSummaryGroups.AddObject(Converter.GetStringProperty(Items[I], 'Name', ''), AcxSummaryGroup);
ASummaryItems := Converter.GetClassProperty(Items[I], 'SummaryItems');
if ASummaryItems <> nil then
begin
if ASummaryItems is TCollection then
with TCollection(ASummaryItems) do
begin
for J := 0 to Count - 1 do
begin
if AIsDefaultGroup then
AcxSummaryItem := TcxGridDBTableSummaryItem(cxGridView.DataController.Summary.DefaultGroupSummaryItems.Add)
else
AcxSummaryItem := TcxGridDBTableSummaryItem(AcxSummaryGroup.SummaryItems.Add);
AcxSummaryItem.Column := nil;
AdxColumn := GetColumn(Converter.GetStringProperty(Items[J], 'ColumnName', ''));
if AdxColumn <> nil then
begin
AFieldName := Converter.GetStringProperty(AdxColumn, 'FieldName', '');
for K := 0 to cxGridView.ColumnCount - 1 do
if TcxGridDbTableView(cxGridView).Columns[K].DataBinding.FieldName = AFieldName then
begin
AcxSummaryItem.Column := TcxGridDBTableView(cxGridView).Columns[K];
AcxSummaryItem.Position := spFooter;
Break;
end;
end;
AcxSummaryItem.FieldName := Converter.GetStringProperty(Items[J], 'SummaryField', '');
AcxSummaryItem.Format := Converter.GetStringProperty(Items[J], 'SummaryFormat', AcxSummaryItem.Format);
AcxSummaryItem.Kind := GetSummaryKind(Converter.GetEnumProperty(Items[J], 'SummaryType'));
end;
end;
end;
end;
end;
end;
end;
procedure TcxRealConverterToTableView.ImportSyncMode(const AValue: Boolean);
begin
TcxGridDBTableView(cxGridView).DataController.DataModeController.SyncMode := AValue;
end;
function TcxRealConverterToTableView.TestPreviewFieldName(AIndex: Integer;
const APreview: string): Boolean;
begin
Result := TcxGridDBTableView(cxGridView).Columns[AIndex].DataBinding.FieldName = APreview;
end;
function TcxRealConverterToTableView.DefaultPreviewFont(AFont: TFont): Boolean;
begin
if AFont = nil then
begin
Result := True;
Exit;
end;
with AFont do
Result :=
(Pitch = DefFontData.Pitch) and
(Style = DefFontData.Style) and
(Charset = DefFontData.Charset) and
(Name = DefFontData.Name) and
(Color = clBlue) and
(Size = 8);
end;
function TcxRealConverterToTableView.GetColumn(const AName: string): TComponent;
var
AColumns: TList;
I: Integer;
begin
Result := nil;
AColumns := TList.Create;
try
GetColumns(AColumns);
for I := 0 to AColumns.Count - 1 do
if Converter.GetStringProperty(TComponent(AColumns[I]), 'Name', '') = AName then
begin
Result := TComponent(AColumns[I]);
Break;
end;
finally
AColumns.Free;
end;
end;
procedure TcxRealConverterToTableView.GetColumns(AColumns: TList);
var
AForm: TComponent;
I: Integer;
begin
AForm := Converter.Source.Owner;
for I := 0 to AForm.ComponentCount - 1 do
begin
if AForm.Components[I].GetParentComponent = Converter.Source then
AColumns.Add(AForm.Components[I]);
end;
if AColumns.Count = 0 then
begin
for I := 0 to Converter.Source.ComponentCount - 1 do
begin
if Converter.Source.Components[I].GetParentComponent = Converter.Source then
AColumns.Add(Converter.Source.Components[I]);
end;
end;
end;
function TcxRealConverterToTableView.GetCXColumnByFieldName(const AFieldName: string): TcxGridDBColumn;
var
I: Integer;
begin
Result := nil;
for I := 0 to cxGridView.ColumnCount - 1 do
begin
if TcxGridDBTableView(cxGridView).Columns[I].DataBinding.FieldName = AFieldName then
begin
Result := TcxGridDBTableView(cxGridView).Columns[I];
Break;
end;
end;
end;
function TcxRealConverterToTableView.GetcxGrid: TcxCustomGrid;
begin
Result := Converter.Destination;
end;
function TcxRealConverterToTableView.GetcxGridView: TcxGridTableView;
begin
Result := Converter.cxGridView as TcxGridTableView;
end;
function TcxRealConverterToTableView.ConvertColumnShowEditButtons(
const AStyle: string): TcxGridItemShowEditButtons;
begin
if AStyle = 'sbDefault' then
Result := isebDefault
else if AStyle = 'sbAlways' then
Result := isebAlways
else if AStyle = 'sbNone' then
Result := isebNever
else
Result := isebDefault;
end;
function TcxRealConverterToTableView.GetSummaryKind(
const AType: string): TcxSummaryKind;
begin
if AType = 'cstNone' then
Result := skNone
else if AType = 'cstAvg' then
Result := skAverage
else if AType = 'cstCount' then
Result := skCount
else if AType = 'cstMax' then
Result := skMax
else if AType = 'cstMin' then
Result := skMin
else if AType = 'cstSum' then
Result := skSum
else
Result := skNone;
end;
{ TcxRealConverterToBandedTableView }
procedure TcxRealConverterToBandedTableView.DoImport;
begin
TcxGridDBBandedTableView(cxGridView).DataController.DataSource :=
Converter.GetClassProperty(nil, 'DataSource') as TDataSource;
ImportDXOptionsView;
ImportDXFilter;
ImportBands;
ImportColumns;
TcxGridDBBandedTableView(cxGridView).DataController.KeyFieldNames :=
Converter.GetStringProperty(nil, 'KeyField', '');
ImportGrid;
end;
procedure TcxRealConverterToBandedTableView.DoImportStyles;
begin
ImportGridStyles;
ImportBandsStyles;
ImportColumnsStyles;
end;
procedure TcxRealConverterToBandedTableView.AssignColumn(AColumn: TcxGridColumn;
ADXColumn: TObject; AIndex: Integer);
begin
with TcxGridDBBandedColumn(AColumn) do
begin
Position.BandIndex := Converter.GetIntegerProperty(ADXColumn, 'BandIndex', Position.BandIndex);
Position.ColIndex := Converter.GetIntegerProperty(ADXColumn, 'ColIndex', Position.ColIndex);
Options.VertSizing := Converter.GetBooleanProperty(ADXColumn, 'Sizing', Options.VertSizing);
Position.RowIndex := Converter.GetIntegerProperty(ADXColumn, 'RowIndex', Position.RowIndex);
end;
inherited AssignColumn(AColumn, ADXColumn, AIndex);
end;
procedure TcxRealConverterToBandedTableView.ImportAutoDataSetFilter(const AValue: Boolean);
begin
TcxGridDBBandedTableView(cxGridView).DataController.Filter.AutoDataSetFilter := AValue;
end;
procedure TcxRealConverterToBandedTableView.ImportColumnSummaryGroups;
function GetCXColumnByFieldName(const AFieldName: string): TcxGridDBBandedColumn;
var
I: Integer;
begin
Result := nil;
for I := 0 to cxGridView.ColumnCount - 1 do
begin
if TcxGridDbBandedTableView(cxGridView).Columns[I].DataBinding.FieldName = AFieldName then
begin
Result := TcxGridDbBandedTableView(cxGridView).Columns[I];
Break;
end;
end;
end;
var
AColumns: TList;
AColumn: TcxGridDBBandedColumn;
ASummaryField: string;
ASummaryFormat: string;
ASummaryGroupName: string;
ASummaryType: string;
ASummaryGroup: TcxDataSummaryGroup;
ASummaryItem: TcxGridDBTableSummaryItem;
ALink: TcxGridTableSummaryGroupItemLink;
AIndex: Integer;
I: Integer;
begin
AColumns := TList.Create;
try
GetColumns(AColumns);
for I := 0 to AColumns.Count - 1 do
begin
AColumn := GetCXColumnByFieldName(Converter.GetStringProperty(AColumns[I], 'FieldName', ''));
if AColumn = nil then
Continue;
ASummaryField := Converter.GetStringProperty(TComponent(AColumns[I]), 'SummaryField', '');
ASummaryFormat := Converter.GetStringProperty(TComponent(AColumns[I]), 'SummaryFormat', '');
ASummaryType := Converter.GetEnumProperty(TComponent(AColumns[I]), 'SummaryType');
ASummaryGroupName := Converter.GetStringProperty(TComponent(AColumns[I]), 'SummaryGroupName', '');
if ASummaryGroupName <> '' then
begin
if FcxSummaryGroups.Find(ASummaryGroupName, AIndex) then
begin
ASummaryGroup := TcxDataSummaryGroup(FcxSummaryGroups.Objects[AIndex]);
ALink := TcxGridTableSummaryGroupItemLink(ASummaryGroup.Links.Add);
ALink.Column := AColumn;
end;
end;
if (ASummaryField <> '') and (ASummaryType <> 'cstNone') then
begin
ASummaryGroup := cxGridView.DataController.Summary.SummaryGroups.Add;
ASummaryItem := TcxGridDBTableSummaryItem(ASummaryGroup.SummaryItems.Add);
ASummaryItem.FieldName := ASummaryField;
ASummaryItem.Format := ASummaryFormat;
ASummaryItem.Kind := GetSummaryKind(ASummaryType);
ALink := TcxGridTableSummaryGroupItemLink(ASummaryGroup.Links.Add);
ALink.Column := AColumn;
end;
end;
finally
AColumns.Free;
end;
end;
procedure TcxRealConverterToBandedTableView.AssignDXOptionsView(AList: TStringList);
var
I: Integer;
begin
with cxGridView do
FBandHeaderWidth := AList.Find('edgoBandHeaderWidth', I);
inherited AssignDXOptionsView(AList);
end;
procedure TcxRealConverterToBandedTableView.AssignGrid;
begin
with cxGridView do
begin
OptionsView.BandHeaders := Converter.GetBooleanProperty(nil, 'ShowBands', OptionsView.BandHeaders);
OptionsView.FixedBandSeparatorWidth := Converter.GetIntegerProperty(nil, 'FixedBandLineWidth',
OptionsView.FixedBandSeparatorWidth);
end;
inherited AssignGrid;
end;
procedure TcxRealConverterToBandedTableView.AssignSummaryItem(AColumn: TcxGridColumn; ADXColumn: TObject);
var
ASummaryFooterType: string;
AcxSummaryFooterItem: TcxGridDBTableSummaryItem;
begin
ASummaryFooterType := Converter.GetEnumProperty(ADXColumn, 'SummaryFooterType');
if ASummaryFooterType <> 'cstNone' then
begin
AcxSummaryFooterItem := TcxGridDBTableSummaryItem(
TcxGridDBBandedTableView(cxGridView).DataController.Summary.FooterSummaryItems.Add);
AcxSummaryFooterItem.FieldName := Converter.GetStringProperty(ADXColumn, 'SummaryFooterField', '');
AcxSummaryFooterItem.Format := Converter.GetStringProperty(ADXColumn, 'SummaryFooterFormat',
AcxSummaryFooterItem.Format);
AcxSummaryFooterItem.Kind := GetSummaryKind(ASummaryFooterType);
AcxSummaryFooterItem.Column := AColumn;
end;
end;
function TcxRealConverterToBandedTableView.CreateColumn: TcxGridColumn;
begin
Result := TcxGridDBBandedTableView(cxGridView).CreateColumn;
end;
procedure TcxRealConverterToBandedTableView.ImportColumnsStyles;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?