如果你想以编程方式完成所有事情(也就是说,如果你不想在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)
我通常在TPanel的所有内容中都以我的表单为中心带有“请稍候”标题,而Visibe设置为false。当我开始工作时,我将Visible设置为true(可以选择调用update以确保它被绘制),然后设置为false(最好在finally子句中)。
如果执行此工作的代码允许在其中运行某些代码,则可以先计时一秒钟(或其他一些插值),然后再将Visible设置为true,然后有选择地更新过程信息并调用表单的Update以确保更改被绘制到屏幕上。
| 归档时间: |
|
| 查看次数: |
7638 次 |
| 最近记录: |