git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@58 05c56307-c608-d34a-929d-697000501d7a
184 lines
5.4 KiB
ObjectPascal
184 lines
5.4 KiB
ObjectPascal
unit cxGridGroupRowPopupMenuItems;
|
|
|
|
{$I cxVer.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
cxCustomData, cxGridCustomView, cxGridTableView, cxGridMenuOperations;
|
|
|
|
type
|
|
TcxGridGroupRowPopupMenuOperation = class(TcxGridTablePopupMenuOperation)
|
|
private
|
|
function GetHitRow: TcxGridGroupRow;
|
|
public
|
|
property HitRow: TcxGridGroupRow read GetHitRow;
|
|
end;
|
|
|
|
TcxGridGroupRowSortByGroupValuesOperation = class(TcxGridGroupRowPopupMenuOperation)
|
|
protected
|
|
procedure Execute(Sender: TObject); override;
|
|
function GetDown: Boolean; override;
|
|
public
|
|
constructor Create; override;
|
|
end;
|
|
|
|
TcxGridGroupRowSortBySummaryCaptionOperation = class(TcxGridGroupRowPopupMenuOperation)
|
|
public
|
|
constructor Create; override;
|
|
end;
|
|
|
|
TcxGridGroupRowSortBySummaryOperation = class(TcxGridGroupRowPopupMenuOperation)
|
|
private
|
|
FSummaryItem: TcxDataSummaryItem;
|
|
procedure SetSummaryItem(Value: TcxDataSummaryItem);
|
|
protected
|
|
procedure Execute(Sender: TObject); override;
|
|
function GetCaption: string; override;
|
|
function GetDown: Boolean; override;
|
|
function GetImageResourceName: string; override;
|
|
public
|
|
constructor Create; override;
|
|
property SummaryItem: TcxDataSummaryItem read FSummaryItem write SetSummaryItem;
|
|
end;
|
|
|
|
TcxGridGroupRowPopupMenuOperations = class(TcxGridPopupMenuOperations)
|
|
private
|
|
FGroupRow: TcxGridGroupRow;
|
|
procedure SetGroupRow(Value: TcxGridGroupRow);
|
|
protected
|
|
procedure AddItems; override;
|
|
public
|
|
function CanProcess(AHitTest: TcxCustomGridHitTest): Boolean; override;
|
|
property GroupRow: TcxGridGroupRow read FGroupRow write SetGroupRow;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
SysUtils, cxClasses, cxGridCustomTableView, cxGridPopupMenuConsts;
|
|
|
|
{ TcxGridGroupRowPopupMenuOperation }
|
|
|
|
function TcxGridGroupRowPopupMenuOperation.GetHitRow: TcxGridGroupRow;
|
|
begin
|
|
if (GridPopupMenu.HitTest is TcxGridRecordHitTest) and
|
|
(TcxGridRecordHitTest(GridPopupMenu.HitTest).GridRecord is TcxGridGroupRow) then
|
|
Result := TcxGridGroupRow(TcxGridRecordHitTest(GridPopupMenu.HitTest).GridRecord)
|
|
else
|
|
Result := nil;
|
|
end;
|
|
|
|
{ TcxGridGroupRowSortByGroupValuesOperation }
|
|
|
|
constructor TcxGridGroupRowSortByGroupValuesOperation.Create;
|
|
begin
|
|
inherited;
|
|
ResCaption := @cxSGridSortByGroupValues;
|
|
end;
|
|
|
|
procedure TcxGridGroupRowSortByGroupValuesOperation.Execute(Sender: TObject);
|
|
begin
|
|
if HitRow.GroupSummaryItems.SortedSummaryItem <> nil then
|
|
HitRow.GroupSummaryItems.SortedSummaryItem.Sorted := False;
|
|
end;
|
|
|
|
function TcxGridGroupRowSortByGroupValuesOperation.GetDown: Boolean;
|
|
begin
|
|
Result := HitRow.GroupSummaryItems.SortedSummaryItem = nil;
|
|
end;
|
|
|
|
{ TcxGridGroupRowSortBySummaryCaptionOperation }
|
|
|
|
constructor TcxGridGroupRowSortBySummaryCaptionOperation.Create;
|
|
begin
|
|
inherited;
|
|
ResCaption := @cxSGridSortBySummaryCaption;
|
|
end;
|
|
|
|
{ TcxGridGroupRowSortBySummaryOperation }
|
|
|
|
constructor TcxGridGroupRowSortBySummaryOperation.Create;
|
|
begin
|
|
inherited;
|
|
ResCaption := @cxSGridSortBySummary;
|
|
end;
|
|
|
|
procedure TcxGridGroupRowSortBySummaryOperation.SetSummaryItem(Value: TcxDataSummaryItem);
|
|
begin
|
|
if FSummaryItem <> Value then
|
|
begin
|
|
FSummaryItem := Value;
|
|
UpdateImage;
|
|
end;
|
|
end;
|
|
|
|
procedure TcxGridGroupRowSortBySummaryOperation.Execute(Sender: TObject);
|
|
begin
|
|
SummaryItem.Sorted := True;
|
|
end;
|
|
|
|
function TcxGridGroupRowSortBySummaryOperation.GetCaption: string;
|
|
var
|
|
AGridSummaryItem: IcxGridSummaryItem;
|
|
begin
|
|
if Supports(SummaryItem, IcxGridSummaryItem, AGridSummaryItem) then
|
|
Result := AGridSummaryItem.DisplayText
|
|
else
|
|
Result := '';
|
|
if Result = '' then
|
|
begin
|
|
Result := cxGetResourceString(GetSummaryName(SummaryItem.Kind));
|
|
if SummaryItem.ItemLink <> nil then
|
|
Result := Format(inherited GetCaption,
|
|
[Result, (SummaryItem.ItemLink as TcxGridColumn).GetAlternateCaption]);
|
|
end;
|
|
Result := ' ' + Result;
|
|
end;
|
|
|
|
function TcxGridGroupRowSortBySummaryOperation.GetDown: Boolean;
|
|
begin
|
|
Result := SummaryItem.Sorted;
|
|
end;
|
|
|
|
function TcxGridGroupRowSortBySummaryOperation.GetImageResourceName: string;
|
|
begin
|
|
if SummaryItem <> nil then
|
|
Result := GetSummaryImageResourceName(SummaryItem.Kind)
|
|
else
|
|
Result := inherited GetImageResourceName;
|
|
end;
|
|
|
|
{ TcxGridGroupRowPopupMenuOperations }
|
|
|
|
procedure TcxGridGroupRowPopupMenuOperations.SetGroupRow(Value: TcxGridGroupRow);
|
|
begin
|
|
FGroupRow := Value;
|
|
RecreateItems;
|
|
end;
|
|
|
|
procedure TcxGridGroupRowPopupMenuOperations.AddItems;
|
|
var
|
|
ASummaryItems: TcxDataGroupSummaryItems;
|
|
I: Integer;
|
|
AGridSummaryItem: IcxGridSummaryItem;
|
|
begin
|
|
if GroupRow = nil then Exit;
|
|
ASummaryItems := GroupRow.GroupSummaryItems;
|
|
if ASummaryItems.Count = 0 then Exit;
|
|
AddItem(TcxGridGroupRowSortByGroupValuesOperation);
|
|
AddItem(TcxGridGroupRowSortBySummaryCaptionOperation).BeginGroup := True;
|
|
for I := 0 to ASummaryItems.Count - 1 do
|
|
if not Supports(ASummaryItems[I], IcxGridSummaryItem, AGridSummaryItem) or
|
|
AGridSummaryItem.VisibleForCustomization then
|
|
TcxGridGroupRowSortBySummaryOperation(AddItem(TcxGridGroupRowSortBySummaryOperation)).SummaryItem := ASummaryItems[I];
|
|
end;
|
|
|
|
function TcxGridGroupRowPopupMenuOperations.CanProcess(AHitTest: TcxCustomGridHitTest): Boolean;
|
|
begin
|
|
Result := inherited CanProcess(AHitTest) and (AHitTest is TcxGridRecordHitTest) and
|
|
(TcxGridRecordHitTest(AHitTest).GridRecord is TcxGridGroupRow);
|
|
end;
|
|
|
|
end.
|