首页 > 其他分享 >delphi IDE里面的导航条太丑了,咱自己写一个

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

时间:2023-04-21 23:46:07浏览次数:38  
标签:begin False Sender delphi 太丑 TFrmChangeGYS 导航条 end True

效果图:

 

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

四个按钮是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;

 

标签:begin,False,Sender,delphi,太丑,TFrmChangeGYS,导航条,end,True
From: https://www.cnblogs.com/yoooos/p/17342226.html

相关文章

  • Delphi 获得文件大小的方法
    Delphi获得文件大小的方法大概有这些:FileSizeByName(需要引用IdGlobal单元,XE版本已取消) GetFileSize (useWindows,仅支持windows)FileSize(不能获得正在使用的文件大小) FileSeek TFileStream.Size 1、FileSizeByName(需要引用IdGlobal单元,XE版本已......
  • 使用导航条时,第一次能正常的打开页面,但是访问其他页面后就全部页面都访问不了,状态码30
     直接访问正常, 访问其他页面时其他页面显示不出来问题在于我设置了两个同级的div,div没有设置id以及class,我把两个div合并成一个之后就解决了问题 如图是解决前 以下是解决后,正常显示的情况说实话这问题的解决方法也确实蛮奇怪的,找到这个问题是因为另一端代码是搬运......
  • delphi的public 与 published
    published如果属性含有下标,会不能编译通过,而public则是可以的.属性要声明在published中,才可以显示到属性察看器中,这个是published的最大用途,published一般用于组件编程中,而不常用于应用程序中.Publishedmembershavethesamevisibilityaspublic......
  • Delphi的字节对齐和简单string结构
    procedureTForm1.Button1Click(Sender:TObject);typeTTest=recordsAccount:string[31];//如果不加Packed30和31是相同的大小虽然是相同的,如果网络编程,传递后转换,Delphi是识别不出来的,会出现越界问题。sChrName:string[15];sUserAddr:string[15];nSessionID:......
  • Delphi类里面的方法和类型定义不影响创建实例的大小
    unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;typeTForm1=class(TForm)Button1:TButton;procedureButton1Click(Sender:TObject);private{Privatedeclarations}public{Pub......
  • delphi FastReport 从流(数据库)中加载和保存报表
    FastReport从流(数据库)中加载和保存报表属性和方法TfrxReport.LoadFromStreamprocedureLoadFromStream(Stream:TStream);从流中加载报表。参数Stream来源流。TfrxReport.SaveToStreamprocedureSaveToStream(Stream:TStream);将报表保存到流中。参数Stream来源......
  • Delphi FDMemTable内存表用法及简单操作函数封装(转)
    在某些场景下当轻量级的应用需要在内存中缓存数量比较多且字段比较多的高频使用数据时。以前我都是采用Ini或直接使用sqlite数据库。JSON也试过基本无法或很难实现需要的功能,因为当涉及某一同类型对象多字段多列时不通过遍历基本无法直接取到或修改数据。这样就导致了效率的低下。......
  • delphi 播放GIF动画
    useGIFImgprocedureTForm1.Button1Click(Sender:TObject);varpic_path:string;beginpic_path:=ExtractFilePath(ParamStr(0))+'img\gif\loading.gif';image1.Picture.LoadFromFile(pic_path);//AnimationSpeed设定动画速度,值越大,速度越快TGIFImage(......
  • delphi 函数提示与注释
    效果是在IDE里输入函数名称后,在下方出现你对这个函数的注释内容:  源码:  参考地址:https://docwiki.embarcadero.com/RADStudio/Sydney/en/XML_Documentation_Comments以上内来源:Delphi研习社②群@球球......
  • delphi 如何给自开发的组件设置图标?
    经过其他老师指点,自己摸索,发现如何实现,现说明如下,供大家参考。一、建立图标文件1、建立一个24X24的256色BMP格式文件。2、文件命名为该组件的名称。二、建立资源文件:Project→Resource and Images,点击Add将BMP格式图标文件加入,Resource Identifiler 设为组件的名称......