亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi自帶的SpinEdit控件太丑了,自己寫一個替換它

2019-11-18 18:12:58
字體:
來源:轉載
供稿:網友
unit UpDownEdit;
interface
 
uses
  Windows, SysUtils, Classes, Controls, StdCtrls, ComCtrls, Messages;
 
type
  TUpDownEdit = class(TCustomControl)
  PRivate
    { Private declarations }
    UpDown: TUpDown;
    Edit: TEdit;
    FMin: Integer;
    FMax: Integer;
    FOnChange: TNotifyEvent;
    FPosition: Integer;
    procedure WMSize(var Msg: TWMSize); message wm_Size;
    procedure SetMax(const Value: Integer);
    procedure SetMin(const Value: Integer);
    procedure EditChange(Sender: TObject);
    procedure EditKeyPress(Sender: TObject; var Key: Char);
    procedure UpDownClick(Sender: TObject; Button: TUDBtnType);
    procedure SetPosition(const Value: Integer);
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property Max: Integer read FMax write SetMax;
    property Min: Integer read FMin write SetMin;
    property Position: Integer read FPosition write SetPosition;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
 
  end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
  RegisterComponents('Standard', [TUpDownEdit]);
end;
 
{ TUpDownEdit }
 
constructor TUpDownEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  SetBounds(0, 0, 57, 21);
  Edit := TEdit.Create(Self);
  Edit.Left := 0;
  Edit.Top := 0;
  Edit.Width := 40;
  Edit.Align := alLeft;
  Edit.Parent := self;
  Edit.Text := '0';
//  SetWindowLong(Edit.Handle, GWL_STYLE, GetWindowLong(Edit.Handle, GWL_STYLE) or ES_NUMBER);
 
  UpDown := TUpDown.Create(self);
  UpDown.Height := Height; //20;
  UpDown.Width := 14;
  UpDown.Left := Edit.Width + 1;
  UpDown.Parent := self;
  FMin := 0;
  FMax := 100;
 
  Edit.OnChange := EditChange;
  Edit.OnKeyPress := EditKeyPress;
  UpDown.OnClick := UpDownClick;
end;
 
destructor TUpDownEdit.Destroy;
begin
  Edit.Free;
  UpDown.Free;
  inherited;
end;
 
procedure TUpDownEdit.EditChange(Sender: TObject);
begin
  UpDown.Position := StrToIntDef(Edit.Text, 0);
  FPosition := UpDown.Position;
  if Assigned(FOnChange) then
    FOnChange(Self);
end;
 
procedure TUpDownEdit.EditKeyPress(Sender: TObject; var Key: Char);
var
  s: set of char;
  i: integer;
  Str, Text: string;
begin
  s := [#8, '0'..'9'];
  if Key = #8 then exit;
 
  if not (Key in s) then
  begin
    Key := #0;
    Exit;
  end;
 
//控制輸入數字的大小
  if TEdit(Sender).SelLength > 0 then
  begin
    Text := TEdit(Sender).Text;
    Str := Copy(Text, 1, TEdit(Sender).SelStart - 1)
      + Key +
      Copy(Text, TEdit(Sender).SelStart + TEdit(Sender).SelLength + 1, Length(Text));
    i := StrToInt(Str);
    if i > FMax then
    begin
      Key := #0;
      Exit;
    end;
  end
  else
    if StrToInt(TEdit(Sender).Text + Key) > FMax then
    begin
      Key := #0;
      Exit;
    end
    else
      if StrToInt(TEdit(Sender).Text + Key) < FMin then
      begin
        Key := #0;
        Exit;
      end;
 
 
 
end;
 
procedure TUpDownEdit.SetMax(const Value: Integer);
begin
  FMax := Value;
  UpDown.Max := FMax;
  if StrToIntDef(Edit.Text, 0) > FMax then
  begin
    UpDown.Position := FMax;
    Edit.Text := IntToStr(FMax);
    FPosition := UpDown.Position;
  end;
end;
 
procedure TUpDownEdit.SetMin(const Value: Integer);
begin
  FMin := Value;
  UpDown.Min := FMin;
  if StrToIntDef(Edit.Text, 0) < FMin then
  begin
    UpDown.Position := FMin;
    Edit.Text := IntToStr(FMin);
    FPosition := UpDown.Position;
    if Assigned(FOnChange) then
      FOnChange(Self);
  end;
end;
 
procedure TUpDownEdit.SetPosition(const Value: Integer);
begin
  if (Value >= FMin) or (Value <= FMax) then
  begin
    FPosition := Value;
    UpDown.Position := FPosition;
    Edit.Text := IntToStr(FPosition);
    if Assigned(FOnChange) then
      FOnChange(Self);
  end;
end;
 
procedure TUpDownEdit.UpDownClick(Sender: TObject; Button: TUDBtnType);
begin
  if Max = 0 then
  begin
    Max := 100;
    UpDown.Max := Max;
  end;
  UpDown.Min := Min;
  Edit.Text := IntToStr(UpDown.Position);
  Edit.SetFocus;
  Edit.SelectAll;
  if Assigned(FOnChange) then
    FOnChange(Self);
  FPosition := UpDown.Position;
end;
 
procedure TUpDownEdit.WMSize(var Msg: TWMSize);
begin
 
  Edit.Width := Width - 15;
  UpDown.Left := Edit.Width + 1;
  UpDown.Height := Height;
  inherited;
 
end;
 
end.

上一篇:Delphi中MIDAS是什么(MIDAS之一)

下一篇:Delphi中使用動態SQL的幾個問題

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91日韩在线视频| 大桥未久av一区二区三区| 欧美激情一级欧美精品| 国外成人在线直播| 日韩av色在线| 亚洲男人av在线| 日韩精品中文字幕有码专区| 亚洲女同性videos| 亚洲欧美一区二区三区久久| 久久精品青青大伊人av| 欧美最顶级的aⅴ艳星| 国产精品日韩欧美大师| 亚洲天堂av电影| 亚洲伊人久久大香线蕉av| 色婷婷av一区二区三区久久| 日韩精品丝袜在线| 色诱女教师一区二区三区| 26uuu另类亚洲欧美日本老年| 91精品国产99久久久久久| 欧洲成人免费aa| 国产午夜精品一区理论片飘花| 国产精品久久久久久久久久ktv| 91免费高清视频| 欧美激情喷水视频| 欧美日韩亚洲视频一区| 国产日韩欧美在线视频观看| 国产精品三级久久久久久电影| 色青青草原桃花久久综合| 欧美激情极品视频| 亚洲aa在线观看| 日韩av在线不卡| 国外日韩电影在线观看| 国产+成+人+亚洲欧洲| 成人美女av在线直播| 国内伊人久久久久久网站视频| 久久久久久18| 国产精品国产三级国产专播精品人| 美女999久久久精品视频| 亚洲欧美一区二区三区情侣bbw| 精品免费在线视频| 久久精品久久久久久国产 免费| 久久成年人免费电影| 亚洲free嫩bbb| 亚洲人永久免费| 精品一区二区三区四区| 国内精品久久久久伊人av| 精品中文字幕久久久久久| 国产香蕉97碰碰久久人人| 在线看片第一页欧美| 国产午夜精品美女视频明星a级| 日韩在线免费观看视频| 久久影院中文字幕| 国内伊人久久久久久网站视频| 色综合久久久久久中文网| 成人黄色中文字幕| 国产一区二区三区毛片| 久久国产精品久久久久久| 国产精品视频1区| 狠狠躁18三区二区一区| 日韩在线视频播放| 欧美精品电影在线| 亚洲成人久久久| 亚洲精品国精品久久99热| 91精品国产91久久久久久最新| 精品福利在线视频| 亚洲欧美自拍一区| 中文字幕精品www乱入免费视频| 亚洲jizzjizz日本少妇| 97视频在线看| 精品高清美女精品国产区| 97久久精品人人澡人人爽缅北| 7777精品久久久久久| 国产极品jizzhd欧美| 成人免费直播live| 国产精品黄页免费高清在线观看| 亚洲天堂第一页| 久久精品国产欧美激情| 一本色道久久88综合日韩精品| 亚洲欧美成人一区二区在线电影| 午夜精品一区二区三区在线视频| 一区二区在线免费视频| 中文字幕日韩欧美在线| 亚州成人av在线| 中文字幕免费国产精品| 中文字幕亚洲欧美日韩2019| 欧美午夜性色大片在线观看| 2019日本中文字幕| 欧美插天视频在线播放| 日韩亚洲第一页| 中文字幕欧美日韩va免费视频| 欧美另类精品xxxx孕妇| 欧美精品videos另类日本| 91av在线播放视频| 日韩电影在线观看永久视频免费网站| 欧美日韩在线影院| 欧美激情亚洲综合一区| 国产成人精品视频在线观看| 国产精品视频一区二区三区四| 成人免费观看49www在线观看| 奇米一区二区三区四区久久| 精品国产一区二区三区在线观看| 成人在线免费观看视视频| 成人情趣片在线观看免费| 精品露脸国产偷人在视频| 国产99在线|中文| 欧美天天综合色影久久精品| 91九色单男在线观看| 久久久久女教师免费一区| 国产精品国产亚洲伊人久久| 午夜美女久久久久爽久久| 亚洲精品在线视频| 欧美精品久久久久a| 国产精品尤物福利片在线观看| 日韩中文字幕精品视频| 日韩在线欧美在线| 亚洲国语精品自产拍在线观看| 91日韩在线视频| 日韩精品有码在线观看| 久久久久久有精品国产| 欧美—级高清免费播放| 国产精品观看在线亚洲人成网| 欧美在线一区二区三区四| 日本视频久久久| 国产精品久久一| 亚洲欧美成人一区二区在线电影| 亚洲精品免费av| 91亚洲国产成人精品性色| 久久久亚洲国产天美传媒修理工| 久久久久久久久久av| 7m精品福利视频导航| 亚洲天堂2020| 国产欧美一区二区白浆黑人| 国产精品久久久久久亚洲影视| 国产精品中文字幕在线观看| 成人a视频在线观看| 亚洲综合在线中文字幕| 98精品国产高清在线xxxx天堂| 在线观看亚洲视频| 91在线中文字幕| 久久精品2019中文字幕| 午夜精品一区二区三区在线视频| 国产激情久久久久| 亚洲国产毛片完整版| 欧美成人精品激情在线观看| 欧美电影免费在线观看| 日韩高清欧美高清| 国产亚洲视频在线观看| 77777少妇光屁股久久一区| 成人欧美一区二区三区黑人| 成人激情视频在线观看| 91极品视频在线| 2019中文字幕在线免费观看| 亚洲国产精品女人久久久| 亚洲精品之草原avav久久| 国产一区二区在线免费视频| 久久综合五月天| 色阁综合伊人av| 2019中文字幕在线| 国产欧美日韩视频| 91久久在线观看| 55夜色66夜色国产精品视频| 亚洲精品日韩av| 日本人成精品视频在线| xvideos国产精品|