FMX.Dialogs.InputQuery

De RAD Studio API Documentation
Aller à : navigation, rechercher

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 */;

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 ou ADefaultValues 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 de APrompts.

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);
C++ :
  • 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

Voir aussi