如何解决如何在将框架加载到 TabItem 之前和期间显示矩形?
我的项目是使用 Delphi 的 Android 平台。 该项目包括:
-
主要形式:它包含
代码是这样的:
uses ...,Unit1;
...
private
fFrame1: TFrame1;
...
procedure TMainForm.Button1Click(Sender: TObject);
begin
if fFrame1 = nil then
begin
Rectangle1.Visible := True;
fFrame1 := TFrame1.Create(Application);
fFrame1.Parent := TabItem2;
Rectangle1.Visible := False;
end;
TabControl1.ActiveTab := TabItem2;
end;
Frame1 需要一些时间才能加载到 TabItem2,但一切都已正确完成.. 这里的问题是在加载 Frame1 之前或期间不显示矩形。 我试了很多次,但矩形总是隐藏起来,没有出现。
任何帮助..
解决方法
这是我的建议,包括用于测试的代码。这些额外步骤的目的是将按钮单击(和等待消息的显示)与耗时的帧创建断开连接。因此,应用程序有机会在这些事件之间显示等待消息。
首先,在您的表单上放置一个 try:
comments = WebDriverWait(driver,20).until(
EC.presence_of_all_elements_located((By.XPATH,relativeXpathToReportComments)))
# some code to be executed if the elements is found
except:
print("could not find/get comments on comment page")
。您已经有了带有标签的矩形和其他组件。在我的测试中,我创建了一个 TTimer
来模拟帧创建的延迟。
然后是 procedure SpendSomeTime(ms: integer);
:
Button1Click()
延迟模拟程序
procedure TForm36.Button1Click(Sender: TObject);
begin
Label1.Text := 'Please wait ...';
Rectangle1.Visible := True; // show the please wait ... msg
Timer1.Enabled := True; // the Timer1.Interval is preset to 1 ms.
end;
还有 procedure TForm36.SpendSomeTime(ms: Integer);
const
ms1: double = 1 / 24 / 60 / 60 / 1000;
var
t: TTime;
begin
t := now + ms1 * ms ;
repeat
until now >= t;
end;
事件,首先禁用计时器,因为我们只想要一个一次性事件
OnTimer
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。