abtnedit.pas
来自「delphi编程控件」· PAS 代码 · 共 253 行
PAS
253 行
unit abtnedit;
(*
COPYRIGHT (c) RSD Software 1997 - 98
All Rights Reserved.
*)
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Mask, Buttons, DBCtrls;
type
TAutoBtnEdit = class(TMaskEdit)
private
FBitBtn : TBitBtn;
FOnBtnClick : TNotifyEvent;
function GetBtnTabStop : boolean;
procedure SetBtnTabStop(Value : boolean);
function GetGlyph : TBitmap;
procedure SetGlyph(Value : TBitmap);
function GetNumGlyphs : integer;
procedure SetNumGlyphs(Value : integer);
procedure SetEditRect;
procedure WMSize(var Message: TWMSize); message WM_SIZE;
protected
procedure CreateWnd; override;
procedure DoButtonClick(Sender: TObject);
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
procedure CreateParams(var Params: TCreateParams ); override;
published
property BtnTabStop : Boolean read GetBtnTabStop write SetBtnTabStop default False;
property Glyph : TBitmap read GetGlyph write SetGlyph;
property NumGlyphs : integer read GetNumGlyphs write SetNumGlyphs default 2;
property OnBtnClick : TNotifyEvent read FOnBtnClick write FOnBtnClick;
end;
TAutoDBBtnEdit = class(TDBEdit)
private
FBitBtn : TBitBtn;
FOnBtnClick : TNotifyEvent;
function GetBtnTabStop : boolean;
procedure SetBtnTabStop(Value : boolean);
function GetGlyph : TBitmap;
procedure SetGlyph(Value : TBitmap);
function GetNumGlyphs : integer;
procedure SetNumGlyphs(Value : integer);
procedure SetEditRect;
procedure WMSize(var Message: TWMSize); message WM_SIZE;
protected
procedure CreateWnd; override;
procedure DoButtonClick(Sender: TObject);
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
procedure CreateParams(var Params: TCreateParams ); override;
published
property BtnTabStop : Boolean read GetBtnTabStop write SetBtnTabStop default False;
property Glyph : TBitmap read GetGlyph write SetGlyph;
property NumGlyphs : integer read GetNumGlyphs write SetNumGlyphs default 2;
property OnBtnClick : TNotifyEvent read FOnBtnClick write FOnBtnClick;
end;
implementation
{TAutoBtnEdit}
constructor TAutoBtnEdit.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
FBitBtn := TBitBtn.Create(self);
FBitBtn.Parent := self;
FBitBtn.Top := 0;
FBitBtn.OnClick := DoButtonClick;
FBitBtn.NumGlyphs := 2;
FBitBtn.TabStop := False;
end;
destructor TAutoBtnEdit.Destroy;
begin
FBitBtn.Free;
inherited Destroy;
end;
procedure TAutoBtnEdit.CreateParams( var Params: TCreateParams );
begin
inherited CreateParams(Params);
Params.Style := Params.Style or WS_CLIPCHILDREN or ES_MULTILINE;
end;
procedure TAutoBtnEdit.CreateWnd;
begin
inherited CreateWnd;
SetEditRect;
end;
function TAutoBtnEdit.GetBtnTabStop : boolean;
begin
Result := FBitBtn.TabStop;
end;
procedure TAutoBtnEdit.SetBtnTabStop(Value : boolean);
begin
FBitBtn.TabStop := Value;
end;
function TAutoBtnEdit.GetGlyph : TBitmap;
begin
Result := FBitBtn.Glyph;
end;
procedure TAutoBtnEdit.SetGlyph(Value : TBitmap);
begin
FBitBtn.Glyph.Assign(Value);
end;
function TAutoBtnEdit.GetNumGlyphs : integer;
begin
Result := FBitBtn.NumGlyphs;
end;
procedure TAutoBtnEdit.SetNumGlyphs(Value : integer);
begin
FBitBtn.NumGlyphs := Value;
end;
procedure TAutoBtnEdit.SetEditRect;
var
R : TRect;
begin
R := ClientRect;
R.Right := FBitBtn.Left - 1;
SendMessage(Handle, EM_SETRECTNP, 0, LongInt(@R));
SendMessage(Handle, EM_SCROLLCARET, 0, 0);
end;
procedure TAutoBtnEdit.WMSize(var Message: TWMSize);
begin
with FBitBtn do begin
Height := self.Height - 3;
Width := Height;
Left := self.Width - Width - 3;
end;
SetEditRect;
end;
procedure TAutoBtnEdit.DoButtonClick(Sender: TObject);
begin
if(Assigned(FOnBtnClick)) then
FOnBtnClick(self);
end;
{TAutoDBBtnEdit}
constructor TAutoDBBtnEdit.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
FBitBtn := TBitBtn.Create(self);
FBitBtn.Parent := self;
FBitBtn.Top := 0;
FBitBtn.OnClick := DoButtonClick;
FBitBtn.NumGlyphs := 2;
FBitBtn.TabStop := False;
end;
destructor TAutoDBBtnEdit.Destroy;
begin
FBitBtn.Free;
inherited Destroy;
end;
procedure TAutoDBBtnEdit.CreateParams( var Params: TCreateParams );
begin
inherited CreateParams(Params);
Params.Style := Params.Style or WS_CLIPCHILDREN or ES_MULTILINE;
end;
procedure TAutoDBBtnEdit.CreateWnd;
begin
inherited CreateWnd;
SetEditRect;
end;
function TAutoDBBtnEdit.GetBtnTabStop : boolean;
begin
Result := FBitBtn.TabStop;
end;
procedure TAutoDBBtnEdit.SetBtnTabStop(Value : boolean);
begin
FBitBtn.TabStop := Value;
end;
function TAutoDBBtnEdit.GetGlyph : TBitmap;
begin
Result := FBitBtn.Glyph;
end;
procedure TAutoDBBtnEdit.SetGlyph(Value : TBitmap);
begin
FBitBtn.Glyph.Assign(Value);
end;
function TAutoDBBtnEdit.GetNumGlyphs : integer;
begin
Result := FBitBtn.NumGlyphs;
end;
procedure TAutoDBBtnEdit.SetNumGlyphs(Value : integer);
begin
FBitBtn.NumGlyphs := Value;
end;
procedure TAutoDBBtnEdit.SetEditRect;
var
R : TRect;
begin
R := ClientRect;
R.Right := FBitBtn.Left - 1;
SendMessage(Handle, EM_SETRECTNP, 0, LongInt(@R));
SendMessage(Handle, EM_SCROLLCARET, 0, 0);
end;
procedure TAutoDBBtnEdit.WMSize(var Message: TWMSize);
begin
with FBitBtn do begin
Height := self.Height - 3;
Width := Height;
Left := self.Width - Width - 3;
end;
SetEditRect;
end;
procedure TAutoDBBtnEdit.DoButtonClick(Sender: TObject);
begin
if(Assigned(FOnBtnClick)) then
FOnBtnClick(self);
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?