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

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Conception d'applications FireMonkey

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

Par exemple, Windows et Mac OS X 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

Le sélecteur d'heure est aussi supporté sur 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, qui supporte la sélection de date.
  • Sélecteur Liste : un contrôle spécifique à la plate-forme, de type TCustomListPicker, qui supporte 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 supporté 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 :

Object Pascal :

     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 de FireMonkey pour de plus amples 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 :

Object Pascal :

      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. A partir de 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 des 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 Mac OS X) sans être centré sur l'élément sélectionné.

Voir aussi