作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个表单(下例中的 TBigForm),它允许操作一些复杂的数据并需要显示其他信息。我将此信息放入 fsStayOnTop 表单(示例中为 OnTopForm)中,以确保它始终可见,但可以在必要时移开。现在,当 TBigForm 中的某些用户操作显示模式表单时,它通常会隐藏在 OnTopForm 后面,这使得应用程序看起来卡住。我怎样才能避免这种情况? (搜索产生了很多很多的结果,但我无法从中提炼出解决方案。)
在我的真实应用程序中,有很多地方显示模式表单,因此我想避免更改所有这些调用。
示例:创建一个新的 VCL 应用程序,在 Form1 上放置一个 TButton,双击该按钮,然后将生成的 Button1Click 实现 stub 替换为以下内容:
type
TBigForm = class(TForm)
strict private
OnTopForm: TForm;
Button1: TButton;
procedure Button1Click(Sender: TObject);
protected
procedure DoHide; override;
procedure DoShow; override;
public
constructor Create(AOwner: TComponent); override;
end;
{ TBigForm }
procedure TBigForm.Button1Click(Sender: TObject);
begin
ShowMessage('Test');
end;
constructor TBigForm.Create(AOwner: TComponent);
begin
inherited CreateNew(AOwner);
Caption := 'Big form';
WindowState := wsMaximized;
Button1 := TButton.Create(Self);
Button1.Parent := Self;
Button1.Caption := 'Freeze!';
Button1.SetBounds(10, 10, 100, 100);
Button1.OnClick := Button1Click;
end;
procedure TBigForm.DoHide;
begin
OnTopForm.Free;
inherited DoHide;
end;
procedure TBigForm.DoShow;
begin
inherited DoShow;
OnTopForm := TForm.Create(Self);
OnTopForm.Caption := 'Important information';
OnTopForm.BorderStyle := bsToolWindow;
OnTopForm.FormStyle := fsStayOnTop;
OnTopForm.Position := poScreenCenter;
OnTopForm.Show;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
f: TBigForm;
begin
f := TBigForm.Create(nil);
try
f.ShowModal;
finally
f.Free;
end;
end;
启动应用程序,单击“Button1”,然后单击“卡住!”。
(顺便说一句:我们使用 D2007。)
最佳答案
在将另一个表单显示为模态之前暂时更改 OnTopform 的 FormStyle:
procedure TBigForm.Button1Click(Sender: TObject);
begin
OnTopForm.FormStyle := fsNormal;
ShowMessage('Test');
OnTopForm.FormStyle := fsStayOnTop;
end;
它应该可以满足您的需求...
关于delphi - fsStayOnTop 表单隐藏的模态表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408594/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!