cxlistview.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 2,127 行 · 第 1/5 页
PAS
2,127 行
{********************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressCommonLibrary }
{ }
{ Copyright (c) 1998-2008 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 EXPRESSCOMMONLIBRARY 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. }
{ }
{********************************************************************}
{$DEFINE USETCXSCROLLBAR}
unit cxListView;
{$I cxVer.inc}
interface
uses
Windows, Forms, Classes, ComCtrls, CommCtrl, Controls, ImgList, Menus,
Messages, StdCtrls, SysUtils, cxClasses, cxContainer, cxControls, cxCustomData,
cxExtEditConsts, cxGraphics, cxLookAndFeels, cxScrollBar, cxHeader;
type
TcxCustomListView = class;
{ TcxIconOptions }
TcxIconOptions = class(TPersistent)
private
FArrangement: TIconArrangement;
FAutoArrange: Boolean;
FWrapText: Boolean;
FArrangementChange: TNotifyEvent;
FAutoArrangeChange: TNotifyEvent;
FWrapTextChange: TNotifyEvent;
procedure SetArrangement(Value: TIconArrangement);
procedure SetAutoArrange(Value: Boolean);
procedure SetWrapText(Value: Boolean);
public
constructor Create(AOwner: TPersistent);
published
property Arrangement: TIconArrangement read FArrangement write SetArrangement default iaTop;
property AutoArrange: Boolean read FAutoArrange write SetAutoArrange default False;
property WrapText: Boolean read FWrapText write SetWrapText default True;
end;
{ TcxCustomInnerListView }
TcxCustomInnerListView = class(TListView, IUnknown,
IcxContainerInnerControl)
private
FCanvas: TcxCanvas;
FDefHeaderProc: Pointer;
FHeaderHandle: HWND;
FHeaderInstance: Pointer;
FOldHint: string;
FOldItem: TListItem;
FPressedHeaderItemIndex: Integer;
function GetHeaderHotItemIndex: Integer;
function GetHeaderItemRect(AItemIndex: Integer): TRect;
function GetHeaderPressedItemIndex: Integer;
function HeaderItemIndex(AHeaderItem: Integer): Integer;
procedure HeaderWndProc(var Message: TMessage);
procedure HScrollHandler(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure VScrollHandler(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
procedure WMKillFocus(var Message: TWMKillFocus); message WM_KILLFOCUS;
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
procedure WMNCPaint(var Message: TWMNCPaint); message WM_NCPAINT;
procedure WMNotify(var Message: TWMNotify); message WM_NOTIFY;
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED;
procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
procedure LVMGetHeaderItemInfo(var Message: TCMHeaderItemInfo); message CM_GETHEADERITEMINFO;
function GetContainer: TcxCustomListView;
function GetControl: TWinControl;
function GetControlContainer: TcxContainer;
protected
FContainer: TcxCustomListView;
procedure Click; override;
procedure DblClick; override;
procedure Loaded; override;
function CanEdit(Item: TListItem): Boolean; override;
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint): Boolean; override;
procedure DoStartDock(var DragObject: TDragObject); override;
procedure DragOver(Source: TObject; X, Y: Integer; State: TDragState;
var Accept: Boolean); override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
procedure WndProc(var Message: TMessage); override;
procedure DoCancelEdit; virtual;
procedure LookAndFeelChanged(Sender: TcxLookAndFeel;
AChangedValues: TcxLookAndFeelValues); virtual;
procedure MouseEnter(AControl: TControl); dynamic;
procedure MouseLeave(AControl: TControl); dynamic;
procedure DrawHeader; virtual;
property Container: TcxCustomListView read GetContainer;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure DefaultHandler(var Message); override;
procedure DragDrop(Source: TObject; X, Y: Integer); override;
property Canvas: TcxCanvas read FCanvas;
function CanFocus: Boolean; override;
{$IFDEF DELPHI6}
procedure DeleteSelected; override;
{$ENDIF}
end;
TcxCustomInnerListViewClass = class of TcxCustomInnerListView;
{ TcxCustomListView }
TcxCustomListView = class(TcxContainer)
private
FInnerListView: TcxCustomInnerListView;
FIconOptions: TcxIconOptions;
FOnCancelEdit: TNotifyEvent;
FOwnerDraw: Boolean;
function GetReadOnly: Boolean;
function GetListItems: TListItems;
function GetListColumns: TListColumns;
function GetListViewCanvas: TcxCanvas;
function GetColumnClick: Boolean;
function GetHideSelection: Boolean;
function GetIconOptions: TcxIconOptions;
function GetAllocBy: Integer;
function GetHoverTime: Integer;
function GetLargeImages: TCustomImageList;
function GetMultiSelect: Boolean;
function GetOwnerData: Boolean;
function GetOwnerDraw: Boolean;
function GetOnAdvancedCustomDraw: TLVAdvancedCustomDrawEvent;
function GetOnAdvancedCustomDrawItem: TLVAdvancedCustomDrawItemEvent;
function GetOnAdvancedCustomDrawSubItem: TLVAdvancedCustomDrawSubItemEvent;
function GetOnChange: TLVChangeEvent;
function GetOnChanging: TLVChangingEvent;
function GetOnColumnClick: TLVColumnClickEvent;
function GetOnColumnDragged: TNotifyEvent;
function GetOnColumnRightClick: TLVColumnRClickEvent;
function GetOnCompare: TLVCompareEvent;
function GetOnCustomDraw: TLVCustomDrawEvent;
function GetOnCustomDrawItem: TLVCustomDrawItemEvent;
function GetOnCustomDrawSubItem: TLVCustomDrawSubItemEvent;
function GetOnData: TLVOwnerDataEvent;
function GetOnDataFind: TLVOwnerDataFindEvent;
function GetOnDataHint: TLVOwnerDataHintEvent;
function GetOnDataStateChange: TLVOwnerDataStateChangeEvent;
function GetOnDeletion: TLVDeletedEvent;
function GetOnDrawItem: TLVDrawItemEvent;
function GetOnEdited: TLVEditedEvent;
function GetOnEditing: TLVEditingEvent;
function GetOnInfoTip: TLVInfoTipEvent;
function GetOnInsert: TLVDeletedEvent;
function GetOnGetImageIndex: TLVNotifyEvent;
function GetOnGetSubItemImage: TLVSubItemImageEvent;
function GetShowWorkAreas: Boolean;
function GetOnSelectItem: TLVSelectItemEvent;
function GetShowColumnHeaders: Boolean;
function GetSmallImages: TCustomImageList;
function GetSortType: TSortType;
function GetStateImages: TCustomImageList;
function GetViewStyle: TViewStyle;
{$IFDEF DELPHI6}
function GetOnCreateItemClass: TLVCreateItemClassEvent;
{$ENDIF}
procedure SetReadOnly(Value: Boolean);
procedure SetListItems(Value: TListItems);
procedure SetListColumns(Value: TListColumns);
procedure SetColumnClick(Value: Boolean);
procedure SetHideSelection(Value: Boolean);
procedure SetIconOptions(Value: TcxIconOptions);
procedure SetAllocBy(Value: Integer);
procedure SetHoverTime(Value: Integer);
procedure SetLargeImages(Value: TCustomImageList);
procedure SetMultiSelect(Value: Boolean);
procedure SetOwnerData(Value: Boolean);
procedure SetOwnerDraw(Value: Boolean);
procedure SetOnAdvancedCustomDraw(Value: TLVAdvancedCustomDrawEvent);
procedure SetOnAdvancedCustomDrawItem(Value: TLVAdvancedCustomDrawItemEvent);
procedure SetOnAdvancedCustomDrawSubItem(Value: TLVAdvancedCustomDrawSubItemEvent);
procedure SetOnChange(Value: TLVChangeEvent);
procedure SetOnChanging(Value: TLVChangingEvent);
procedure SetOnColumnClick(Value: TLVColumnClickEvent);
procedure SetOnColumnDragged(Value: TNotifyEvent);
procedure SetOnColumnRightClick(Value: TLVColumnRClickEvent);
procedure SetOnCompare(Value: TLVCompareEvent);
procedure SetOnCustomDraw(Value: TLVCustomDrawEvent);
procedure SetOnCustomDrawItem(Value: TLVCustomDrawItemEvent);
procedure SetOnCustomDrawSubItem(Value: TLVCustomDrawSubItemEvent);
procedure SetOnData(Value: TLVOwnerDataEvent);
procedure SetOnDataFind(Value: TLVOwnerDataFindEvent);
procedure SetOnDataHint(Value: TLVOwnerDataHintEvent);
procedure SetOnDataStateChange(Value: TLVOwnerDataStateChangeEvent);
procedure SetOnDeletion(Value: TLVDeletedEvent);
procedure SetOnDrawItem(Value: TLVDrawItemEvent);
procedure SetOnEdited(Value: TLVEditedEvent);
procedure SetOnEditing(Value: TLVEditingEvent);
procedure SetOnInfoTip(Value: TLVInfoTipEvent);
procedure SetOnInsert(Value: TLVDeletedEvent);
procedure SetOnGetImageIndex(Value: TLVNotifyEvent);
procedure SetOnGetSubItemImage(Value: TLVSubItemImageEvent);
procedure SetShowWorkAreas(Value: Boolean);
procedure SetOnSelectItem(Value: TLVSelectItemEvent);
procedure SetShowColumnHeaders(Value: Boolean);
procedure SetSmallImages(Value: TCustomImageList);
procedure SetSortType(Value: TSortType);
procedure SetStateImages(Value: TCustomImageList);
{$IFDEF DELPHI6}
procedure SetOnCreateItemClass(Value: TLVCreateItemClassEvent);
{$ENDIF}
function GetCheckBoxes: Boolean;
function GetColumnFromIndex(Index: Integer): TListColumn;
function GetDropTarget: TListItem;
function GetFullDrag: Boolean;
function GetGridLines: Boolean;
function GetHotTrack: Boolean;
function GetHotTrackStyles: TListHotTrackStyles;
function GetItemFocused: TListItem;
function GetRowSelect: Boolean;
function GetSelCount: Integer;
function GetSelected: TListItem;
function GetTopItem: TListItem;
function GetViewOrigin: TPoint;
function GetVisibleRowCount: Integer;
function GetBoundingRect: TRect;
function GetWorkAreas: TWorkAreas;
procedure SetCheckboxes(Value: Boolean);
procedure SetDropTarget(Value: TListItem);
procedure SetFullDrag(Value: Boolean);
procedure SetGridLines(Value: Boolean);
procedure SetHotTrack(Value: Boolean);
procedure SetHotTrackStyles(Value: TListHotTrackStyles);
procedure SetItemFocused(Value: TListItem);
procedure SetRowSelect(Value: Boolean);
procedure SetSelected(Value: TListItem);
procedure ArrangementChangeHandler(Sender: TObject);
procedure AutoArrangeChangeHandler(Sender: TObject);
procedure WrapTextChangeHandler(Sender: TObject);
procedure UpdateIconOptions;
protected
procedure DoExit; override;
procedure FontChanged; override;
function IsReadOnly: Boolean; override;
procedure Loaded; override;
procedure LookAndFeelChanged(Sender: TcxLookAndFeel;
AChangedValues: TcxLookAndFeelValues); override;
function NeedsScrollBars: Boolean; override;
procedure Scroll(AScrollBarKind: TScrollBarKind; AScrollCode: TScrollCode;
var AScrollPos: Integer); override;
procedure WriteState(Writer: TWriter); override;
class function GetListViewClass: TcxCustomInnerListViewClass; virtual;
function CanChange(Item: TListItem; Change: Integer): Boolean;
function CanEdit(Item: TListItem): Boolean;
procedure ChangeScale(M, D: Integer); override;
function ColumnsShowing: Boolean;
function GetCount: Integer;
{$IFDEF DELPHI6}
function GetItemIndex: Integer; overload;
function GetListViewItemIndex: Integer;
procedure SetItemIndex(Value: Integer);
{$ENDIF}
function GetItemIndex(Value: TListItem): Integer; overload;
procedure SetViewStyle(Value: TViewStyle); virtual;
procedure UpdateColumn(AnIndex: Integer);
procedure UpdateColumns;
property Columns: TListColumns read GetListColumns write SetListColumns;
property ColumnClick: Boolean read GetColumnClick write SetColumnClick default True;
property HideSelection: Boolean read GetHideSelection write SetHideSelection default True;
property IconOptions: TcxIconOptions read GetIconOptions write SetIconOptions;
property Items: TListItems read GetListItems write SetListItems;
property AllocBy: Integer read GetAllocBy write SetAllocBy default 0;
property HoverTime: Integer read GetHoverTime write SetHoverTime default -1;
property ListViewCanvas: TcxCanvas read GetListViewCanvas;
property LargeImages: TCustomImageList read GetLargeImages write SetLargeImages;
property MultiSelect: Boolean read GetMultiSelect write SetMultiSelect default False;
property ReadOnly: Boolean read GetReadOnly write SetReadOnly default False;
property OwnerData: Boolean read GetOwnerData write SetOwnerData default False;
property OwnerDraw: Boolean read GetOwnerDraw write SetOwnerDraw default False;
property RowSelect: Boolean read GetRowSelect write SetRowSelect default False;
property ShowColumnHeaders: Boolean read GetShowColumnHeaders
write SetShowColumnHeaders default True;
property ShowWorkAreas: Boolean read GetShowWorkAreas write SetShowWorkAreas default False;
property SmallImages: TCustomImageList read GetSmallImages write SetSmallImages;
property SortType: TSortType read GetSortType write SetSortType default stNone;
property StateImages: TCustomImageList read GetStateImages write SetStateImages;
property ViewStyle: TViewStyle read GetViewStyle write SetViewStyle default vsIcon;
property OnAdvancedCustomDraw: TLVAdvancedCustomDrawEvent read GetOnAdvancedCustomDraw
write SetOnAdvancedCustomDraw;
property OnAdvancedCustomDrawItem: TLVAdvancedCustomDrawItemEvent
read GetOnAdvancedCustomDrawItem write SetOnAdvancedCustomDrawItem;
property OnAdvancedCustomDrawSubItem: TLVAdvancedCustomDrawSubItemEvent
read GetOnAdvancedCustomDrawSubItem write SetOnAdvancedCustomDrawSubItem;
property OnCancelEdit: TNotifyEvent read FOnCancelEdit write FOnCancelEdit;
property OnChange: TLVChangeEvent read GetOnChange write SetOnChange;
property OnChanging: TLVChangingEvent read GetOnChanging write SetOnChanging;
property OnColumnClick: TLVColumnClickEvent read GetOnColumnClick write SetOnColumnClick;
property OnColumnDragged: TNotifyEvent read GetOnColumnDragged write SetOnColumnDragged;
property OnColumnRightClick: TLVColumnRClickEvent read GetOnColumnRightClick
write SetOnColumnRightClick;
property OnCompare: TLVCompareEvent read GetOnCompare write SetOnCompare;
property OnCustomDraw: TLVCustomDrawEvent read GetOnCustomDraw write SetOnCustomDraw;
property OnCustomDrawItem: TLVCustomDrawItemEvent read GetOnCustomDrawItem
write SetOnCustomDrawItem;
property OnCustomDrawSubItem: TLVCustomDrawSubItemEvent read GetOnCustomDrawSubItem
write SetOnCustomDrawSubItem;
property OnData: TLVOwnerDataEvent read GetOnData write SetOnData;
property OnDataFind: TLVOwnerDataFindEvent read GetOnDataFind write SetOnDataFind;
property OnDataHint: TLVOwnerDataHintEvent read GetOnDataHint write SetOnDataHint;
property OnDataStateChange: TLVOwnerDataStateChangeEvent read GetOnDataStateChange
write SetOnDataStateChange;
property OnDeletion: TLVDeletedEvent read GetOnDeletion write SetOnDeletion;
property OnDrawItem: TLVDrawItemEvent read GetOnDrawItem write SetOnDrawItem;
property OnEdited: TLVEditedEvent read GetOnEdited write SetOnEdited;
property OnEditing: TLVEditingEvent read GetOnEditing write SetOnEditing;
property OnInfoTip: TLVInfoTipEvent read GetOnInfoTip write SetOnInfoTip;
property OnInsert: TLVDeletedEvent read GetOnInsert write SetOnInsert;
property OnGetImageIndex: TLVNotifyEvent read GetOnGetImageIndex write SetOnGetImageIndex;
property OnGetSubItemImage: TLVSubItemImageEvent read GetOnGetSubItemImage
write SetOnGetSubItemImage;
property OnSelectItem: TLVSelectItemEvent read GetOnSelectItem write SetOnSelectItem;
{$IFDEF DELPHI6}
property OnCreateItemClass: TLVCreateItemClassEvent read GetOnCreateItemClass
write SetOnCreateItemClass;
{$ENDIF}
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property InnerListView: TcxCustomInnerListView read FInnerListView;
function AlphaSort: Boolean;
procedure Arrange(Code: TListArrangement);
procedure Clear;
{$IFDEF DELPHI6}
procedure ClearSelection;
procedure AddItem(Item: string; AObject: TObject);
procedure CopySelection(Destination: TCustomListControl);
procedure DeleteSelected;
procedure SelectAll;
{$ENDIF}
function FindCaption(StartIndex: Integer; Value: string;
Partial, Inclusive, Wrap: Boolean): TListItem;
function FindData(StartIndex: Integer; Value: Pointer;
Inclusive, Wrap: Boolean): TListItem;
function GetHitTestInfoAt(X, Y: Integer): THitTests;
function GetItemAt(X, Y: Integer): TListItem;
function GetNearestItem(Point: TPoint;
Direction: TSearchDirection): TListItem;
function GetNextItem(StartItem: TListItem;
Direction: TSearchDirection; States: TItemStates): TListItem;
function GetSearchString: string;
function IsEditing: Boolean;
function CustomSort(SortProc: TLVCompare; lParam: Longint): Boolean;
function StringWidth(S: string): Integer;
procedure UpdateItems(FirstIndex, LastIndex: Integer);
property Checkboxes: Boolean read GetCheckBoxes write SetCheckboxes default False;
property Column[Index: Integer]: TListColumn read GetColumnFromIndex;
property DropTarget: TListItem read GetDropTarget write SetDropTarget;
property FullDrag: Boolean read GetFullDrag write SetFullDrag default False;
property GridLines: Boolean read GetGridLines write SetGridLines default False;
property HotTrack: Boolean read GetHotTrack write SetHotTrack default False;
property HotTrackStyles: TListHotTrackStyles read GetHotTrackStyles write SetHotTrackStyles default [];
property ItemFocused: TListItem read GetItemFocused write SetItemFocused;
{$IFDEF DELPHI6}
property ItemIndex: Integer read GetListViewItemIndex write SetItemIndex
default -1;
{$ENDIF}
property SelCount: Integer read GetSelCount;
property Selected: TListItem read GetSelected write SetSelected;
property TopItem: TListItem read GetTopItem;
property ViewOrigin: TPoint read GetViewOrigin;
property VisibleRowCount: Integer read GetVisibleRowCount;
property BoundingRect: TRect read GetBoundingRect;
property WorkAreas: TWorkAreas read GetWorkAreas;
end;
{ TcxListView }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?