Componentes.Terceros.DevExp.../internal/x.44/1/ExpressQuantumGrid 3/Sources/dxGrClms.pas
2009-06-29 12:09:02 +00:00

560 lines
16 KiB
ObjectPascal

{*******************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressQuantumGrid extended columns }
{ }
{ Copyright (c) 1998-2009 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSGRID AND ALL ACCOMPANYING VCL }
{ CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{*******************************************************************}
unit dxGrClms;
interface
{$I dxTLVer.inc}
uses
Windows, Messages, SysUtils, Classes, DB, dxExEdtr, dxDBCtrl, dxDBGrid,
dxCntner, dxTL, dxDBTLCl;
type
{ TdxDBGridButtonColumn }
TdxDBGridButtonColumn = class(TdxDBTreeListButtonColumn)
public
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridDropDownColumn }
TdxDBGridDropDownColumn = class(TdxDBTreeListDropDownColumn)
public
property SummaryGroup;
published
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridDateColumn }
TdxDBGridDateColumn = class (TdxDBTreeListDateColumn)
public
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridCheckColumn }
TdxDBGridCheckColumn = class(TdxDBTreeListCheckColumn)
private
FDisplayCheck: string;
FDisplayUncheck: string;
FDisplayNull: string;
procedure SetDisplayCheck(const Value: string);
procedure SetDisplayUnCheck(const Value: string);
procedure SetDisplayNull(const Value: string);
protected
function GetGroupText(const Value: string): string; override;
procedure PrepareFilterEdit(AEdit: TdxInplaceEdit); override;
public
procedure Assign(Source: TPersistent); override;
procedure RestoreDefaults; override;
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property DisplayChecked: string read FDisplayCheck write SetDisplayCheck;
property DisplayUnChecked: string read FDisplayUnCheck write SetDisplayUnCheck;
property DisplayNull: string read FDisplayNull write SetDisplayNull;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridImageColumn }
TdxDBGridImageColumn = class(TdxDBTreeListImageColumn)
protected
function GetGroupText(const Value: string): string; override;
public
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridSpinColumn }
TdxDBGridSpinColumn = class(TdxDBTreeListSpinColumn)
public
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridLookupColumn }
TdxDBGridLookupColumn = class(TdxDBTreeListLookupColumn)
public
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridLookupColumn }
TdxDBGridPickColumn = class(TdxDBTreeListPickColumn)
public
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridCalcColumn }
TdxDBGridCalcColumn = class(TdxDBTreeListCalcColumn)
public
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridBlobColumn }
TdxDBGridBlobColumn = class(TdxDBTreeListBlobColumn)
public
property SummaryGroup;
published
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridHyperLinkColumn }
TdxDBGridHyperLinkColumn = class(TdxDBTreeListHyperLinkColumn)
public
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridTimeColumn }
TdxDBGridTimeColumn = class(TdxDBTreeListTimeColumn)
public
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridCurrencyColumn }
TdxDBGridCurrencyColumn = class(TdxDBTreeListCurrencyColumn)
public
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridMemoColumn }
TdxDBGridMemoColumn = class(TdxDBTreeListMemoColumn)
public
property SummaryGroup;
published
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridGraphicColumn }
TdxDBGridGraphicColumn = class(TdxDBTreeListGraphicColumn)
public
property SummaryGroup;
published
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridMRUColumn }
TdxDBGridMRUColumn = class(TdxDBTreeListMRUColumn)
public
property SummaryGroup;
published
property DisableFilter;
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
{ TdxDBGridWrapperColumn }
TdxDBGridWrapperColumn = class(TdxDBTreeListWrapperColumn)
public
property SummaryGroup;
published
property GroupIndex;
property SummaryType;
property SummaryField;
property SummaryFormat;
property SortBySummary;
property OnSummary;
property SummaryGroupName;
property SummaryFooterType;
property SummaryFooterField;
property SummaryFooterFormat;
property OnSummaryFooter;
property OnDrawSummaryFooter;
end;
implementation
{ TdxDBGridCheckColumn }
procedure TdxDBGridCheckColumn.Assign(Source: TPersistent);
begin
if Source is TdxDBGridCheckColumn then
begin
if Assigned(ATreeList) then ATreeList.BeginUpdate;
try
inherited Assign(Source);
DisplayChecked := TdxDBGridCheckColumn(Source).DisplayChecked;
DisplayUnChecked := TdxDBGridCheckColumn(Source).DisplayUnChecked;
DisplayNull := TdxDBGridCheckColumn(Source).DisplayNull;
finally
if Assigned(ATreeList) then ATreeList.EndUpdate;
end;
end
else
inherited Assign(Source);
end;
procedure TdxDBGridCheckColumn.RestoreDefaults;
begin
inherited RestoreDefaults;
FDisplayCheck := '';
FDisplayUnCheck := '';
FDisplayNull := '';
end;
function TdxDBGridCheckColumn.GetGroupText(const Value: string): string;
var
AState: TdxCheckBoxState;
begin
Result := Value;
AState := GetCheckBoxState(Value);
case AState of
cbsGrayed: if FDisplayNull <> '' then Result := FDisplayNull;
cbsChecked: if FDisplayCheck <> '' then Result := FDisplayCheck;
cbsUnchecked: if FDisplayUnCheck <> '' then Result := FDisplayUnCheck;
end;
end;
type
TCustomdxFilterImageEditWrapper = class(TCustomdxFilterImageEdit);
procedure TdxDBGridCheckColumn.PrepareFilterEdit(AEdit: TdxInplaceEdit);
begin
inherited PrepareFilterEdit(AEdit);
if AEdit is TCustomdxFilterImageEdit then
with TCustomdxFilterImageEditWrapper(AEdit) do
begin
if (DisplayChecked <> '') or (DisplayUnChecked <> '') or (DisplayNull <> '') then
begin
Descriptions.Clear;
Descriptions.Add(FDisplayNull);
Descriptions.Add(FDisplayUnCheck);
Descriptions.Add(FDisplayCheck);
end;
end;
end;
procedure TdxDBGridCheckColumn.SetDisplayCheck(const Value: string);
begin
if FDisplayCheck <> Value then
begin
FDisplayCheck := Value;
Changed(True);
end;
end;
procedure TdxDBGridCheckColumn.SetDisplayUnCheck(const Value: string);
begin
if FDisplayUnCheck <> Value then
begin
FDisplayUnCheck := Value;
Changed(True);
end;
end;
procedure TdxDBGridCheckColumn.SetDisplayNull(const Value: string);
begin
if FDisplayNull <> Value then
begin
FDisplayNull := Value;
Changed(True);
end;
end;
{ TdxDBGridImageColumn }
function TdxDBGridImageColumn.GetGroupText(const Value: string): string;
var
AImageIndex, ADescIndex: Integer;
begin
GetIndexes(Value, AImageIndex, ADescIndex);
if (0 <= ADescIndex) and (ADescIndex < Descriptions.Count) then
Result := Descriptions[ADescIndex]
else Result := Value;
end;
{ InitDBGridColumnList }
procedure InitDBGridColumnList(AFieldType: TFieldType; AFieldKind: TFieldKind;
var Info: TdxDBTreeListColumnClassInfo);
const
AVer = 1;
begin
if AFieldKind <> fkLookup then
begin
case AFieldType of
ftBoolean: Info.ColumnClass := TdxDBGridCheckColumn;
ftDate, ftDateTime: Info.ColumnClass := TdxDBGridDateColumn;
ftTime: Info.ColumnClass := TdxDBGridTimeColumn;
ftCurrency, ftBCD: Info.ColumnClass := TdxDBGridCurrencyColumn;
ftMemo: Info.ColumnClass := TdxDBGridMemoColumn;
ftGraphic: Info.ColumnClass := TdxDBGridGraphicColumn;
ftBytes, ftVarBytes, ftBlob, ftFmtMemo, ftParadoxOle,
ftDBaseOle, ftTypedBinary{$IFDEF DELPHI5}, ftOraBlob, ftOraClob{$ENDIF}:
Info.ColumnClass := TdxDBGridBlobColumn;
else
Info.ColumnClass := TdxDBGridMaskColumn;
end;
Info.Version := AVer;
end
else {lookup}
begin
Info.ColumnClass := TdxDBGridLookupColumn;
Info.Version := AVer;
end;
end;
initialization
Classes.RegisterClasses([TdxDBGridButtonColumn, TdxDBGridDateColumn,
TdxDBGridCheckColumn, TdxDBGridImageColumn, TdxDBGridSpinColumn,
TdxDBGridLookupColumn, TdxDBGridPickColumn, TdxDBGridCalcColumn,
TdxDBGridBlobColumn,
TdxDBGridHyperLinkColumn, TdxDBGridTimeColumn, TdxDBGridCurrencyColumn,
TdxDBGridMemoColumn, TdxDBGridGraphicColumn, TdxDBGridMRUColumn,
TdxDBGridWrapperColumn]);
InitDefaultDBGridColumnClasses(InitDBGridColumnList);
finalization
ResetDefaultDBGridColumnClasses;
end.