我有一个类似于这里提问的问题的主表单和状态表单。然而,我的状态窗口的FormStyle是fsStayOnTop,这会在我尝试最小化主窗体时导致一些奇怪的行为。
当我最小化主窗体时,两个窗体都会按预期隐藏,但当状态窗体完成它的任务并被最小化时,主窗体会自动恢复其自身,并且它的最小化按钮不再起作用(但最大化/还原/关闭仍然有效)。唯一的方法是重新启动应用程序以使最小化功能再次起作用。如果我将FormStyle设置为其他任何值,则一切正常,但我的应用程序要求状态窗体在可见时始终保持在顶部。
为什么主窗体会自动恢复呢?有没有办法解决这个问题?
当我最小化主窗体时,两个窗体都会按预期隐藏,但当状态窗体完成它的任务并被最小化时,主窗体会自动恢复其自身,并且它的最小化按钮不再起作用(但最大化/还原/关闭仍然有效)。唯一的方法是重新启动应用程序以使最小化功能再次起作用。如果我将FormStyle设置为其他任何值,则一切正常,但我的应用程序要求状态窗体在可见时始终保持在顶部。
为什么主窗体会自动恢复呢?有没有办法解决这个问题?
procedure ButtonClick(sender:TObject);
begin
//Gather some data
ShowStatusWindow; // sets status window to visible, does its work,
// then sets invisible. (Usually visible for about 10 seconds)
//Gather more data
Windows.SendMessage(self.Handle, WM_SETREDRAW, 0, 0); //Freeze the main form for
//flickerless drawing
// Handle everything that would cause a redraw
Windows.SendMessage(self.Handle, WM_SETREDRAW, 1, 0); // thaw form
RedrawWindow(self.Handle, 0, 0, RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
end;