由于这是我第一次使用手势和GestureManager,所以我面临着应用程序运行延迟原因未知的非常陌生的情况。(VCL型应用程序)
似乎,当我将TGestureManager应用于表单的Touch.GestureManager属性时,当第一次调用该表单时,应用程序冻结/延迟约为5秒。即使根本没有启用(检查)手势。一旦我将Touch.GestureManager属性从表单中移除,表单就会立即以Form.Show事件显示。应用程序在启动时创建所有的表单,所以在我调用Form.Show事件时表单已经创建了。
表单本身相当重(FullHD分辨率大小,上面放置了相当多的组件.),但是如果没有使用GestureManager,则不会显示任何速度问题。
到目前为止,我只能在网上找到一个关于这个问题的话题,但答案并没有真正的帮助(建议在PC上打开"Tablet“选项。)这件事已经做好了
干杯
编辑:上的“较轻”形式,(较少的组件),延迟稍微低一点,仍然在2-3秒左右.
编辑2-代码
创建延迟的示例:
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.show;
end;
end.调用form2 (包含20个TAdvGlassButton对象( TMS组件包的一部分)的干净表单)和GestureManager (分配给Form2.Touch.GestureManager属性)。当Button1被按下时,这会造成大约2秒的延迟(并且应该显示Form2 );
发布于 2015-01-23 16:05:44
我想我只是想出了我自己对“为什么”延迟出现的问题的答案。
现在,“如何解决这个问题”,如果有人认为.
至于“为什么”被认为.:
看起来像TMS组件(我可以为它们确认)自动接受父表单的Touch属性!因此,在我的第一眼看,它似乎是所有的形式和控制工作,仅仅是因为按钮没有真正集中在任何时候,但事实并非如此!除非加以制止,否则这些手势不应该在它们身上起作用。因为他们是,我想每个元素都被分配了触摸属性。
因此,这导致表单上有大量的元素,在第一次显示表单时,所有元素都具有Touch属性,这显然导致了我所经历的延迟。
在窗体上和所有控件后面创建一个面板实际上看起来并没有什么变化,但它确实是-> --表单是立即可见的,手势只在面板(背景)可见的区域工作(遗憾的是,让它们在按钮上工作会很好,但不是因为这么多的延迟!),这在某种程度上符合我的需要。
现在,为什么TMS组件自动获取表单的属性是一个很好的问题,以及如何禁用该函数……
https://stackoverflow.com/questions/28109358
复制相似问题