cxgridcustomtableview.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,405 行 · 第 1/5 页
PAS
1,405 行
procedure SetDestItemContainerKind(Value: TcxGridItemContainerKind);
procedure SetDestZone(Value: TcxGridItemContainerZone);
protected
procedure CalculateDestParams(AHitTest: TcxCustomGridHitTest;
out AContainerKind: TcxGridItemContainerKind; out AZone: TcxGridItemContainerZone); virtual;
procedure CheckDestItemContainerKind(var AValue: TcxGridItemContainerKind); virtual;
function GetCustomizationFormListBox: TcxCustomGridItemsListBox; override;
function IsSourceCustomizationForm: Boolean; override;
procedure BeginDragAndDrop; override;
procedure DragAndDrop(const P: TPoint; var Accepted: Boolean); override;
procedure EndDragAndDrop(Accepted: Boolean); override;
property DestItemContainerKind: TcxGridItemContainerKind read FDestItemContainerKind
write SetDestItemContainerKind;
property DestZone: TcxGridItemContainerZone read FDestZone write SetDestZone;
property SourceItemContainerKind: TcxGridItemContainerKind read FSourceItemContainerKind
write FSourceItemContainerKind;
public
constructor Create(AControl: TcxControl); override;
destructor Destroy; override;
end;
// customization form
TcxCustomGridTableItemsListBoxClass = class of TcxCustomGridTableItemsListBox;
TcxCustomGridTableItemsListBox = class(TcxCustomGridItemsListBox)
private
function GetGridView: TcxCustomGridTableView;
protected
procedure RefreshItemsAsTableItems;
property GridView: TcxCustomGridTableView read GetGridView;
end;
TcxCustomGridTableCustomizationForm = class(TcxCustomGridCustomizationForm)
private
FItemsListBox: TcxCustomGridTableItemsListBox;
FItemsPage: TcxTabSheet;
protected
procedure CreateControls; override;
function GetItemsListBoxClass: TcxCustomGridTableItemsListBoxClass; virtual;
function GetItemsPageCaption: string; virtual; abstract;
function GetItemsPageVisible: Boolean; virtual;
procedure InitPageControl; override;
property ItemsListBox: TcxCustomGridTableItemsListBox read FItemsListBox;
public
procedure RefreshData; override;
property ItemsPage: TcxTabSheet read FItemsPage;
end;
// popups
IcxGridFilterPopupOwner = interface(IcxCustomGridPopupOwner)
['{1FC070B2-36E5-4388-B22D-1FF5D240E95F}']
function GetItem: TcxCustomGridTableItem;
end;
TcxGridFilterPopupListBox = class(TcxGridPopupListBox)
private
function GetPopup: TcxGridFilterPopup;
protected
function CanHaveCheck(AItemIndex: Integer): Boolean; override;
procedure DrawItemContent(ACanvas: TcxCanvas; AIndex: Integer; ARect: TRect;
AState: TOwnerDrawState); override;
function HasCheck(AItemIndex: Integer): Boolean; override;
public
property Popup: TcxGridFilterPopup read GetPopup;
end;
TcxGridFilterPopupClass = class of TcxGridFilterPopup;
TcxGridFilterPopup = class(TcxCustomGridPopup)
private
FButton: TcxButton;
FFilterChangedByCheck: Boolean;
FItem: TcxCustomGridTableItem;
FListBox: TcxGridFilterPopupListBox;
FListBoxItems: TStringList;
FValueList: TcxGridFilterValueList;
function GetFilter: TcxDataFilterCriteria;
function GetGridView: TcxCustomGridTableView;
//function GetOwnerValue: IcxGridFilterPopupOwner;
//procedure SetOwnerValue(Value: IcxGridFilterPopupOwner);
procedure SetFilterChangedByCheck(Value: Boolean);
procedure ButtonClicked(Sender: TObject);
procedure ListBoxAction(Sender: TcxGridPopupListBox; AItemIndex: Integer);
protected
procedure AddListBoxItems; virtual;
procedure AdjustListBoxSize; virtual;
procedure ApplyFilterUsingCheckedItems(const AItemIndexes: TcxGridIndexes); virtual;
procedure ApplyFilterUsingClickedItem(AItemIndex: Integer); virtual;
function GetImmediateFilterUsingChecks: Boolean; virtual;
function GetListBoxCheckedItemIndexes: TcxGridIndexes; virtual;
function GetSelectedItemIndex: Integer; virtual;
procedure InitButton; virtual;
procedure InitListBox; virtual;
procedure InitPopup; override;
function IsButtonVisible: Boolean; virtual;
function IsCheck(AItemIndex: Integer): Boolean; virtual;
function IsMRUItemsListSeparator(AItemIndex: Integer): Boolean;
function SupportsChecks: Boolean; virtual;
procedure UpdateButtonEnabled; virtual;
property Button: TcxButton read FButton;
property Filter: TcxDataFilterCriteria read GetFilter;
property FilterChangedByCheck: Boolean read FFilterChangedByCheck write SetFilterChangedByCheck;
property ImmediateFilterUsingChecks: Boolean read GetImmediateFilterUsingChecks;
property ListBox: TcxGridFilterPopupListBox read FListBox;
property ListBoxItems: TStringList read FListBoxItems;
property SelectedItemIndex: Integer read GetSelectedItemIndex;
property ValueList: TcxGridFilterValueList read FValueList;
public
constructor Create(AGridView: TcxCustomGridView); override;
destructor Destroy; override;
procedure CloseUp; override;
property GridView: TcxCustomGridTableView read GetGridView;
property Item: TcxCustomGridTableItem read FItem;
// property Owner: IcxGridFilterPopupOwner read GetOwnerValue write SetOwnerValue;
end;
TcxGridFilterMRUItemsPopupClass = class of TcxGridFilterMRUItemsPopup;
TcxGridFilterMRUItemsPopup = class(TcxCustomGridPopup)
private
FListBox: TcxGridPopupListBox;
function GetFiltering: TcxCustomGridTableFiltering;
function GetGridView: TcxCustomGridTableView;
procedure ListBoxAction(Sender: TcxGridPopupListBox; AItemIndex: Integer);
protected
procedure AddFilterMRUItems(AStrings: TStrings); virtual;
procedure ApplyFilterMRUItem(AItemIndex: Integer); virtual;
function GetTextOffsetHorz: Integer; virtual;
procedure InitPopup; override;
property Filtering: TcxCustomGridTableFiltering read GetFiltering;
property ListBox: TcxGridPopupListBox read FListBox;
public
constructor Create(AGridView: TcxCustomGridView); override;
property GridView: TcxCustomGridTableView read GetGridView;
property TextOffsetHorz: Integer read GetTextOffsetHorz;
end;
TcxCustomGridCustomizationPopup = class(TcxCustomGridPopup)
private
FCheckListBox: TcxCheckListBox;
FDragItemIndex: Integer;
FScrollDirection: TcxDirection;
FScrollTimer: TcxTimer;
function GetGridView: TcxCustomGridTableView;
procedure SetScrollDirection(Value: TcxDirection);
procedure CheckListBoxClick(Sender: TObject);
procedure CheckListBoxCheckClick(Sender: TObject; AIndex: Integer;
APrevState, ANewState: TcxCheckBoxState);
procedure CheckListBoxEndDrag(Sender, Target: TObject; X, Y: Integer);
procedure CheckListBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure CheckListBoxMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure CheckListBoxStartDrag(Sender: TObject; var DragObject: TDragObject);
procedure CheckListBoxDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure CheckListBoxDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure ScrollTimerHandler(Sender: TObject);
protected
procedure AddCheckListBoxItems; virtual; abstract;
procedure AdjustCheckListBoxSize(AFixedHeight: Boolean = False); virtual;
procedure CheckClicked(AIndex: Integer; AChecked: Boolean); virtual;
procedure CreateCheckListBox; virtual;
function GetCheckListBoxColumnWidth: Integer; virtual;
function GetDropDownCount: Integer; virtual; abstract;
function GetItemInsertionIndex(X, Y: Integer): Integer;
procedure InitPopup; override;
procedure RefreshCheckListBoxItems;
function SupportsItemMoving: Boolean; virtual; abstract;
procedure GetCheckListBoxSelectedItems(AItems: TList);
procedure SetCheckListBoxSelectedItems(AItems: TList);
procedure ItemClicked(AItem: TObject; AChecked: Boolean); virtual; abstract;
function GetItemIndex(AItem: TObject): Integer; virtual; abstract;
procedure SetItemIndex(AItem: TObject; AIndex: Integer); virtual; abstract;
property CheckListBoxColumnWidth: Integer read GetCheckListBoxColumnWidth;
property DragItemIndex: Integer read FDragItemIndex write FDragItemIndex;
property ScrollDirection: TcxDirection read FScrollDirection write SetScrollDirection;
public
constructor Create(AGridView: TcxCustomGridView); override;
procedure CloseUp; override;
procedure CorrectBoundsWithDesktopWorkArea(var APosition: TPoint); override;
procedure Popup; override;
property CheckListBox: TcxCheckListBox read FCheckListBox;
property GridView: TcxCustomGridTableView read GetGridView;
end;
TcxCustomGridItemsCustomizationPopupClass = class of TcxCustomGridItemsCustomizationPopup;
TcxCustomGridItemsCustomizationPopup = class(TcxCustomGridCustomizationPopup)
protected
procedure AddCheckListBoxItems; override;
function GetDropDownCount: Integer; override;
function SupportsItemMoving: Boolean; override;
procedure ItemClicked(AItem: TObject; AChecked: Boolean); override;
function GetItemIndex(AItem: TObject): Integer; override;
procedure SetItemIndex(AItem: TObject; AIndex: Integer); override;
end;
// controllers
TcxGridEditingControllerClass = class of TcxGridEditingController;
TcxGridEditingController = class
private
FController: TcxCustomGridTableController;
FEdit: TcxCustomEdit;
FEditHiding: Boolean;
FEditingItem: TcxCustomGridTableItem;
FEditingItemSetting: Boolean;
FEditList: TcxInplaceEditList;
FEditPreparing: Boolean;
FEditShowingTimer: TcxTimer;
FEditShowingTimerItem: TcxCustomGridTableItem;
FEditUpdateNeeded: Boolean;
FInitiatingEditing: Boolean;
FIsEditPlaced: Boolean;
FIsErrorOnEditExit: Boolean;
FPrevEditOnChange: TNotifyEvent;
FPrevEditOnEditValueChanged: TNotifyEvent;
function GetEditingProperties: TcxCustomEditProperties;
function GetGridView: TcxCustomGridTableView;
function GetIsEditing: Boolean;
procedure SetEditingItem(Value: TcxCustomGridTableItem);
procedure EditShowingTimerHandler(Sender: TObject);
protected
procedure AfterViewInfoCalculate; virtual;
procedure BeforeViewInfoCalculate; virtual;
procedure CancelEditUpdatePost;
function CanInitEditing: Boolean; virtual;
function CanRemoveEditFocus: Boolean; virtual;
function CanUpdateEditValue: Boolean; virtual;
procedure CheckEdit;
procedure CheckEditUpdatePost;
procedure DoEditChanged; virtual;
procedure DoEditKeyDown(var Key: Word; Shift: TShiftState); virtual;
procedure DoUpdateEdit;
function GetHideEditOnExit: Boolean; virtual;
function GetHideEditOnFocusedRecordChange: Boolean; virtual;
procedure InitEdit; virtual;
procedure UninitEdit; virtual;
procedure PostEditingData; virtual;
procedure PostEditUpdate;
function PrepareEdit(AItem: TcxCustomGridTableItem; AOnMouseEvent: Boolean): Boolean; virtual;
procedure UpdateEditValue;
procedure UpdateValue;
procedure AssignEditEvents; virtual;
procedure UnassignEditEvents; virtual;
procedure EditAfterKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); virtual;
procedure EditChanged(Sender: TObject); virtual;
procedure EditEditing(Sender: TObject; var CanEdit: Boolean); virtual;
procedure EditExit(Sender: TObject); virtual;
procedure EditFocusChanged(Sender: TObject); virtual;
procedure EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); virtual;
procedure EditKeyPress(Sender: TObject; var Key: Char); virtual;
procedure EditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); virtual;
procedure EditPostEditValue(Sender: TObject); virtual;
procedure EditValueChanged(Sender: TObject); virtual;
property EditHiding: Boolean read FEditHiding;
property EditingProperties: TcxCustomEditProperties read GetEditingProperties;
property EditList: TcxInplaceEditList read FEditList;
property EditPreparing: Boolean read FEditPreparing;
property EditUpdateNeeded: Boolean read FEditUpdateNeeded;
property HideEditOnExit: Boolean read GetHideEditOnExit;
property HideEditOnFocusedRecordChange: Boolean read GetHideEditOnFocusedRecordChange;
property InitiatingEditing: Boolean read FInitiatingEditing;
property IsEditPlaced: Boolean read FIsEditPlaced;
property IsErrorOnEditExit: Boolean read FIsErrorOnEditExit;
public
constructor Create(AController: TcxCustomGridTableController); virtual;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?