📄 mycombobox.pas
字号:
unit MyComboBox;
interface
uses
SysUtils, Classes, windows,Controls, StdCtrls,messages;
type
TMyComboBox = class(TCustomComboBox)
private
{ Private declarations }
protected
procedure KeyPress(var Message: TWMChar); message WM_Char;
{ Protected declarations }
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
{ Public declarations }
published
property AutoComplete default True;
property AutoDropDown default False;
property AutoCloseUp default False;
property BevelEdges;
property BevelInner;
property BevelKind default bkNone;
property BevelOuter;
property Style; {Must be published before Items}
property Anchors;
property BiDiMode;
property CharCase;
property Color;
property Constraints;
property Ctl3D;
property DragCursor;
property DragKind;
property DragMode;
property DropDownCount;
property Enabled;
property Font;
property ImeMode;
property ImeName;
property ItemHeight;
property ItemIndex default -1;
property MaxLength;
property ParentBiDiMode;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property Sorted;
property TabOrder;
property TabStop;
property Text;
property Visible;
property OnChange;
property OnClick;
property OnCloseUp;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnDrawItem;
property OnDropDown;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMeasureItem;
property OnSelect;
property OnStartDock;
property OnStartDrag;
property Items; { Must be published after OnMeasureItem }
{ Published declarations }
end;
procedure Register;
implementation
constructor TmyComboBox.Create(AOwner: TComponent);
begin
inherited Create(Aowner);
end;
procedure TmyComboBox.KeyPress(var Message: TWMChar);
var
ItemNum:Integer;
s:char;
savetext:string;
begin
self.DropDown;
itemNum:=-1;
//inherited;
ItemNum:=sendmessage(ListHandle,CB_FINDSTRING,-1,integer(Text));
sendmessage(listhandle,CB_SETTOPINDEX,Wparam(ItemNum),0);
savetext:=self.Items.Strings[itemNum];
s:=char(message.KeyData);
if (char(message.KeyData) = #13) then
begin
SendMessage(Handle, CB_SETCURSEL, ItemNum, 0);
end;
self.Text:=savetext;
self.Update;
onkeypress(self,s);
end;
destructor Tmycombobox.Destroy;
begin
inherited Destroy;
end;
procedure Register;
begin
RegisterComponents('Terry', [TMyComboBox]);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -