Delphi 7 创建动画启动画面

2023-12-29

当我的应用程序加载他的数据库时,我试图制作一个动画闪屏。 我已经创建了一个闪屏,但我想在数据库转换时使图像从左向右“移动”。现在已经搜索了一段时间,但我所能找到的只是进度条......

这是我的代码:

SplashScreen := TSplashScreen.Create(Application) ;
SplashScreen.Show;
Application.Initialize;
SplashScreen.Update;
SplashScreen.lblStatus.Caption:='Loading...';
SplashScreen.Update;
SplashScreen.lblStatus.Caption:='Updating database...';
SplashScreen.Update;
Application.Initialize;
Application.CreateForm(TfmMain, fmMain);
Sleep(1000);

Application.CreateForm(TfmPrefs, fmPrefs);
Application.CreateForm(TfmCode, fmCode);
Application.CreateForm(TfmEmps, fmEmps);
Application.CreateForm(TfmRest, fmRest);
Application.ShowMainForm:=FALSE;

SplashScreen.Hide;
SplashScreen.Free;
Application.Run;

在我的启动屏幕表单上,我创建了同一图像的 5 个副本,在创建主表单时,我希望图像交替可见和不可见...例如:

while my db loads... begin
Splashscreen.Image1.Visible:=FALSE;
SplashScreen.Update;
Sleep(25);
SplashScreen.Image1.Visible:=FALSE;
SplashScreen.Update;
SplashScreen.Image2.Visible:=TRUE;....

等等!

有什么想法吗?


启动期间在主线程中执行繁重的工作(例如初始化数据库和许多表单) 不适用于闪屏。主线程太忙,无法对 GUI 执行任何操作。将 Sleep 放入代码中将不起作用,因为这将阻止主线程执行任何工作。

这给您留下了两个选择:

  1. 在另一个线程中进行数据库初始化。 有时,仅初始化主窗体也是一个不错的选择。 数据库线程可以通过 PostMessage 调用将进度消息发送到启动表单。

  2. 在单独的线程中启动启动画面。这有点棘手,因为您可能无法从另一个线程使用 VCL。 并且还必须避免阻塞消息队列。 幸运的是,Peter Below 做了一个很好的例子螺纹启动画面 http://cc.embarcadero.com/Item/20139仅使用 Windows API 调用。

此 SO 线程中有更多信息:当主线程繁忙时在 delphi 中显示闪屏 https://stackoverflow.com/questions/388506/displaying-splash-screen-in-delphi-when-main-thread-is-busy.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi 7 创建动画启动画面 的相关文章

  • ClientDataset 索引更改时不计算 TAggregateField

    我正在使用连接到 DBGrid 的 TClientDataset 和几个聚合字段 用于计算其他几个浮点字段的总和 所有字段均已在设计时创建 一切都按预期工作 直到 ClientDataset 的 IndexName 使用自定义索引更改 以便
  • Move() 从动态字符串数组中插入/删除项目

    使用 System Move 从字符串数组中插入 删除项目并不像从其他简单数据类型数组中插入 删除项目那么容易 问题是 字符串在 Delphi 中是引用计数的 在引用计数数据类型上使用 Move 需要对内部编译器行为有更深入的了解 这里有人
  • 桌面 Delphi 应用程序是否可以通过 Windows 8 认证(使用 Windows 应用程序认证套件)?

    显然 Delphi 任何版本 不支持安全异常处理程序 https forums embarcadero com thread jspa messageID 473469 Visual Studio 中的 SAFESEH 开关 在 Windo
  • 如何将接口类型传递给过程

    如何将接口类型传递给过程参数 type Hello PortType interface ISoapInvokable 243CBD89 8766 F19D 38DF 427D7A02EAEE function GetDeneme s st
  • 作为属性的类引用

    谷歌对于这类搜索毫无用处 因为你会得到数亿个结果 其中没有一个与特定问题相关 问题很简单 Delphi 中是否可以有类引用属性 如果是这样 怎么办 这是我尝试过的 type TMyObject class end TMyObjectClas
  • DELPHI win32 的 ORM [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道 Delphi Win32 的 ORM 或类似的东西吗 Marco Cantu 是 Insta
  • 在 Delphi 7 中使用 TScreen

    我的 Delphi 7 应用程序显示 Screen DesktopWidth Screen DesktopHeight Screen Monitors 0 Width Screen Monitors 0 Height 并且 如果选择了第二台
  • Delphi 2010:如何将 UTF8 编码的 PAnsiChar 转换为 UnicodeString?

    情况 我有一个外部 DLL 它使用 UTF 8 作为其内部字符串格式 接口函数都使用 PAnsiChar 来传递字符串 我的应用程序的其余部分使用 Delphi 的本机string类型 由于我正在使用 Delphi 2010 这将映射到Un
  • delphi分组框标题颜色变化

    我正在使用 BDS 2006 想知道您是否可以使用项目中存在的 XPmanifest 更改组框和单选按钮组标题的颜色 因为它始终是蓝色 唯一的方法是重写 Paint 方法TGroupBox http docwiki embarcadero
  • 在 Outlook 中创建带有附件的邮件并显示它

    我想在 Outlook 中创建一封带有附件的邮件并在发送之前显示它 但我想我已经尝试了几乎在网上找到的所有示例 但没有任何运气 我可以使用 Indy 但我非常想使用 Outlook 来确保邮件正确 因为它是用于商业用途 函数的任何输入 该函
  • Winform 没有.NET 框架?

    我必须创建一些表单并将其作为直接 EXE 提供 而不是安装程序 它安装 NET 框架 最终用户对此不满意 他们想要可以直接打开和工作的东西 我知道它可以作为网络完成 但我正在寻找 winforms 吗 请建议哪种工具 技术可以处理这个问题
  • 能否从 Vista Shell 获取 48x48 或 64x64 图标?

    如果 Vista Shell 中存在 48x48 或 64x64 图标 如何使用 SHGetFileInfo 获取在 TImage 中显示图标的句柄 我想从图像列表中选择一个代表文件夹路径的图标 并在 Timage 中显示 48x48 或
  • 为应用程序启用主题

    我有一个旧的应用程序 在Win XP中的delphi 7中启动 现在我正在使用delphi 2009 win Vista 如果我开始一个新项目 所有按钮都有一个圆形边缘 但在我的旧应用程序中 所有按钮都有 方形 形状的外观 有什么设置我错过
  • 如何将 TGifImage 中的帧提取为位图?

    下面的演示尝试在表单的画布上绘制 GIF 这不起作用 图像不会前进 如何让它发挥作用 procedure TForm1 FormCreate Sender TObject begin GIF TGIFImage Create GIF Loa
  • Delphi XE5 REST/Android 客户端“会话已过期”

    我有一个REST Server与Android Client 都在Deplhi Xe5 Android客户端成功连接Rest服务器 在我的服务器中我有一个TDSHttpWebDispatcher with SessionTimeout 12
  • 我需要避免尝试更新连接到 TSQLQuery 的 Delphi TClientDataset 中的非物理字段

    概要 我的代码正在尝试更新 Delphi XE 中的非物理字段TClientDataset 连接到TSQLQuery以其SQL属性集 作为运行时的结果创建Open命令 我有一个TClientDataset连接到一个TDatasetProvi
  • Delphi - 如何获取 USB 可移动硬盘和记忆棒的列表?

    在我的应用程序 Delphi 中 我需要列出所有 USB 存储设备 这些可以是闪存棒or外部存储驱动器 有一个Jvcl成分JvDriveCombo 并且它有DriveType属性 问题是我是否选择DriveType Fixed那么除了外部驱
  • FreePascal x64 上系统单元函数的汇编调用

    我有一些 Delphi 汇编代码 可以在 Win32 Win64 和 OSX 32 上编译并正常工作 XE2 但是 由于我需要它在 Linux 上工作 所以我一直在考虑编译它的 FPC 版本 到目前为止 Win32 64 Linux32 6
  • 如何释放 TInterfacedObject 中的 TObject 成员

    我知道接口对象是引用计数的 因此不需要手动释放它 但如果它有一个 TObject 继承成员 我是否应该在析构函数中手动释放该成员 考虑以下代码 program Project2 APPTYPE CONSOLE R res uses Syst
  • Delphi 2010 - 从 XML 文档解码 Base64 编码图像

    我正在尝试从应用程序中的 XML 文档解码 base64 编码的 EMF 图像并将其呈现在屏幕上 但是 它似乎从未出现 如果我将 XML 文档中的数据复制 粘贴到 Notepad 中并使用Base64 Decode选项并将文件另存为 emf

随机推荐

  • 如何从会话中检索通用列表?

    我在会议中列出了一份清单 Session Add SessionList mylist 如何从会话中检索它 var list Session SessionList as List
  • Appengine 过滤不等式和排序失败

    我认为我在这里忽略了一些简单的事情 我无法想象这是不可能做到的 我想按日期时间属性进行过滤 然后按排名整数属性对结果进行排序 当我尝试这样做时 query filter submitted gt thisweek order ranking
  • 从 JSON 到 NSArray

    我正在使用此处找到的 JSON 框架 http stig github com json framework http stig github com json framework在我的 iPhone 应用程序中 我正在尝试将一些数据解析为
  • 这是 Ruby 中 Array.fill 方法的错误吗? [复制]

    这个问题在这里已经有答案了 应该是这种情况 即我误解了 还是一个错误 a Array new 3 Array new 3 a 1 fill g gt g g g g g g g g g 不应该导致 gt nil nil nil g g g
  • 批处理文件从txt文件中删除前18个字符

    我有一个 txt 文档 其中包含超过 32 000 行带注释的机器代码 它看起来像这样 Display menu window C0 000E E220 SEP 20 C0 0010 C210 REP 10 C0 0012 20640B J
  • HostnameVerifier 接口的不安全实现 - Android

    Play 商店应用被拒绝的原因 您的应用程序正在使用 HostnameVerifier 接口的不安全实现 您可以在此找到有关如何解决该问题的更多信息Google 帮助中心文章 https support google com faqs an
  • grep 查找中间带有通配符的文本

    我想 grep 类似的东西 gt sh lt 但这不起作用 我可以 grep 一切 sh lt 但无法让通配符发挥作用 这里有什么技巧呢 你需要 grep 类似的东西 gt sh lt The 部分匹配任何长度的任何字符 部分匹配一个点
  • gwt 自定义小部件包装方法

    我的自定义小部件如下所示 public class CustomWidget extends Composite public static CustomWidget wrap com google gwt dom client Eleme
  • 如何将 Lua 函数传递给 C 函数并多次执行 Lua 函数?

    我想要做的是创建一个函数 它将迭代一些对象并为每个函数调用一个函数 我使用的是 BlitzMax 而不是 C 但这不是重点 因为它具有 Lua 的 C 函数的完整包装 Lua有一个lua pushcfunction 命令 但是lua pus
  • Python3 + Curses:如何按“q”立即结束程序?

    当我运行以下示例代码并按 q 时 它会正常结束 但是如果我按任何其他字符 例如许多中断和许多其他字符 然后按 q 它不会退出 我该如何解决这个问题 import curses time def main sc sc nodelay 1 wh
  • 如何检查变量是否是数组?...或类似数组的东西

    我想用一个foreach用一个变量循环 但这个变量可以有很多不同的类型 NULL例如 所以之前foreach我测试一下 if is array var foreach var as 但我意识到它也可以是一个实现的类Iterator界面 也许
  • 如何加载(或映射)文件部分最大大小,但适合 Windows 上的 RAM?

    有大文件 我需要快速排序 我将按适合 RAM 的部分处理文件 以避免 程度使用页面文件 下一步 合并部分 如何使用最大内存 我的解决方案 使用WinApi文件内存映射 但我不知道如何获取文件最大大小的一部分 但适合RAM 如何确定大小 Yo
  • Service-Fabric 绑定到多个端点

    是否可以绑定服务结构应用程序来侦听多个端口 基本上 我试图拥有一个面向公众的服务 它侦听 http 80 和 https 443 并将任何 http 请求重定向到 https 我创建了一个新的 ASP net Core 服务 它单独工作正常
  • F# 联合类型列表

    我想要一份报告清单 报告可以是详细信息或部分类型 module Data type Section Header string Lines string list Total string type Detail State string
  • jQuery 复选框

    我正在尝试编写一段 jQuery 代码 如果所有复选框都 未选中 则所有 li 标签的类都为 disabled 但是 如果选中一个复选框 任何复选框 则所有 li 标签都会失去 disabled 类别 非常感谢 checkbox click
  • 如何将字符串复制到剪贴板

    在xcode中如何将文本复制到剪贴板 目前 我正在使用以下代码 UIPasteboard pasteboard UIPasteboard generalPasteboard pasteboard setString shareString
  • 使用base64编码生成Oauth授权令牌

    我正在尝试按照指南为 YAHOO DSP API 生成 Oauth 身份验证令牌 Base64 编码是一种将二进制数据编码为文本的方法 以便可以轻松地在网络上传输而不会出现错误 在此步骤中 您将获取 YDN 控制台为您生成的客户端 ID 和
  • 是否可以将 AWS CodePipeline 与 Lightsail 结合使用?

    我工作了一整天却找不到答案 所以我问你们 是否可以将 AWS Pipeline 与 AWS Lightsail 结合使用 我的目标是将代码存储在 CodeCommit 中 并使用 CodeBuild CodeDeploy CodePipel
  • 龙卷风 ioloop 和龙卷风的工作流程是什么?

    我想了解tornado的内部工作流程 并且已经看到本文 http golubenco org p 16 这很棒 但我就是不明白 在ioloop py中 有这样一个函数 def add handler self fd handler even
  • Delphi 7 创建动画启动画面

    当我的应用程序加载他的数据库时 我试图制作一个动画闪屏 我已经创建了一个闪屏 但我想在数据库转换时使图像从左向右 移动 现在已经搜索了一段时间 但我所能找到的只是进度条 这是我的代码 SplashScreen TSplashScreen C