首页 > 其他分享 >Delphi 在窗体界面显示之后执行事件 AfterShow

Delphi 在窗体界面显示之后执行事件 AfterShow

时间:2024-12-17 14:11:46浏览次数:3  
标签:end DoSomething Delphi AfterShow TForm1 界面显示 WM procedure

正常情况下,需要在启动之后直接执行某事件,一般会将函数放在Create或者OnShow里面。
但是,这种情况下,当事件耗时较久是,界面会迟迟不肯出现,只能等待Create喝OnShow执行完毕之后才会显示。
为了能够在界面能够先出现,然后运行需要的事件,可以使用消息的机制自定义添加一个AfterShow的函数。(Delphi中窗体没用相关函数,需要自定义)

原来的代码:

//示例代码
 TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormShow(Sender: TObject);
    procedure DoSomething();//做某些耗时的事情
  private
  public
  end;

//实现
procedure TForm1.FormShow(Sender: TObject);
begin
  //这里耗时,会卡住界面不显示,完成之后才会跳出
  DoSomething();
end;

添加AfterShow();:

const 
  WM_BEGIN = WM_USER + 1;
...
//示例代码
 TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormShow(Sender: TObject);
    procedure DoSomething();//做某些耗时的事情
    procedure AfterShow(var msg:TMessage);message WM_BEGIN;
  private
  public
  end;

...
//实现
procedure TForm1.FormShow(Sender: TObject);
begin
  PostMessage(Form1.handle,WM_BEGIN,0,0);
end;
procedure TForm1.AfterShow(var msg:TMessage);
begin
  DoSomething();
end;

参考源:https://jingyan.baidu.com/article/b0b63dbf21e63f4a4830701c.html

标签:end,DoSomething,Delphi,AfterShow,TForm1,界面显示,WM,procedure
From: https://www.cnblogs.com/tutuleilife/p/18612288

相关文章

  • Delphi:含义、用途、过程和应用
    ​什么是德尔菲法?德尔菲法是一种用于预测和决策的结构化通信方法,涉及专家小组。该过程包括多轮问卷,专家提供匿名回答。这些回复被汇总并与小组共享,允许根据集体意见进行调整以达成共识。从选择专家开始,该方法通过多轮评论进行,直到达成共识。虽然它提供了一些优势,例如无......
  • delphi TFixedQueue 静态固定元素数队列,手工实现;
    unitzx.core.FixedQueue;interfaceusesSystem.SysUtils,System.Generics.Collections;typeTFixedQueue<T>=classprivate///<summary>///一个动态数组,用于存储队列元素,动态数组会自动管理内存///</summary>FItems:TArray<T>;......
  • 别人的-Delphi开发经验谈
    --------开发环境--------   Delphi7是一个很经典的版本,在Win2000/XP下推荐安装Delphi7来开发软件,在Vista下推荐使用Delphi2007开发软件。安装好Delphi7后,应立即安装Delphi7UpdatePack1,Delphi2007则建议尽量安装最新的版本。工欲善其事,必先利其器,为了提升开发效率,为......
  • Sigrity PowerDCPackage ThermalCharacterization模式提取封装基板热阻参数-Single-Di
    SigrityPowerDCPackageThermalCharacterization模式提取封装基板热阻参数-Single-DiePackageDELPHIcompactThermalModelSigrityPowerDCPackageThermalCharacterization模式是用于提取封装基板的热阻参数的,下面根据JEDECSingle-DiePackageDELPHIcompactTh......
  • delphi写一个 LinkedList,泛型容器,方便从中间删除
    在Delphi中,创建一个泛型链表(LinkedList)容器需要定义节点类和链表管理类,并确保它们都是泛型的,以便可以存储任何类型的元素。以下是一个简单的泛型链表实现,它包括节点类TLinkedListNode<T>和链表管理类TLinkedList<T>。这个实现支持从中间删除元素。unitGeneric.LinkedList;......
  • 从Delphi到Lazarus——在Lazarus中使用ActiveX控件(导入类型库)
    0.前言Lazarus的设计目标是应用FreePascal,所以所有凡是FreePascal能运行的平台,Lazarus都可以运行。通俗地说就是Lazarus追求的是跨平台编程,致力于“一次编写,到处编译”。Lazarus最初是一个基于FreePascal的Delphi仿制品。Lazarus作为一个可能代替Delphi的集成开发环境,从诞生......
  • Delphi对接微信人脸支付Windows SDK
    开发环境DelphiXE11.3只有部分代码,做个笔记;这个只有调人脸识别(WindowsSDK)代码,只有部分代码 {微信刷脸支付}unitUWX_PayFaceSDK;interfaceusesSystem.SysUtils,System.DateUtils,System.JSON;typemWX_PayFace_CMD_Type=(mWX_init,mWX_getRawdata,mWX......
  • 从Delphi到Lazarus——Delphi转换器
    0.前言在Lazarus中使用Delphi编写的文件是一件很简单的事情,这是因为Lazarus可以直接打开Delphi的任何文件,甚至有些文件可以不做任何修改就可以直接使用到你的Lazarus程序中。不过,Lazarus与Delphi毕竟不是同一个东西,还是存在一些区别的,这就需要将Delphi文件转换为Lazarus需要的格......
  • delphi内存表
    delphi内存表1)TClientDataSet早年datasnap基于COM,datasnap远程方法函数可以返回OLEVariant,TClientDataSet.Data和TClientDataSet.Delta的数据格式都是OLEVariant。delphi数据集通过TDataSetProvider桥梁转换为OLEVariant。DSP+CDS组合,firedac,unidac,ado,bde,dbx。。所有数据......
  • 从Delphi到Lazarus——Lazarus编程时可以使用的组件(控件)
    0.前言使用过可视化编程的人都知道在编程时组件的重要性。可以使用的组件越多,编程越方便快捷。理论上,Delphi中的所有组件在Lazarus中都可以使用。当然,在Windows编程时多数是可以直接使用的,有些需要做适当的修改才能使用。而在Unix或Linux下编程就有些不能使用了,这涉及到操作系统......