FMX.Dialogs.InputQuery
Delphi
function InputQuery(const ACaption: string; const APrompts: array of string; var AValues: array of string;
const ACloseQueryFunc: TInputCloseQueryFunc): Boolean;
function InputQuery(const ACaption: string; const APrompts: array of string; var AValues: array of string;
const ACloseQueryEvent: TInputCloseQueryEvent; const AContext: TObject): Boolean;
function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean;
procedure InputQuery(const ACaption: string; const APrompts: array of string; const ADefaultValues: array of string;
const ACloseQueryProc: TInputCloseQueryProc);
procedure InputQuery(const ACaption: string; const APrompts: array of string; const ADefaultValues: array of string;
const ACloseQueryEvent: TInputCloseQueryWithResultEvent; const AContext: TObject);
procedure InputQuery(const ACaption, APrompt, ADefaultValue: string; const ACloseBoxProc: TInputCloseBoxProc);
procedure InputQuery(const ACaption, APrompt, ADefaultValue: string;
const ACloseQueryEvent: TInputCloseQueryWithResultEvent; const AContext: TObject); overload;
C++
extern DELPHI_PACKAGE bool __fastcall InputQuery _DEPRECATED_ATTRIBUTE1("Use FMX.DialogService methods") (const System::UnicodeString ACaption, const System::UnicodeString *APrompts, const int APrompts_High, System::UnicodeString *AValues, const int AValues_High, const _di_TInputCloseQueryFunc ACloseQueryFunc = _di_TInputCloseQueryFunc())/* overload */;
Sommaire
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
function | public | FMX.Dialogs.pas FMX.Dialogs.hpp |
FMX.Dialogs | FMX.Dialogs |
Description
Modèle:Obsolète Affiche une boîte de dialogue contenant plusieurs champs de saisie.
Utilisez InputQuery pour afficher une boîte de dialogue contenant un nombre de contrôles TEdit égal au nombre de chaînes dans APrompts
.
InputQuery reçoit les paramètres suivants :
ACaption
représente le titre de la boîte de dialogue.APrompts
représente les libellés situés sur le côté gauche des contrôles TEdit. Pour qu'un champ d'un dialogue apparaisse comme un champ masqué (dans le cas d'un champ de saisie de mot de passe, par exemple), utilisez un indicateur devant le libellé du champ.AValues
ouADefaultValues
sont les valeurs texte par défaut des contrôles TEdit.ACloseQueryProc
est une méthode anonyme exécutée par InputQuery à la fermeture de la boîte de dialogue.
- Remarque : La longueur de
AValues
doit être supérieure ou égale à la longueur deAPrompts
.
Si l'utilisateur clique sur le bouton OK, InputQuery renvoie True
; dans le cas contraire, InputQuery renvoie False
. Si vous fournissez le paramètre ACloseQueryProc
, InputQuery ne renvoie aucune valeur ; l'argument AResult
transmis à la méthode ACloseQueryProc
détermine ce sur quoi l'utilisateur a cliqué.
Les valeurs entrées dans les champs de saisie de la boîte de dialogue seront stockées dans AValues
. Si vous fournissez le paramètre ACloseQueryProc
, InputQuery transmet les valeurs à la méthode ACloseQueryProc
à la place.
Si un appel à InputQuery n'inclut pas le paramètre ACloseQueryProc
, l'appel bloquera sur toutes les plates-formes. Ce qui signifie que InputQuery ne renvoie rien tant que la boîte de dialogue ne se ferme pas. Android ne prend pas en charge ces appels bloquants. Vous pouvez uniquement utiliser InputQuery sur Android si vous fournissez le paramètre ACloseQueryProc
.
Lorsque vous appelez InputQuery sur des plates-formes de bureau, les appels sont toujours bloquants, qu'ils incluent ou non le paramètre ACloseQueryProc
; sur les plates-formes mobiles, tout code placé après un appel à InputQuery est exécuté avant la fermeture de la boîte de dialogue. Si vous devez exécuter du code après la fermeture de votre boîte de dialogue, utilisez le paramètre ACloseQueryProc
de InputQuery pour définir une méthode anonyme qui exécute ce code. Voir :
Masquer un champ
Voici un extrait de code qui affiche une boîte de dialogue appelée "Login" et comportant deux champs (un champ "Username" et un champ masqué pour la saisie du mot de passe).
Delphi :
- Dans Delphi, l'indicateur de champ masqué est le "#1" placé devant le libellé de champ.
InputQuery( 'Login', ['Username', #1'Password:'], ['', ''],
procedure(const AResult: TModalResult; const AValues: array of string)
begin
end);
- Ajoutez la définition suivante après la définition de TForm1 (dans le fichier .h de votre unité) :
typedef void __fastcall(__closure * TInputCloseQueryProcEvent)
(const System::Uitypes::TModalResult AResult,
System::UnicodeString const *AValues, const int AValues_High);
- Ajoutez la définition de classe suivante (dans le fichier .h de votre unité, après le type défini précédemment) :
class InputQueryMethod : public TCppInterfacedObject<TInputCloseQueryProc>
{
private:
TInputCloseQueryProcEvent Event;
public:
InputQueryMethod(TInputCloseQueryProcEvent _Event) {
Event = _Event;
}
void __fastcall Invoke(const System::Uitypes::TModalResult AResult,
System::UnicodeString const *AValues, const int AValues_High) {
Event(AResult, AValues, AValues_High);
}
};
- Ajoutez la déclaration suivante sous la section private de la fiche (dans le fichier .h de votre unité) :
private: //User declarations
void __fastcall OnInputQuery_Close
(const System::Uitypes::TModalResult AResult,
System::UnicodeString const *AValues, const int AValues_High);
- Ajoutez le code suivant (dans le fichier .cpp de votre unité) :
void __fastcall TForm1::OnInputQuery_Close(const System::Uitypes::TModalResult AResult,
System::UnicodeString const *AValues, const int AValues_High) {
}
- Vous pouvez maintenant utiliser l'extrait de code suivant :
- Dans C++, l'indicateur de champ masqué est le "\1" placé au début du libellé de champ.
String caption = "Login";
String Prompts[2];
Prompts[0] = "Username";
Prompts[1] = "\1Password";
String Defaults[2];
Defaults[1] = "";
Defaults[0] = "";
_di_TInputCloseQueryProc Met = new InputQueryMethod(&OnInputQuery_Close);
InputQuery(caption, Prompts, sizeof(Prompts)/sizeof(Prompts[0]) - 1, Defaults, sizeof(Defaults)/sizeof(Defaults[0]) - 1, (TInputCloseQueryProc *)Met);
Prise en charge de la plate-forme
Le tableau suivant récapitule la prise en charge des appels à InputQuery sur les différentes plates-formes et indique si ces appels sont bloquants ou non bloquants :
Plate-forme | Sans ACloseQueryProc
|
Avec ACloseQueryProc
|
---|---|---|
Windows | Bloquant | Bloquant |
OS X | Bloquant | Bloquant |
IOS | Bloquant | Non bloquant |
Android | Non bloquant |