当前位置: 首页 > news >正文

按时间自动关闭的弹出对话框

本人所知道两种可以按时间自动关闭的SHOWMESSAGE弹出对话框的方法,现和大家共享一下

1,利用TIMER控件计算时间,FINDWINDOW查找窗体关闭的方法

2,用WINDOWS隐藏API,显示有时间控制功能的SHOWMESSAGE

第一种方法:

 1  procedure  TForm1.Button1Click(Sender: TObject);
 2  begin
 3    Timer1.Enabled : =  True;
 4    ShowMessage( ' hello world ' );
 5  end ;
 6 
 7  procedure  TForm1.Timer1Timer(Sender: TObject);
 8  var
 9    Handle : THandle;
10  begin
11    Handle : =  FindWindow( ' TMessageForm ' , PChar(Application.Title));  // 注意FINDWINDOW的第一个参数
12     if  Handle  >   0   then
13     begin
14      SendMessage(Handle, WM_CLOSE,  0 0 );
15     end ;
16    Self.SetFocus;
17    (Sender  as  TTimer).Enabled : =  False;    // 倒计时时间为TIMER控件的Interval属性
18  end ;
19 
20  这种方法比较灵活,也可以使用在MessageBox或者自定义的窗体,只需要知道FINDWINDOW的两个参数就可以了

 

第2种方法

 1  function  MessageTimeOut(aCaption, aText : String; Interval : Integer):Boolean;
 2  type
 3    TMsgBoxTimeOut = function (hWnd:HWND;lpText:PChar;lpCaption:PChar;uType:UINT;wLanguageId:WORD;dwMilliseconds:DWORD): Integer;Stdcall;
 4  var
 5    LibHandle : THandle;
 6    MsgForm : TMsgBoxTimeOut;
 7  begin
 8    Result : =  False;
 9    LibHandle : =  LoadLibrary( ' user32.dll ' );
10     try
11      @MsgForm : =  GetProcAddress(LibHandle,  ' MessageBoxTimeoutA ' );
12       if   not  (@MsgForm  =   nil then
13       begin
14        Result : =  True;
15        MsgForm(Application.Handle, PChar(aText), PChar(aCaption), MB_OK,  0 , Interval);//参数1是句柄,参数2是标题,参数3是显示的文字内容
16       end ;                                                                  //参数4是按钮类型,参数5直接带0,参数6就是结束时间单位是毫秒 
17     finally
18      FreeLibrary(LibHandle);
19     end ;
20  end ;
21 
22  procedure  TForm1.Button2Click(Sender: TObject);
23  begin
24    MessageTimeOut('OK', ' hello world ' 2000 );
25  end ;
26  这种方法需要调用user32.dll
27 

 

 

转载于:https://www.cnblogs.com/zshsuming/archive/2010/07/02/1769838.html

相关文章:

  • 在MTK上实现数独小游戏
  • 把javascript,vbscript中得数组传递给COM组件(or Activex)
  • 在C#中完成海量数据的批量插入和更新
  • js split()与John截取函数(复制)
  • photoshop保存背景透明图片办法
  • 软件配置项
  • php字符串变数组
  • 向现有表添加标识列(IDENTITY)
  • 轻松实现无刷新三级联动菜单[VS2005与AjaxPro]【转】
  • ArcSDE vs. Oracle Spatial 16
  • 论文选题系统
  • 使用Reflector查看闭包
  • 巧替换windows 7中的宋体 simsun.ttc
  • JavaScript学习笔记(二)——从简单开始学起
  • 切片地图服务使用Flex API编辑和更新切图
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • django开发-定时任务的使用
  • Flannel解读
  • Java到底能干嘛?
  • Puppeteer:浏览器控制器
  • Spring-boot 启动时碰到的错误
  • vue-cli3搭建项目
  • Vue实战(四)登录/注册页的实现
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 电商搜索引擎的架构设计和性能优化
  • 二维平面内的碰撞检测【一】
  • 前嗅ForeSpider中数据浏览界面介绍
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • HanLP分词命名实体提取详解
  • ​Linux·i2c驱动架构​
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (02)Hive SQL编译成MapReduce任务的过程
  • (3)STL算法之搜索
  • (8)STL算法之替换
  • (C++)八皇后问题
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (论文阅读40-45)图像描述1
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (一) storm的集群安装与配置
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ./configure,make,make install的作用
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .Net 垃圾回收机制原理(二)
  • @RequestMapping用法详解
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @我的前任是个极品 微博分析
  • [04] Android逐帧动画(一)
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt