Questions relatives à l'interface utilisateur (FireDAC)

De RAD Studio
Aller à : navigation, rechercher

Remonter à FAQ (FireDAC)

Cette rubrique liste des questions et réponses relatives à l'interface utilisateur de FireDAC.

Q1 : Comment puis-je afficher la boîte de dialogue "L'application est occupée" pendant une requête d'exécution longue ?

R : Définissez FDQuery.ResourceOptions.CmdExecMode sur amCancelDialog, déposez TFDGUIxAsyncExecuteDialog sur une fiche, puis préparez un test avec une requête d'exécution longue et exécutez-la.

Pendant l'exécution de la requête, FireDAC affiche une boîte de dialogue intitulée "Attendez" et contenant le bouton "Annuler". Si l'utilisateur clique sur le bouton, l'exécution de la requête est annulée.

Q2 : Comment puis-je localiser FDGUIxLoginDialog ?

R : Utilisez un code semblable à :

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

Vous pouvez également ouvrir l'unité FireDAC.Stan.ResStrs, trouver une section "Dialog captions" et traduire les éléments.

Q3 : Comment puis-je gérer les erreurs à l'aide de TFDGUIxErrorDialog ?

R : Il vous suffit de déposer un composant TFDGUIxErrorDialog sur votre fiche ou votre module de données. Ensuite, pour les exceptions non gérées EFDDBEngineException, la boîte de dialogue d’erreur FireDAC s'affiche. Pour y parvenir, FireDAC intercepte l'événement Application.OnException.

Q4 : Comment puis-je désactiver complètement le sablier SQL ?

R : a) Pour désactiver complètement le curseur d'attente d'une application, utilisez TFDGUIxWaitCursor avec Provider = 'Console'. Comme le fournisseur 'Console' contient une implémentation de curseur d'attente vide, FireDAC n'affichera plus le curseur d'attente. Si le curseur de la souris change toujours, vérifiez que seule l'unité FireDAC.ConsoleUI.Wait est incluse dans votre application et que FireDAC.VCLUI.Wait et FireDAC.FMXUI.Wait ne sont pas incluses. Sachez toutefois que vous ne pourrez plus réactiver le curseur.

b) Pour désactiver le curseur d'attente tout en conservant la possibilité de le réactiver ultérieurement, utilisez un code semblable à :

 FDWaitCursor1.ScreenCursor := gcrNone;

ou

 FDManager.ResourceOptions.SilentMode := True;

c) Pour désactiver le curseur d'attente et les boîtes de dialogue FireDAC tout en conservant la possibilité de les réactiver ultérieurement, définissez la propriété FDManager.SilentMode sur True. Cette action désactive tous les curseurs d'attente et boîtes de dialogue FireDAC, notamment :

  • La boîte de dialogue d’erreur
  • La boîte de dialogue d'exécution asynchrone
  • La boîte de dialogue de connexion
  • La boîte de dialogue de progression du script

Le fait de définir ResourceOptions.SilentMode sur True désactive uniquement les curseurs d'attente.

Q5 : Quand j'applique un filtre à un ensemble de données, la barre de défilement de la grille ne change pas. Pourquoi ?

Q : J'ai une grille connectée à FDDataSet. Quand je filtre les enregistrements comme ceci :

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

tout se passe bien, mais la barre de défilement ne change pas, comme si toutes les lignes étaient affichées. Cela pose problème quand, par exemple, un grille comporte 500 lignes dont seulement 3 filtrées, mais que le curseur de la barre de défilement reste très petit et que vous pouvez très peu le déplacer (comme entre la première et la troisième ligne des 500). Avez-vous une solution ?

R : Utilisez un code semblable à :

 FDQuery1.FetchOptions.RecordCountMode := cmVisible;

Q6 : Après l'actualisation d'un ensemble de données, un DBGrid avec plusieurs lignes sélectionnées perd la sélection. Comment puis-je conserver la sélection ?

R : Les signets FireDAC sont invalidés après un appel à Refresh. Vous pouvez enregistrer les valeurs PK des enregistrements sélectionnés avant l'appel à Refresh, puis resélectionner ces enregistrements en utilisant Locate.