我在表单上有网格控件,当前记录更改时我需要加载存储在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;
Run Code Online (Sandbox Code Playgroud)
如果我发表评论"SelectQuery.Open;" 那么光标不会切换.我想TFDQuery(或连接)应该有选项,但我找不到任何东西.有帮助吗?
UPDATE.正如TLama建议的那样,我将WaitCursor:TFDGUIxWaitCursor放在我的表单(app的一个地方)并以这种方式使用它:
StoredCursor := WaitCursor.ScreenCursor;
WaitCursor.ScreenCursor := gcrNone;
try
// access DB with queries
finally
WaitCursor.ScreenCursor := StoredCursor;
end;
Run Code Online (Sandbox Code Playgroud)
更新2:还有两种方法.
TFDQuery.ResourceOptions.SilentMode=True(对于特定查询禁用沙漏光标的最简单方法,属性名称不好,但根据doc它不阻止任何对话框,只更改光标).FADGUIxSilentMode=True从单元FireDAC.UI.Intf 设置全局变量(不是最好的,但可能是最简单的方法来为FireDAC全局禁用游标更改).TLa*_*ama 19
这包括在this FAQ集合中:
如何完全关闭SQL沙漏?
a)要完全禁用应用程序的等待光标,请使用 带有Provider ='Console'的TFDGUIxWaitCursor.'Console'提供程序包含一个空的等待游标实现,FireDAC将不再显示等待游标.如果鼠标光标仍在更改,请检查应用程序中是否包含FireDAC.ConsoleUI.Wait单元,并且不包括FireDAC.VCLUI.Wait和FireDAC.FMXUI.Wait.请注意,您无法再次打开等待光标.
b)要禁用等待光标,但要能够在以后再次启用它,请使用如下代码:
Run Code Online (Sandbox Code Playgroud)FDWaitCursor1.ScreenCursor := gcrNone;要么
Run Code Online (Sandbox Code Playgroud)FDManager.ResourceOptions.SilentMode := True;c)要禁用等待光标和FireDAC对话框,但要能够在以后再次启用它们,请将FDManager.SilentMode 属性设置为True.这将禁用所有等待游标和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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6249 次 |
| 最近记录: |