📄 skinboxctrls.pas
字号:
property OnStartDrag;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;
TspSkinCustomListBox = class;
TspListBox = class(TListBox)
protected
{$IFDEF VER130}
FAutoComplete: Boolean;
FLastTime: Cardinal;
FFilter: String;
{$ENDIF}
FHorizontalExtentValue: Integer;
procedure DrawTabbedString(S: String; TW: TStrings; C: TCanvas; R: TRect; Offset: Integer);
function GetState(AItemID: Integer): TOwnerDrawState;
procedure PaintBGWH(Cnvs: TCanvas; AW, AH, AX, AY: Integer);
procedure PaintBG(DC: HDC);
procedure PaintList(DC: HDC);
procedure PaintColumnsList(DC: HDC);
procedure CreateParams(var Params: TCreateParams); override;
procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
procedure WndProc(var Message: TMessage); override;
procedure DrawDefaultItem(Cnvs: TCanvas; itemID: Integer; rcItem: TRect;
State: TOwnerDrawState);
procedure DrawSkinItem(Cnvs: TCanvas; itemID: Integer; rcItem: TRect;
State: TOwnerDrawState);
procedure DrawStretchSkinItem(Cnvs: TCanvas; itemID: Integer; rcItem: TRect;
State: TOwnerDrawState);
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
procedure WMPaint(var Msg: TWMPaint); message WM_PAINT;
procedure WMNCCALCSIZE(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
procedure PaintWindow(DC: HDC); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure Click; override;
procedure CMEnter(var Message: TCMGotFocus); message CM_ENTER;
procedure CMExit(var Message: TCMGotFocus); message CM_EXIT;
procedure CreateWnd; override;
procedure CMSENCPaint(var Message: TMessage); message CM_SENCPAINT;
public
SkinListBox: TspSkinCustomListBox;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
property HorizontalExtentValue: Integer
read FHorizontalExtentValue
write FHorizontalExtentValue;
{$IFDEF VER130}
property AutoComplete: Boolean read FAutoComplete write FAutoComplete;
{$ENDIF}
end;
TspSkinCustomListBox = class(TspSkinCustomControl)
protected
FTabWidths: TStrings;
FUseSkinItemHeight: Boolean;
//
FHorizontalExtent: Boolean;
FStopUpDateHScrollBar: Boolean;
//
FRowCount: Integer;
FGlyph: TBitMap;
FNumGlyphs: TspSkinPanelNumGlyphs;
FSpacing: Integer;
FImages: TCustomImageList;
FImageIndex: Integer;
FOnUpButtonClick, FOnDownButtonClick, FOnCheckButtonClick: TNotifyEvent;
FDefaultItemHeight: Integer;
FDefaultCaptionHeight: Integer;
FDefaultCaptionFont: TFont;
FOnDrawItem: TspDrawSkinItemEvent;
NewClRect: TRect;
ListRect: TRect;
FCaptionMode: Boolean;
FAlignment: TAlignment;
Buttons: array[0..2] of TspCBButtonX;
OldActiveButton, ActiveButton, CaptureButton: Integer;
NewCaptionRect: TRect;
FOnListBoxClick: TNotifyEvent;
FOnListBoxDblClick: TNotifyEvent;
FOnListBoxMouseDown: TMouseEvent;
FOnListBoxMouseMove: TMouseMoveEvent;
FOnListBoxMouseUp: TMouseEvent;
FOnListBoxKeyDown: TKeyEvent;
FOnListBoxKeyPress: TKeyPressEvent;
FOnListBoxKeyUp: TKeyEvent;
TimerMode: Integer;
WaitMode: Boolean;
function GetOnListBoxDragDrop: TDragDropEvent;
procedure SetOnListBoxDragDrop(Value: TDragDropEvent);
function GetOnListBoxDragOver: TDragOverEvent;
procedure SetOnListBoxDragOver(Value: TDragOverEvent);
function GetOnListBoxStartDrag: TStartDragEvent;
procedure SetOnListBoxStartDrag(Value: TStartDragEvent);
function GetOnListBoxEndDrag: TEndDragEvent;
procedure SetOnListBoxEndDrag(Value: TEndDragEvent);
function GetListBoxDragMode: TDragMode;
procedure SetListBoxDragMode(Value: TDragMode);
function GetListBoxDragKind: TDragKind;
procedure SetListBoxDragKind(Value: TDragKind);
function GetListBoxDragCursor: TCursor;
procedure SetListBoxDragCursor(Value: TCursor);
function GetFullItemWidth(Index: Integer; ACnvs: TCanvas): Integer; virtual;
procedure SetHorizontalExtent(Value: Boolean);
function GetColumns: Integer;
procedure SetColumns(Value: Integer);
procedure SetRowCount(Value: Integer);
procedure SetImages(Value: TCustomImageList);
procedure SetImageIndex(Value: Integer);
procedure SetGlyph(Value: TBitMap);
procedure SetNumGlyphs(Value: TspSkinPanelNumGlyphs);
procedure SetSpacing(Value: Integer);
procedure StartTimer;
procedure StopTimer;
procedure ButtonDown(I: Integer; X, Y: Integer);
procedure ButtonUp(I: Integer; X, Y: Integer);
procedure ButtonEnter(I: Integer);
procedure ButtonLeave(I: Integer);
procedure DrawButton(Cnvs: TCanvas; i: Integer);
procedure TestActive(X, Y: Integer);
//
procedure ListBoxMouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); virtual;
procedure ListBoxMouseMove(Shift: TShiftState; X, Y: Integer); virtual;
procedure ListBoxMouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); virtual;
procedure ListBoxClick; virtual;
procedure ListBoxDblClick; virtual;
procedure ListBoxKeyDown(var Key: Word; Shift: TShiftState); virtual;
procedure ListBoxKeyUp(var Key: Word; Shift: TShiftState); virtual;
procedure ListBoxKeyPress(var Key: Char); virtual;
procedure ListBoxEnter; virtual;
procedure ListBoxExit; virtual;
//
procedure ShowScrollBar;
procedure HideScrollBar;
procedure ShowHScrollBar;
procedure HideHScrollBar;
procedure GetSkinData; override;
procedure CalcRects;
procedure SBChange(Sender: TObject);
procedure HSBChange(Sender: TObject);
procedure CreateParams(var Params: TCreateParams); override;
procedure WMSIZE(var Message: TWMSIZE); message WM_SIZE;
procedure WMTimer(var Message: TWMTimer); message WM_Timer;
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
//
procedure DefaultFontChange; override;
procedure OnDefaultCaptionFontChange(Sender: TObject);
procedure SetTabWidths(Value: TStrings);
procedure SetDefaultCaptionHeight(Value: Integer);
procedure SetDefaultCaptionFont(Value: TFont);
procedure SetDefaultItemHeight(Value: Integer);
procedure SetCaptionMode(Value: Boolean);
procedure SetAlignment(Value: TAlignment);
procedure SetItems(Value: TStrings);
function GetItems: TStrings;
function GetItemIndex: Integer;
procedure SetItemIndex(Value: Integer);
function GetMultiSelect: Boolean;
procedure SetMultiSelect(Value: Boolean);
function GetListBoxFont: TFont;
procedure SetListBoxFont(Value: TFont);
function GetListBoxTabOrder: TTabOrder;
procedure SetListBoxTabOrder(Value: TTabOrder);
function GetListBoxTabStop: Boolean;
procedure SetListBoxTabStop(Value: Boolean);
//
function GetCanvas: TCanvas;
function GetExtandedSelect: Boolean;
procedure SetExtandedSelect(Value: Boolean);
function GetSelCount: Integer;
function GetSelected(Index: Integer): Boolean;
procedure SetSelected(Index: Integer; Value: Boolean);
function GetSorted: Boolean;
procedure SetSorted(Value: Boolean);
function GetTopIndex: Integer;
procedure SetTopIndex(Value: Integer);
function GetListBoxPopupMenu: TPopupMenu;
procedure SetListBoxPopupMenu(Value: TPopupMenu);
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure CreateControlDefaultImage(B: TBitMap); override;
procedure CreateControlSkinImage(B: TBitMap); override;
procedure ListBoxWProc(var Message: TMessage; var Handled: Boolean); virtual;
procedure ListBoxCreateWnd; virtual;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
function GetAutoComplete: Boolean;
procedure SetAutoComplete(Value: Boolean);
public
ScrollBar: TspSkinScrollBar;
HScrollBar: TspSkinScrollBar;
ListBox: TspListBox;
FontName: String;
FontStyle: TFontStyles;
FontHeight: Integer;
SItemRect, ActiveItemRect, FocusItemRect: TRect;
ItemLeftOffset, ItemRightOffset: Integer;
ItemTextRect: TRect;
FontColor, ActiveFontColor, FocusFontColor: TColor;
CaptionRect: TRect;
CaptionFontName: String;
CaptionFontStyle: TFontStyles;
CaptionFontHeight: Integer;
CaptionFontColor: TColor;
UpButtonRect, ActiveUpButtonRect, DownUpButtonRect: TRect;
DownButtonRect, ActiveDownButtonRect, DownDownButtonRect: TRect;
CheckButtonRect, ActiveCheckButtonRect, DownCheckButtonRect: TRect;
VScrollBarName, HScrollBarName, BothScrollBarName: String;
ShowFocus: Boolean;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure ChangeSkinData; override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
procedure UpDateScrollBar;
function CalcHeight(AItemsCount: Integer): Integer;
//
procedure Clear;
function ItemAtPos(Pos: TPoint; Existing: Boolean): Integer;
function ItemRect(Item: Integer): TRect;
//
property Columns: Integer read GetColumns write SetColumns;
property Selected[Index: Integer]: Boolean read GetSelected write SetSelected;
property ListBoxCanvas: TCanvas read GetCanvas;
property SelCount: Integer read GetSelCount;
property TopIndex: Integer read GetTopIndex write SetTopIndex;
property UseSkinItemHeight: Boolean
read FUseSkinItemHeight write FUseSkinItemHeight;
//
property DefaultCaptionHeight: Integer
read FDefaultCaptionHeight write SetDefaultCaptionHeight;
property DefaultCaptionFont: TFont
read FDefaultCaptionFont write SetDefaultCaptionFont;
property CaptionMode: Boolean read FCaptionMode
write SetCaptionMode;
property Alignment: TAlignment read FAlignment write SetAlignment
default taLeftJustify;
property DefaultItemHeight: Integer read FDefaultItemHeight
write SetDefaultItemHeight;
property TabWidths: TStrings read FTabWidths write SetTabWidths;
property Items: TStrings read GetItems write SetItems;
property ItemIndex: Integer read GetItemIndex write SetItemIndex;
property MultiSelect: Boolean read GetMultiSelect write SetMultiSelect;
property ListBoxFont: TFont read GetListBoxFont write SetListBoxFont;
property ListBoxTabOrder: TTabOrder read GetListBoxTabOrder write SetListBoxTabOrder;
property ListBoxTabStop: Boolean read GetListBoxTabStop write SetListBoxTabStop;
property ExtandedSelect: Boolean read GetExtandedSelect write SetExtandedSelect;
property Sorted: boolean read GetSorted write SetSorted;
property ListBoxPopupMenu: TPopupMenu read GetListBoxPopupMenu write SetListBoxPopupMenu;
property HorizontalExtent: Boolean
read FHorizontalExtent
write SetHorizontalExtent;
property ListBoxDragMode: TDragMode read GetListBoxDragMode write SetListBoxDragMode;
property ListBoxDragKind: TDragKind read GetListBoxDragKind write SetListBoxDragKind;
property ListBoxDragCursor: TCursor read GetListBoxDragCursor write SetListBoxDragCursor;
property AutoComplete: Boolean read GetAutoComplete write SetAutoComplete;
property Caption;
property Font;
property Align;
property DockSite;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
property RowCount: Integer read FRowCount write SetRowCount;
property Images: TCustomImageList read FImages write SetImages;
property ImageIndex: Integer read FImageIndex write SetImageIndex;
property Glyph: TBitMap read FGlyph write SetGlyph;
property NumGlyphs: TspSkinPanelNumGlyphs read FNumGlyphs write SetNumGlyphs;
property Spacing: Integer read FSpacing write SetSpacing;
property OnClick;
property OnUpButtonClick: TNotifyEvent read FOnUpButtonClick
write FOnUpButtonClick;
property OnDownButtonClick: TNotifyEvent read FOnDownButtonClick
write FOnDownButtonClick;
property OnCheckButtonClick: TNotifyEvent read FOnCheckButtonClick
write FOnCheckButtonClick;
property OnCanResize;
property OnConstrainedResize;
property OnDockDrop;
property OnDockOver;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnGetSiteInfo;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -