信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 5029|回复: 18
打印 上一主题 下一主题

Delphi程序开发自己的第一个桌面是地种程序

[复制链接]

1868

主题

1878

帖子

1万

积分

积分
10928
跳转到指定楼层
宣传软件楼主
发表于 2017-8-3 15:20:14 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

软件教程首图:

软件教程分类:Delphi基础教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件高级教程 

软件教程发布日期:2017-08-03

软件教程关键字:Delphi程序开发自己的第一个桌面是地种程序

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述
本帖最后由 群发软件 于 2017-8-3 15:24 编辑

  最近在学习Delphi,以不同的实现方式来体现学习的过程,刚开始直接在窗体上绘制时钟,完成使用定时器后,又用线程实现时钟的走动(见第一个、第二个程序)。接着以封装成组件类,方便下次使用,也分别用定时器和线程实现(见第三个、第四个程序)。最后,以GDI+绘制时钟,效果比GDI好很多,也利用到双缓冲机制和定时器(见第五个程序)。

时钟[定时器控制]

时钟[线程控制]

时钟[定时器组件]  需要先安装“时钟/Source/Clock.pas”组件,再打开工程。

时钟[多线程组件]  需要先安装“时钟/Source/Clock.pas”组件,再打开工程。

时钟[GDI+和定时器]  需要有IGDI+环境(见文章Delphi 7下IGDIPlus库的使用),再安装“时钟/Source/Clock.pas”组件,接着再打开工程。


delphi写时钟,delphi模拟时钟,delphi桌面时钟源码

   制作石英钟 (0 folders, 12 files, 26.51 KB, 26.51 KB in total.)

   Exa22.dcu 9.21 KB

   Exa22.dfm 799 bytes

   Exa22.pas 4.79 KB

   Exa22_pro.bdsproj 8.05 KB

   Exa22_pro.bdsproj.local 463 bytes

   Exa22_pro.cfg 428 bytes

   Exa22_pro.dpr 233 bytes

   Exa22_pro.identcache 160 bytes

   Exa22_pro.res 876 bytes

Delphi程序开发自己的第一个桌面是地种程序 b2b软件


在Windows中的很多场合下编程(例如工业控制、游戏)中需要比较精确的记时器,本文讨论的是在Delphi下实现记时器的若干方法以及它们的精度控制问题。

在Delphi中最常用的是Timer控件,它的设置和使用都非常方便,理论上它的记时精度可以达到1ms(毫秒)。但是众所周知的,实际上Timer在记时间隔小于50ms之下是精度是十分差的。它只适用于对于精度要求不太高的场合。

        这里作者要介绍的是两种利用Windows API函数实现精确记时的方法。第一中方法是利用高性能频率记数(作者本人的称呼)法。利用这种方法要使用两个API函数QueryPerformanceFrequency和QueryPerformanceCounter。QueryPerformanceFrequency函数获得高性能频率记数器的震荡频率。

调用该函数后,函数会将系统频率记数器的震荡频率(每毫秒)保存到一个LargeInteger中。不过利用该函数在几台机器上做过试验,结果都是1193180。读者朋友可以在自己的机器上试一下

QueryPerformanceCounter函数获得系统频率记数器的震荡次数,结果也保存到一个Largenteger中。

很显然,如果在计时中首先使用QueryPerformanceFrequency获得高性能频率记数器每毫秒的震荡次数,然后在计时开始时使用QueryPerformanceCounter函数获得当前系统频率记数器的震荡次数。在计时结束时再调用QueryPerformanceCounter函数获得系统频率记数器的震荡次数。将两者相减,再将结果除以频率记数器每毫秒的震荡次数,就可以获得某一事件经过的准确时间。(次数除以频率等于时间)

另外的一种精确记时器的功能是利用多媒体记时器函数(这也是作者的定义,因为这个系列的函数是在Winmm.dll中定义并且是为媒体播放服务的)。

实现多媒体记时器首先要使用timeSetEvent函数建立计时事件。该函数在Delphi中的mmsystem.pas中有定义,定义如下:

function timeSetEvent(uDelay, uResolution: UINT;

   lpFunction: TFNTimeCallBack; dwUser: DWord; uFlags: UINT): MMRESULT; stdcall

函数定义中参数uDelay定义延迟时间,以毫秒为单位,该参数相当于Timer控件的Interval属性。参数uResolution定义记时精度,如果要求尽可能高的精度,要将该参数设置为0;参数lpFunction定义了timeSetEvent函数的回调函数。该函数相当于一个定时中断处理函数,每当经过一个uDelay长度的时间间隔,该函数就会被调用,编程者可以在该函数中加入相应的处理语句。参数dwUser定义用户自定义的回调值,该值将传递给回调函数。参数uFlags定义定时类型,如果要不间断的记时,该值应设置为1。

如果函数调用成功,在系统中建立了一个多媒体记时器对象,每当经过一个uDelay时间后lpFunction指定的函数都会被调用。同时函数返回一个对象标识,如果不再需要记时器则必须要使用timeKillEvent函数删除记时器对象。

XML:namespace prefix = o ns = "urn:schemas-microsoft-comfficeffice" />

由于Windows是一个多任务的操作系统,因此基于API调用的记时器的精度都会受到其它很多因素的干扰。到底这两中记时器的精度如何,我们来使用以下的程序进行验证:

设置三种记时器(Timer控件、高性能频率记数、多媒体记时器)。将它们的定时间隔设置为10毫秒,让它们不停工作直到达到一个比较长的时间(比如60秒),这样记时器的误差会被累计下来,然后同实际经过的时间相比较,就可以得到它们的精度。

下面是具体的检测程序。

unit Unit1;interfaceuses   Windows, Messages, SysUtils, Classes, GraphiCS, Controls, Forms, Dialogs,   StdCtrls, ExtCtrls,mmSystem;type   TForm1 = class(TForm)     Edit1: TEdit;     Edit2: TEdit;     Edit3: TEdit;     Button1: TButton;     Button2: TButton;     Timer1: TTimer;     procedure FormCreate(Sender: TObject);     procedure Button1Click(Sender: TObject);     procedure Timer1Timer(Sender: TObject);     procedure Button2Click(Sender: TObject);   private     { Private declarations }   public     { Public declarations }   end;var   Form1: TForm1;   actTime1,actTime2:Cardinal;   smmCount,sTimerCount,sPCount:Single;   hTimeID:Integer;   iTen:Integer;   proTimeCallBack:TFNTimeCallBack;procedure TimeProc(uTimerID, uMessage: UINT;      dwUser, dw1, dw2: DWord) stdcall;procedure proEndCount;implementation{$R *.DFM}//timeSetEvent的回调函数procedure proEndCount;begin   actTime2:=GetTickCount-actTime1;   Form1.Button2.Enabled :=False;   Form1.Button1.Enabled :=TRue;   Form1.Timer1.Enabled :=False;   smmCount:=60;   sTimerCount:=60;   spCount:=-1;   timeKillEvent(hTimeID);end;procedure TimeProc(uTimerID, uMessage: UINT;     dwUser, dw1, dw2: DWord) stdcall;begin   Form1.Edit2.Text:=FloatToStr(smmCount);   smmCount:=smmCount-0.01;end;procedure TForm1.FormCreate(Sender: TObject);begin   Button1.Caption :='开始倒计时';   Button2.Caption :='结束倒计时';   Button2.Enabled :=False;   Button1.Enabled :=True;   Timer1.Enabled :=False;   smmCount:=60;   sTimerCount:=60;   sPCount:=60;end;procedure TForm1.Button1Click(Sender: TObject);var   lgTick1,lgTick2,lgPer:TLargeInteger;   fTemp:Single;begin   Button2.Enabled :=True;   Button1.Enabled :=False;   Timer1.Enabled :=True;   Timer1.Interval :=10;   proTimeCallback:=TimeProc;   //timeSetEvent hTimeID:=timeSetEvent(10,0,proTimeCallback,1,1);   actTime1:=GetTickCount;   //获得系统的高性能频率计数器在一秒内的震动次数
QueryPerformanceFrequency(lgPer);   fTemp:=lgPer/1000;   iTen:=Trunc(fTemp*10);   QueryPerformanceCounter(lgTick1);   lgTick2:=lgTick1;   sPCount:=60;   while sPCount>0 do begin     QueryPerformanceCounter(lgTick2);     //如果时钟震动次数超过10毫秒的次数则刷新Edit3的显示     If lgTick2 - lgTick1 > iTen Then begin             lgTick1 := lgTick2;             sPCount := sPCount - 0.01;             Edit3.Text := FloatToStr(sPCount);             Application.ProcessMessages;     end;   end;end;procedure TForm1.Timer1Timer(Sender: TObject);begin   Edit1.Text := FloatToStr(sTimerCount);   sTimerCount:=sTimerCount-0.01;end;procedure TForm1.Button2Click(Sender: TObject);begin   proEndCount;   //显示从开始记数到记数实际经过的时间   ShowMessage('实际经过时间'+IntToStr(actTime2)+'毫秒');end;end.

        运行程序,点击“开始倒记时”按钮,程序开始60秒倒记时,由于上面的程序只涉及了记时器程序的原理而没有将错误处理加入其中,所以不要等60秒倒记时结束。点击“结束倒记时”按钮可以结束倒记时。这时在弹出对话框中会显示实际经过的时间(单位为毫秒),将三个文本框内的时间乘以1000再加上实际经过的时间,越接近60000,则记时精度越高。

下面是在我的机器上的执行结果。

XML:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />ASPectratio="t">2000/temp/msoclip1/01/clip_image001.jpg" o:title="精确记时器">

        从上面的结果看,由Delphi的Timer控件建立的记时器的精度十分差,无法在实际中使用,而利用高性能频率记数法和多媒体计数器法的误差都在1%以下。考虑到程序中在文本框中显示时间对程序所造成的影响,这个误差在应用中是完全可以忽略的。

另外在运行程序时作者还发现一个问题,如果在倒记时时拖动窗口,文本框中的显示都会停止,而当停止窗口拖放后,多媒体记时器显示会跳过这段时间记时,而其它两种记时器显示倒记时却还是从原来的时间倒数。这说明多媒体记时器是在独立的线程中运行的,不会受到程序的影响。

综合上面的介绍和范例,我们可以看到,如果要建立高精度的记时器,使用多媒体记时器是比较好的选择。而高性能频率记数法比较适合计算某个耗时十分短的过程所消耗的时间(例如分析程序中某个被多次调用的程序段执行时间以优化程序),因为毕竟高性能频率记数的理论可以达到微秒级别。Timer控件虽然精度比上面两者差很多,但是它使用方便,在要求不高的场合它还是最佳选择。




unto微商世界网用什么B2B软件群发好?next易龙B2B信息网广告信息自动群发软件
回复

使用道具 举报

0

主题

1026

帖子

1111

积分

积分
1111
19#定制软件#
发表于 2017-8-31 05:20:29 | 只看该作者
的细心指导和安装,服务热情周到,很好很成功的一次网购,我还会再来的!

回复 支持 反对

使用道具 举报

0

主题

629

帖子

627

积分

积分
627
18#定制软件#
发表于 2017-8-30 23:23:02 | 只看该作者
很好用,店家手把手教真好

回复 支持 反对

使用道具 举报

0

主题

627

帖子

625

积分

积分
625
17#定制软件#
发表于 2017-8-26 22:28:18 | 只看该作者
客服姐姐晨曦都值得表扬,加班加点很敬业修改了10几次,都依依解决。最后都非常满意,现在像这种有问题能随时改正

回复 支持 反对

使用道具 举报

0

主题

1002

帖子

1004

积分

积分
1004
16#定制软件#
发表于 2017-8-26 22:27:20 | 只看该作者
诚信的店铺,完全为客户考虑,我购买了PC端和电脑端模板,店家都很热心的帮忙解决问题店家基本都在线,很是尽职尽责,服务无忧,售后无忧,我是新店家,她帮了我很多。真心感谢!

回复 支持 反对

使用道具 举报

0

主题

614

帖子

596

积分

积分
596
15#定制软件#
发表于 2017-8-23 03:06:30 | 只看该作者
谢卖家。三两下就解决了问题

回复 支持 反对

使用道具 举报

0

主题

584

帖子

578

积分

积分
578
14#定制软件#
发表于 2017-8-22 20:32:57 | 只看该作者
任了,就像巴黎欧莱雅,你值得拥有

回复 支持 反对

使用道具 举报

0

主题

660

帖子

660

积分

积分
660
13#定制软件#
发表于 2017-8-20 18:59:32 | 只看该作者
量非常好,与卖家描述的完全一致,非常满意卖家的服务太棒了,考虑非常周到

回复 支持 反对

使用道具 举报

0

主题

594

帖子

576

积分

积分
576
12#定制软件#
发表于 2017-8-19 12:03:10 | 只看该作者
值得好评,大爱

回复 支持 反对

使用道具 举报

1

主题

640

帖子

612

积分

积分
612
QQ
11#定制软件#
发表于 2017-8-19 02:45:39 | 只看该作者
很快,服务周到

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方
信息发布软件AIWROK软件按钮监听UI界面与事件监听功能演示
AIWROK软件按钮监听UI界面与事件监听功能演示.
信息发布软件AWIROK软件多选[uiCheckBox]方法小结
AWIROK软件多选方法小结 方法一:findByID 加载多选控件方法二:getAllChecked 获取所有选中项方法三:getAllSelect 获取所有选项方法四:getChecked 获取某个选项是否选中方法五:setChecked 设置某个选项是否选中方法六:setCheckeds 设置多个选项是否选中方法七:setHeight 设置高度
信息发布软件AIWROK日志演示开启日志显示 → 放大 → 关闭代码
AIWROK日志演示开启日志显示 → 放大 → 关闭代码
信息发布软件🏯AIWROK数组方法高级应用案例
🏯AIWROK数组方法高级应用案例
信息发布软件AIWROK软件日志悬浮窗简化版自动切换位置
AIWROK软件日志悬浮窗简化版自动切换位置
信息发布软件AIWROK软件String实例演示
AIWROK软件String实例演示
信息发布软件AIWROK软件S内置String类[String]方法小结
AIWROK软件S内置String类[String]方法小结 方法 1:charAt[/backcolor]方法 2:charCodeAt[/backcolor]方法 3:indexOf[/backcolor]方法 4:lastIndexOf[/backcolor]方法 5:length[/backcolor]方法 6:match[/backcolor]方法 7:replace[/backcolor]方法 8:replaceAll[/backcolor]方法 9:split[/backcolor]方法 10:startsWith[/backcolor]方法 11:substr[/backcolor]方法 12:substring[/backcolor]方法 13:trim[/backcol
信息发布软件AIWROK软件完整的WebSocket客户端示例
这段代码是一个完整的WebSocket客户端示例,用于连接到指定的WebSocket服务器并处理各种事件。具体来说,代码的作用如下: 定义服务器地址:首先定义了一个服务器的IP地址和端口号 var ip = "154.37.221.104:8886";。 创建WebSocket对象:尝试创建一个新的WebSocket对象 var ws = new WebSocket();。注意,这里的 new ws() 应该是 new WebSocket()。 添加事件监听器:代码中尝试为WebSocket对象添加事件监听器,但这里有一个错误。
信息发布软件AIWROK软件苹果系统中实现四种基本滑动操作
AIWROK软件苹果系统中实现四种基本滑动操作
信息发布软件hid的滑动没有百分比坐标滑动吗
hid的滑动没有百分比坐标滑动吗
信息发布软件单选控件[uiRadioButton]方法小结
单选控件方法小结 方法 1:加载单选控件[/backcolor]方法 2:获取选中项[/backcolor]方法 3:设置高度[/backcolor]方法 4:设置选中项[/backcolor]
信息发布软件AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
信息发布软件AIWROK软件安卓随机工具应用函数生成
AIWROK软件安卓随机工具应用函数生成
信息发布软件用在AIWORK软件代码中的实用符号分类整理2
用在AIWORK软件代码中的实用符号分类整理2 软件IDE用Emoji符号分类整理(含用途说明)一、表情与情感1. 微笑 [*]😀 笑脸(基础开心反馈,用于操作成功后的友好提示) [*]😃 笑脸大眼睛(强化开心情绪,用于重要任务完成后的积极反馈) [*]😄 笑脸和微笑的眼睛(温和友好的状态,用于日常交互中的正向回应) [*]😁 带着微笑的眼睛(轻松愉悦的反馈,用于轻度成功或趣味操作) [*]
信息发布软件AIWROK软件图像二值化的各种方法和应用场景
AIWROK软件图像二值化的各种方法和应用场景
信息发布软件AIWROK软件找图区分页面变化和卡死状态
AIWROK软件找图区分页面变化和卡死状态
信息发布软件AIWROK苹果系统Map 数据管理[map]小结
AIWROK苹果系统Map 数据管理[map]小结 方法一:add(添加键值对)[/backcolor]方法二:delete(删除指定键值对)[/backcolor]方法三:clear(清空所有键值对)[/backcolor]方法四:get(根据键获取值)[/backcolor]方法五:getAllValue(获取所有值)[/backcolor]方法六:toString(转换为字符串)[/backcolor]完整示例:

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-2-5 02:55 , Processed in 0.319358 second(s), 58 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表