Fragen zur Benutzeroberfläche (FireDAC)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu FAQ (FireDAC)

Dieses Thema enthält eine Liste mit Fragen und Antworten zur Benutzeroberfläche von FireDAC.

F1: Wie kann ich das Dialogfeld "Anwendung ist ausgelastet" anzeigen, wenn eine länger dauernde Abfrage ausgeführt wird?

A: Setzen Sie FDQuery.ResourceOptions.CmdExecMode auf amCancelDialog, legen Sie eine TFDGUIxAsyncExecuteDialog-Komponente auf einem Formular ab, bereiten Sie dann einen Test mit einer länger dauernde Abfrage vor, und führen Sie sie aus.

Während die Abfrage ausgeführt wird, zeigt FireDAC ein Dialogfeld mit dem Text "Warten" und der Schaltfläche "Abbrechen" an. Wenn der Benutzer auf die Schaltfläche klickt, wird die Ausführung der Abfrage abgebrochen.

F2: Wie kann ich FDGUIxLoginDialog lokalisieren?

A: Verwenden Sie Code wie den folgenden:

 with FDGUIxLoginDialog1.VisibleItems do begin
   Clear;
   Add('User_Name=<local phrase>');
   Add('Password=<local phrase>');
 end;

Sie können auch die Unit FireDAC.Stan.ResStrs öffnen, den Abschnitt "Dialog captions" suchen und die Einträge übersetzen.

F3: Wie kann ich Fehler mit TFDGUIxErrorDialog behandeln?

A: Legen Sie einfach die Komponente TFDGUIxErrorDialog auf Ihrem Formular oder Datenmodul ab. Dann wird für unbehandelte EFDDBEngineException-Exceptions das FireDAC-Fehler-Dialogfeld angezeigt. Dazu fängt FireDAC das Ereignis TApplication.OnException ab.

F4: Wie kann ich die SQL-Sanduhr deaktivieren?

A: a) Verwenden Sie TFDGUIxWaitCursor mit Provider = 'Console', um den Wartecursor für eine Anwendung komplett zu deaktivieren. Der "Console"-Provider enthält eine leere Implementierung des Wartecursors, und der Wartecursor wird von FireDAC nicht mehr angezeigt. Wenn der Mauscursor sich weiterhin ändert, stellen Sie sicher, dass in Ihre Anwendung nur die Unit FireDAC.ConsoleUI.Wait und nicht die Units FireDAC.VCLUI.Wait und FireDAC.FMXUI.Wait einbezogen ist. Beachten Sie, dass Sie dann nicht die Möglichkeit haben, den Wartecursor wieder zu aktivieren.

b) Um den Wartecursor zu deaktivieren, aber die Möglichkeit beizubehalten, ihn später wieder zu aktivieren, verwenden Sie Code wie den folgenden:

 FDWaitCursor1.ScreenCursor := gcrNone;

oder

 FDManager.ResourceOptions.SilentMode := True;

c) Um den Wartecursor und FireDAC-Dialogfelder zu deaktivieren, aber die Möglichkeit beizubehalten, sie später wieder zu aktivieren, setzen Sie die Eigenschaft FDManager.SilentMode auf True. Dadurch werden alle Wartecursor und FireDAC-Dialogfelder, einschließlich der folgenden, deaktiviert:

  • Das Fehler-Dialogfeld
  • Das Dialogfeld für die asynchrone Ausführung
  • Das Anmelde-Dialogfeld
  • Das Dialogfeld für den Skriptfortschritt

Durch Setzen von ResourceOptions.SilentMode auf True werden nur Wartecursor deaktiviert.

F5: Beim Anwenden eines Filters für eine Datenmenge ändert sich die Bildlaufleiste der Tabelle nicht. Warum ist das so?

F: Ich habe eine mit FDDataSet verbundene Tabelle. Wenn ich die Datensätze wie folgt filtere:

 Grid.DataSource.Dataset.Filter := 'id_virtual_channel in (1, 2, 3)'

ist alles in Ordnung, nur die Bildlaufleiste ändert sich nicht, so als ob alle Zeilen angezeigt würden. Es sieht nicht gut aus, wenn beispielsweise die vollständige Tabelle 500 Zeilen und die gefilterte nur 3 hat, aber das Bildlauffeld ganz klein bleibt und man es nur ganz wenig verschieben kann (wie von der ersten zur dritten Zeile bei 500 Zeilen). Gibt es dafür eine Lösung?

A: Verwenden Sie Code wie den folgenden:

 FDQuery1.FetchOptions.RecordCountMode := cmVisible;

F6: Nach dem Aktualisieren einer Datenmenge wird in einem DBGrid mit mehreren ausgewählten Zeilen die Auswahl nicht mehr angezeigt. Wie kann ich die Auswahl beibehalten?

A: FireDAC-Positionsmarken werden nach dem Aufruf von Refresh ungültig. Sie können Primärschlüsselwerte der ausgewählten Datensätze vor dem Aufruf von Refresh speichern und dann diese Datensätze mit Locate erneut auswählen.