Delphi实战中讲解FormCreate,FormShow,FormActivate
前言
在网上百度就可以看到关于FormCreate,FormShow,FormActivate的讲解和介绍,一般来说执行的顺序为:
1、form1.Create
2、from1.Show
3、form1.Activate;
formcreate是动态创建一个窗口
formshow是显示已经创建的窗口。
同意,窗口必须先创建才能show,否则出现错误!
演示视频
下面这个视频是整个动态库做完所实战演示微信支付的视频
用途
其实做程序的时候很多都是在用户的体验和易用性上看到区分的,如果我们说做一个软件的功能可以实现,那可能就不会用这么些细节的东西。
就拿我现在做的这个程序的例子,因为是个对接第三方微信支付宝支付的动态库,目录界面
我们运行TestDemo.exe程序后
左边是我们要传入的流水格式,其中payamt是我们的付款金额,通过调用动态库后显示出支付界面
正常来说我们获取到用户的应付款金额后,我们要在这里再按用支付宝支付还是微信支付的按钮再弹出扫码录入框,如果我们这里在显示出来应付金额后直接就弹出扫码录入框, 是不是就可以省略了一个操作步骤了?如下
这时候有人会问了,这个我们今天要说的FormCreate,FormShow,FormActivate有什么关系呢?接下来我们就说说为什么用到这里了。
代码演示
项目还是我们前章用到的项目《Delphi调用动态链接库》,看一下我们的Trade单元
Trade.dfm界面
Trade.pas
上面的Trade的FormShow的事件,红框就是根据传进来的支付类型来判断是交易还是退货,显示在界面上。
上面的FormActivate事件,我们别的可以先忽略,就是看一下这个GetZFBarCode的函数,这个是打开我们的扫描窗口的函数
GetStr就是我们的扫描界面,然后我们看一下刚才的GetBarCode怎么调用的
通过GetBarCode我们就打开了刚才GetStr界面
回到我们的这章要讲的重点,可以看到,应付界面我们在FormShow里面显示出来了,然后打开GetStr的扫描界面我们是在FormActivate的事件里写的,如果我们把GetBarCode放在FormShow里面最下面写是不是也可以呢,我们修改一下代码,把FormActivate里的事件都屏蔽
然后在FormShow的事件最后加上GetBarCode函数
然后我们运行程序
可以看到,我们的应付的Trade的交易界面没有显示出来
当我们关闭这个扫描界面后
这个界面才显示出来
上面就是在实战中使用FormShow,FormActivate的案例。其实在实战中一些基础的小用法就是这样提炼出来的,细节决定成败。
-END-
长按下方二维码关注微卡智享
yakie: 2022.2.1版本这个设置换到了Setting>Tools下面。
NullWzc: 缺dll,再执行下windeployqt
Magnolia_: 大佬 我这个为什么start的布局和end的布局重叠在一起了
Magnolia_: 大佬 怎么学才能做到你这种程度
m0_57891457: 我用的opencv4.9,为什么SIFT用的了,SURF却用不了呢