我在表单上有网格控件,当前记录更改时我需要加载存储在DB中的RTF。它一般工作正常,但当我切换记录时,我可以看到鼠标光标更改为沙漏并返回常规:
function TComments.GetDocument(AID: integer; ADst: TStream):Boolean;
begin
try
SelectQuery.Close;
SelectQuery.Params.Clear;
SelectQuery.SQL.Text :=
'SELECT Dokument from Kommentarer ' +
'WHERE ID = :ID';
SelectQuery.ParamByName('ID').AsInteger := AID;
SelectQuery.Open;
Result := SelectQuery.RecordCount > 0;
if Result then
(SelectQuery.Fields[0] as TBLOBField).SaveToStream(ADst);
finally
SelectQuery.Close;
end;
end;
如果我评论" SelectQuery.Open;"然后光标没有切换。我想TFDQuery(或连接)应该有选项,但我找不到任何东西。有什么帮助吗?
更新。正如TLama建议的那样,我将WaitCursor:TFDGUIxWaitCursor放在我的表格(app的一个地方)并以这种方式使用它:
StoredCursor := WaitCursor.ScreenCursor;
WaitCursor.ScreenCursor := gcrNone;
try
// access DB with queries
finally
WaitCursor.ScreenCursor := StoredCursor;
end;
更新2:还有两种方法可以做到。
TFDQuery.ResourceOptions.SilentMode=True
(对于特定查询禁用沙漏光标的最简单方法,属性名称不好,但根据doc,它不会阻止任何对话框,只会更改光标)。FADGUIxSilentMode=True
(不是最好的,但可能是阻止FireDAC全局更改游标的最简单方法)。答案 0 :(得分:19)
this FAQ
set:
如何完全关闭SQL沙漏?
a)要完全禁用应用程序的等待光标,请使用 TFDGUIxWaitCursor与Provider ='控制台'。 '控制台' provider包含一个空的等待游标实现和等待 FireDAC将不再显示光标。如果鼠标光标仍然是 更改,然后检查是否只包含FireDAC.ConsoleUI.Wait单位 进入你的应用程序和FireDAC.VCLUI.Wait和FireDAC.FMXUI.Wait 不包括在内。请注意,您将无法转动 再次等待光标。
b)禁用等待光标,但能够启用它 再次使用以下代码:
FDWaitCursor1.ScreenCursor := gcrNone;
或
FDManager.ResourceOptions.SilentMode := True;
c)禁用等待光标和FireDAC对话框,但要有 能够在以后再次启用它们,设置FDManager.SilentMode 属性为真实。这将禁用所有等待游标和FireDAC 对话框,包括:
- 错误对话框
- 异步执行对话框
- 登录对话框
- 脚本进度对话框
将ResourceOptions.SilentMode设置为 True 仅禁用等待 光标。
由于您只想为该查询执行关闭该游标,请使用选项b并使用以下内容包装您的代码:
var
OldCursor: TFDGUIxScreenCursor;
begin
OldCursor := FDWaitCursor1.ScreenCursor;
FDWaitCursor1.ScreenCursor := gcrNone;
try
// your code goes here
finally
FDWaitCursor1.ScreenCursor := OldCursor;
end;
end;