打印本文 打印本文 关闭窗口 关闭窗口
Delphi自带的SpinEdit控件太丑了,自己写一个替换它
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2777  更新时间:2009/4/23 18:30:38  文章录入:mintao  责任编辑:mintao
>

//  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;

上一页  [1] [2] [3] [4]  下一页

打印本文 打印本文 关闭窗口 关闭窗口