首页 > 其他分享 >delphi 仿一下手机端淡入淡出的信息提示框

delphi 仿一下手机端淡入淡出的信息提示框

时间:2023-04-25 20:33:34浏览次数:37  
标签:end Sender 淡入淡出 delphi Vcl TObject TuFrmMsg 提示框 procedure

先看效果:

设计界面也很简单:

 

下面这个是个From,不是Frame.把它的边框设置为none,然后position设置在父级中央或者桌面中央,看个人喜欢吧.加个label,弯角搞一搞,其他也搞得好看一点.这里推荐SC组件.然后加个计时器.这里说一下定时器的interval属性,时间越长,越显得卡顿,上面是1000的效果,后来我改成了300,发现就比上面的效果好很多.

按钮的事件也要说一下,显示模式用show就行了,不要用showmodal

uses
  FrmMsg;

procedure TForm1.Button1Click(Sender: TObject);
begin
   var frm:=TuFrmMsg.Create(self); //注意与position配合 
   frm.Show;      //在定时器里释放内存
end;
unit FrmMsg;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, scControls, scGPControls,
  Vcl.ExtCtrls;

type
  TuFrmMsg = class(TForm)
    scGPLabel1: TscGPLabel;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
    FStartTime: Cardinal;     //私有变量
    FDuration: Cardinal;      //私有变量
  public
    { Public declarations }
  end;

var
  uFrmMsg: TuFrmMsg;

implementation

{$R *.dfm}

procedure TuFrmMsg.FormCreate(Sender: TObject);
begin
  Timer1.Enabled:=True;
  AlphaBlend := True;
  AlphaBlendValue := 0;
  AnimateWindow(Handle, 200, AW_BLEND);
  FDuration:=5000;      //设置显示时间,这里设置5秒
end;

procedure TuFrmMsg.Timer1Timer(Sender: TObject);
begin
// 计算已经显示的时间
  if GetTickCount - FStartTime >= FDuration then
  begin
    // 如果已经显示了足够长的时间,则关闭窗口
    AlphaBlendValue := 0;
    AnimateWindow(Handle, 200, AW_BLEND or AW_HIDE);
    Timer1.Enabled := False;
    Release;
    self.Free;
  end
  else
  begin
    // 否则,根据已经显示的时间和总显示时间计算透明度
    AlphaBlendValue := MulDiv(GetTickCount - FStartTime, 255, FDuration);
  end;
end;

end.

 

标签:end,Sender,淡入淡出,delphi,Vcl,TObject,TuFrmMsg,提示框,procedure
From: https://www.cnblogs.com/yoooos/p/17353753.html

相关文章

  • delphiXE10 代码结构高亮线风格单双设置
    勾上就是这个样式: 不勾就是这个样式: ......
  • echarts 数据密集,如果设置sampling: 'average' 会导致提示框(tooltip)无法正常显示,但是
    如果数据比较密集,设置sampling:'average'确实可以加速绘图,但同时也可能导致提示框无法正常显示的问题。这个问题的原因是,sampling会对数据进行抽样,因此不会显示原始的数据点,而是将数据点以一定规律进行采样,取平均值或最大或其他值,因此提示框的内容可能不准确。不过,有一个简单的......
  • delphi IDE里面的导航条太丑了,咱自己写一个
    效果图:  嗯我们今天主要看下面这一部分的实现:四个按钮是TscGPCharGlyphButton控件。上面一行显示记录位置和快速跳转的那一坨,它其实是由四个TscGPEdit控件拼接构成的。红色括号3那里,其实是把边设置成了红色,而4这个则是设置边框不显示.然后两个控件高度一致,但要比最外面......
  • C# 设置Menustrip提示框的显示 -转载
    设置Menustrip提示框的显示:(1)先在Menustrip的属性中对【ShowItemToolTips】的属性进行设置,设置为true代表要显示提示框,如下图设置: (2)设置ToolStripMenuItem的【AutoToolTip】属性,设置为true代表要显示提示框,如下图设置: (3)设置ToolStripMenuItem的【ToolTipText】属性,设置提示......
  • Delphi 获得文件大小的方法
    Delphi获得文件大小的方法大概有这些:FileSizeByName(需要引用IdGlobal单元,XE版本已取消) GetFileSize (useWindows,仅支持windows)FileSize(不能获得正在使用的文件大小) FileSeek TFileStream.Size 1、FileSizeByName(需要引用IdGlobal单元,XE版本已......
  • 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......
  • uni-app实现类似confirm提示框的效果
    uni.showModal({title:'提示',content:'这是一个模态弹窗',success:function(res){if(res.confirm){console.log('用户点击确定');}elseif(res.cancel){console.log('用户点击取消'......
  • delphi FastReport 从流(数据库)中加载和保存报表
    FastReport从流(数据库)中加载和保存报表属性和方法TfrxReport.LoadFromStreamprocedureLoadFromStream(Stream:TStream);从流中加载报表。参数Stream来源流。TfrxReport.SaveToStreamprocedureSaveToStream(Stream:TStream);将报表保存到流中。参数Stream来源......