Mam kontrolę siatki na formularzu i kiedy zmiana rekordu bieżącego muszę załadować RTF przechowywane w DB. To działa dobrze w ogóle, ale kiedy przełączyć rekordy widzę zmiany kursora myszy do klepsydra i powrót do regularnego:Jak uniknąć kursora myszy klepsydry podczas wykonywania zapytania SQL z TFDQuery w Delphi XE5
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;
Jeśli komentarz „SelectQuery.Open;” wtedy kursor się nie przełącza. Przypuszczam, że powinna istnieć opcja w TFDQuery (lub połączeniu), ale nie mogę znaleźć niczego. Jakaś pomoc?
AKTUALIZACJA. Jak sugeruje TLama, umieściłem WaitCursor: TFDGUIxWaitCursor w moim formularzu (jedno miejsce dla APP) i używać go w ten sposób:
StoredCursor := WaitCursor.ScreenCursor;
WaitCursor.ScreenCursor := gcrNone;
try
// access DB with queries
finally
WaitCursor.ScreenCursor := StoredCursor;
end;
Update2: Jeszcze dwa sposoby, aby to zrobić.
- Set
TFDQuery.ResourceOptions.SilentMode=True
(najprostszym sposobem, aby wyłączyć kursor klepsydry dla konkretnych zapytań, nazwa nieruchomość jest zły, ale według dokumentu nie blokuje żadnych dialogów, jedynie zmiany kursora). - Ustaw globalną zmienną
FADGUIxSilentMode=True
z jednostki FireDAC.UI.Intf (nie najlepiej, ale prawdopodobnie najprostszy sposób, aby wyłączyć globalnie zmiany kursora w FireDAC).
muszę wyłączyć kursor zmienia się tylko w tym konkretnym miejsce, a nie dla całej aplikacji. Twoja pierwsza sugestia użycia TFDGUIxWaitCursor działa dobrze, dziękuję! Czy możesz to określić jako rozwiązanie? –
Tak, dobrze, jeszcze raz dziękuję! –
Nie ma za co! Szybszy byłeś z tym samym przykładem kodu :-) – TLama