delphi IDE里面的导航条太丑了,咱自己写一个

效果图:

 

 嗯我们今天主要看下面这一部分的实现:

四个按钮是TscGPCharGlyphButton控件。上面一行显示记录位置和快速跳转的那一坨,它其实是由四个TscGPEdit控件拼接构成的。 红色括号3那里,其实是把边设置成了红色,而4这个则是设置边框不显示.然后两个控件高度一致,但要比最外面的1小一点,恰好把外层的边框漏出来.而2这里,也是一个无边框的TscGPEdit.这里为什么是这一坨?因为我不会设置TscGPEdit只显示右边框或者左边框.还有,TscGPEdit的内边距我不会设置.所以才有了2

以下是实现代码:

procedure TFrmChangeGYS.FormShow(Sender: TObject);
begin
  Res := dm.FDQGYS.RecordCount;//全局变量
  NavClick(5);   //初始化导航条 ,这里参数5表示不执行导航任务.因为最高只到3
  scGPEdit1.Clear;
end;

procedure TFrmChangeGYS.NavClick(const i: integer);    //每次点击事件都要执行一次
begin
  with dm.FDQGYS do
  begin
    case i of
      0:
        First;
      1:
        Prior;
      2:
        next;
      3:
        Last;
    end;
    if Res = 1 then
      SetNavState(False, False, False, False)
    else if RecNo = 1 then
      SetNavState(False, False, True, True)
    else if RecNo = Res then
      SetNavState(True, True, False, False)
    else
      SetNavState(True, True, True, True);

    if IsDisabled.Tag = 0 then
      BtnAllow.Down := True
    else
      BtnNotAllow.Down := True;
     //显示当前数据的位置
    EditPosition.Text := recno.ToString + ' / ' + Res.ToString;
  end;
end;
procedure TFrmChangeGYS.SetNavState(const F, P, N, L: Boolean);  //设置导航打状态
begin
  BtnFrist.Enabled := F;
  BtnPrevious.Enabled := P;
  BtnNext.Enabled := N;
  BtnLast.Enabled := L;
end;

然后是四个按钮的共用代码:

procedure TFrmChangeGYS.BtnFristClick(Sender: TObject);
begin
  NavClick(TscGPButton(Sender).Tag);//按钮的TAG属性分别设置了从0-3
end;

最后是限制2那里的输入只能是整数

procedure TFrmChangeGYS.scGPEdit1KeyDown(Sender: TObject; var Key: Word; Shift:
  TShiftState);
var
  Value: Integer;
begin
  if not (Char(Key) in ['0'..'9', AnsiChar(#8), AnsiChar(#13)]) then // 只允许输入数字和退格键
    Key := 0;
  if Char(Key) = #13 then
    EditToPositionRightButtonClick(Sender);
end;
procedure TFrmChangeGYS.EditToPositionRightButtonClick(Sender: TObject);
begin
  var i := StrToInt(scGPEdit1.Text);
  if i < 1 then
    i := 1
  else if i > Res then
    i := res;
  scGPEdit1.Clear;
  dm.FDQGYS.RecNo := i;
  NavClick(5); //更新按钮状态
end;

 

posted @ 2023-04-21 23:37  一曲轻扬  阅读(504)  评论(0)    收藏  举报