相关疑难解决方法(0)

OnShow事件后自动启动操作的最佳方法是什么?

我有一个小应用程序,大多数时候在Start-button后面有一个动作,应该从命令行参数/ AUTORUN触发.如果缺少该参数,用户也可以手动按下该参数.

我的问题是我应该在哪里对命令行进行此检查,以便在给出GUI时仍然更新.目前的解决方案是这样,但在动作完成之前不会更新GUI.

procedure TfrmMainForm.FormShow(Sender: TObject);
begin
  if FindCmdLineSwitch('AUTORUN') then
    btnStart.Click;
end;
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2007

13
推荐指数
2
解决办法
3367
查看次数

主线程繁忙时在Delphi中显示启动画面

我想在加载应用程序时显示启动画面.但是,某些第三方组件在启动期间会阻塞主线程几秒钟,这会导致所有表单都不更新.是否可以使用自己的线程启动屏幕,这样当主线程忙时它也会更新?

该应用程序是win32和Delphi 2007版.

编辑:我正在尝试避免"未绘制的启动画面"效果,如果某些其他窗口(来自其他应用程序)位于启动画面的顶部,例如alt-tabbing到另一个应用程序并返回,则会发生这种情况.

delphi multithreading splash-screen delphi-2007

12
推荐指数
2
解决办法
1万
查看次数

不使用VCL创建表单

我需要创建一个表单(使用CreateWindow函数),而无需VCL使用Windows API(或任何可视控件)的任何帮助.

这个表格将有a InputBox,a Button和a BitMap(就像TImage).

我无法在互联网上找到任何样本.有没有人知道我可以下载除MSDN之外的样本的好地方?

forms delphi winapi

7
推荐指数
3
解决办法
5925
查看次数

Peter Below 的线程启动屏幕和模态对话框

我正在使用Peter Below 的 PBThreadedSplashForm在应用程序启动期间显示。在创建数据模块期间(就在创建主窗体之前),它会随着各种数据库的打开而更新。

问题是我们要检查在创建数据模块期间所做的某些事情是否存在。如果缺少任何这些项目,则会显示一个模式对话框,以便可以创建该项目或关闭应用程序。(缺少的项目通常是索引,该对话框主要在我们重新索引数据库时使用,因此它针对的是开发人员而不是普通用户。)但是,模式对话框显示在启动屏幕后面;随着标题的变化,它似乎是焦点窗口,但它显示在启动屏幕后面。

启动屏幕是使用 Windows API CreateWindowEx() 从与主进程不同的线程创建的,使用以下代码:

procedure TPBSplashThread.CreateSplashWindow;
const
  TopmostStyle: Array [Boolean] of DWORD = (0, WS_EX_TOPMOST );
  NoActivateStyle : Array [Boolean] of DWORD = (0, WS_EX_NOACTIVATE );
var
  wsize: TSize;
begin
  wsize.cx := FSurface.Width + GetSystemMetrics( SM_CXEDGE ) * 2;
  wsize.cy := FSurface.Height + GetSystemMetrics( SM_CYEDGE ) * 2;
  FWnd := CreateWindowEx(
            TopmostStyle[ FTopmost ] or WS_EX_TOOLWINDOW
            or WS_EX_STATICEDGE or WS_EX_CLIENTEDGE
            or NoActivateStyle[ Win32MajorVersion >= 5 ],
            MakeIntResource( FWndClass ),
            nil,
            WS_POPUP or …
Run Code Online (Sandbox Code Playgroud)

delphi winapi

-2
推荐指数
1
解决办法
2737
查看次数