用Delphi写一个请等待屏幕最简单的方法是什么?

Pet*_*ner 1 delphi

我只想要一个快速而肮脏的非模态,不可关闭的屏幕弹出并消失2秒看起来更像...... 1秒.使用3-5行代码.

这要问太多了吗?

And*_*and 8

如果你想以编程方式完成所有事情(也就是说,如果你不想在Delphi表单设计器中设计你的表单),那么你可以写

type
  TStatusWindowHandle = type HWND;

function CreateStatusWindow(const Text: string): TStatusWindowHandle;
var
  FormWidth,
  FormHeight: integer;
begin
  FormWidth := 400;
  FormHeight := 164;
  result := CreateWindow('STATIC',
                         PChar(Text),
                         WS_OVERLAPPED or WS_POPUPWINDOW or WS_THICKFRAME or SS_CENTER or SS_CENTERIMAGE,
                         (Screen.Width - FormWidth) div 2,
                         (Screen.Height - FormHeight) div 2,
                         FormWidth,
                         FormHeight,
                         Application.MainForm.Handle,
                         0,
                         HInstance,
                         nil);
  ShowWindow(result, SW_SHOWNORMAL);
  UpdateWindow(result);
end;

procedure RemoveStatusWindow(StatusWindow: TStatusWindowHandle);
begin
  DestroyWindow(StatusWindow);
end;
Run Code Online (Sandbox Code Playgroud)

在一个新单位.然后你可以像这样调用这些函数:

procedure TForm3.Button1Click(Sender: TObject);
var
  status: TStatusWindowHandle;
begin
  status := CreateStatusWindow('Please Wait...');
  try
    Sleep(2000);
  finally
    RemoveStatusWindow(status);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

  • @Sam:不,我没有.除了我在SO写的代码,我不希望其他人阅读我的代码.我工作的所有编程项目都是我个人的项目,它们甚至都不是开源的.虽然,就个人而言,我认为Windows API并不"难"; 相反,我认为任何为Microsoft Windows操作系统编写应用程序的人都应该能够熟练使用Win API.其次,我认为上面的代码很漂亮.编写简洁的代码是一种艺术形式,就个人而言,我发现"低级别"是有吸引力的.起诉我.(如果你不喜欢它,请不要投票!) (2认同)

Sti*_*ers 5

我通常在TPanel的所有内容中都以我的表单为中心带有“请稍候”标题,而Visibe设置为false。当我开始工作时,我将Visible设置为true(可以选择调用update以确保它被绘制),然后设置为false(最好在finally子句中)。

如果执行此工作的代码允许在其中运行某些代码,则可以先计时一秒钟(或其他一些插值),然后再将Visible设置为true,然后有选择地更新过程信息并调用表单的Update以确保更改被绘制到屏幕上。