Utilisation de sélecteurs pour fournir un comportement spécifique à la plate-forme et une vue des contrôles de sélection

De RAD Studio
Aller à : navigation, rechercher

Remonter à Conception d'applications FireMonkey


FireMonkey définit les sélecteurs pour doter le moteur spécifique à la plate-forme introduisant des contrôles de sélection de la vue et du comportement natifs sous différentes plates-formes.

Par exemple, Windows et macOS fournissent un contrôle calendrier de bureau standard pour la sélection de date :

Contrôle calendrier pour la sélection de date

iOS et Android fournissent quant à eux des contrôles spécifiques à la plate-forme pour la sélection de date :

iOS Android
Molettes pour la sélection de date FMX Android DateTimePicker.png

Par ailleurs, le sélecteur d'heure est pris en charge pour Android et iOS :

iOS Android
Time Picker iOS.png Time Picker Android.png

Dans le framework FireMonkey, vous pouvez utiliser des sélecteurs pour fournir des vues et des comportements de contrôles de sélection de date spécifiques à la plate-forme.

Le noyau du moteur des sélecteurs est déclaré dans l'unité FMX.Pickers. L'unité Pickers déclare l'interface IFMXPickerService introduisant le service de plate-forme (voir Services de plate-forme de FireMonkey). L'unité Pickers introduit également deux sélecteurs :

  • Sélecteur Date-Heure : un contrôle spécifique à la plate-forme, de type TCustomDateTimePicker, prenant en charge la sélection de date.
  • Sélecteur Liste : un contrôle spécifique à la plate-forme, de type TCustomListPicker, prenant en charge la sélection de chaînes dans une liste déroulante.

Ces sélecteurs peuvent être activés sur différentes plates-formes en utilisant le service IFMXPickerService.

Pour utiliser le service IFMXPickerService :

  1. Vérifiez que le service de plate-forme IFMXPickerService est pris en charge par la plate-forme en cours et récupère le pointeur PickerService sur l'objet service IFMXPickerService.
  2. Puis, créez une instance TCustomDateTimePicker en utilisant la méthode CreateDateTimePicker ou créez une instance de sélecteur TCustomListPicker en utilisant la méthode CreateListPicker :


Delphi :

     var
       PickerService: IFMXPickerService;
     begin
        if PlatformServices.Current.SupportsPlatformService(IFMXPickerService, Interface(PickerService))
     then
         FDateTimePicker := PickerService.CreateDateTimePicker;
         ...   // or
         FListPicker := PickerService.CreateListPicker;

C++ :

        _di_IFMXPickerService PickerService;
	TCustomDateTimePicker* FDateTimePicker;
	TCustomListPicker* FListPicker ;
	if (TPlatformServices::Current->SupportsPlatformService
		(__uuidof(IFMXPickerService))) {
		PickerService = TPlatformServices::Current->GetPlatformService
			(__uuidof(IFMXPickerService));
		FDateTimePicker = PickerService->CreateDateTimePicker();
                ... //or 
		FListPicker = PickerService->CreateListPicker();
      }
Voir Services de plate-forme FireMonkey pour plus d'informations sur l'utilisation des services de plate-forme. Voir le code de FMX.CalendarEdit.TCustomCalendarEdit.Create et FMX.ListBox.TCustomComboBox.Create pour plus d'exemples.
  1. Montrez le sélecteur requis en appelant les méthodes Show à partir des objets créés des classes TCustomDateTimePicker ou TCustomListPicker et en définissant les paramètres et les gestionnaires d'événement appropriés pour ces objets. Par exemple :

Delphi :

      FDateTimePicker: TCustomDateTimePicker;
      //...
      FDateTimePicker.Date := Date;
      FDateTimePicker.FirstDayOfWeek := TCalDayOfWeek.dowMonday;
      FDateTimePicker.ShowWeekNumbers := True;
      FDateTimePicker.TodayDefault := False;
      FDateTimePicker.Show;

C++ :

        TCustomDateTimePicker* FDateTimePicker;
        //...
	FDateTimePicker->Date = Date();
        FDateTimePicker->FirstDayOfWeek = TCalDayOfWeek(0);
	FDateTimePicker->ShowWeekNumbers = true;
	FDateTimePicker->TodayDefault = false;
	FDateTimePicker->Show();
Pour plus d'exemples, voir le code de FMX.CalendarEdit.Style.TStyledCalendarEdit.DropDown et FMX.ListBox.TCustomComboBox.DropDown.

Ces sélecteurs fournissent le comportement spécifique à la plate-forme des éléments de contrôle correspondants. Par exemple, FMX.ListBox.TComboBox sous Windows 8 centre une liste déroulante sur l'élément sélectionné :

Liste centrée pour la sélection de date

Pour implémenter une liste centrée de sélection de date pour une application Metropolis UI (Windows 8), procédez comme suit :

  1. Créez une Application FireMonkey Metropolis UI.
  2. Depuis la palette d'outils, ajoutez un TComboBox.
  3. Dans le Concepteur de fiches, sélectionnez votre TComboBox.
  4. Dans l'inspecteur d'objets, définissez la propriété FMX.ListBox.TComboBox.DropDownKind sur Native.
  5. Pour Windows 8, la propriété FMX.Styles.TStyleDescription doit indiquer la plate-forme [METROPOLISUI]. Pour garantir ce comportement :
    1. Dans le panneau Structure, double-cliquez sur l'élément StyleBook1 puis sélectionnez la propriété styleDescription.TStyleDescription.
    2. Dans l'inspecteur d'objets, la propriété PlatformTarget définit les plates-formes pour lesquelles ce style peut être implémenté. Vérifiez que PlatformTarget contient la plate-forme [METROPOLISUI].
      Si vous ne spécifiez pas la plate-forme [METROPOLISUI], le contrôle de sélection des données fonctionne comme une liste déroulante standard (Windows ou macOS) sans être centré sur l'élément sélectionné.

Voir aussi