Auswahlfenster zur Bereitstellung von plattformspezifischem Verhalten und zur Anzeige von Auswahlsteuerelementen

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu FireMonkey-Anwendungsdesign


FireMonkey definiert Auswahlfenster, um das plattformspezifische Modul, das Auswahlsteuerelemente bereitstellt, mit der nativen Anzeige und nativem Verhalten für die jeweilige Plattform auszustatten.

Beispielsweise stellen Windows und Mac OS X ein Standardkalender-Steuerelement für den Desktop zur Datumsauswahl bereit:

Kalender-Steuerelement für die Datumsauswahl

iOS und Android dagegen stellen plattformspezifische Steuerelemente zur Datumsauswahl bereit:

iOS Android
Drehbare Räder für die Datumsauswahl FMX Android DateTimePicker.png

Außerdem wird das Uhrzeitauswahlfenster für Android und iOS unterstützt:

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

Im FireMonkey-Framework können Sie mit Auswahlfenstern die plattformspezifische Anzeige und das plattformspezifische Verhalten für Steuerelemente zur Datumauswahl bereitstellen.

Das Kernstück des Auswahlfenstermoduls wird in der Unit FMX.Pickers deklariert. In der Unit Pickers ist das Interface IFMXPickerService deklariert, das den sogenannten Plattformdienst einführt (siehe FireMonkey-Plattformdienste). Die Unit Pickers führt zudem zwei Auswahlfenster ein:

  • Datum/Uhrzeit-Auswahlfenster: Das plattformspezifische Steuerelement mit dem Typ TCustomDateTimePicker zur Auswahl eines Datums.
  • Listen-Auswahlfenster: Das plattformspezifische Steuerelement mit dem Typ TCustomListPicker zur Auswahl von Strings aus einer Dropdown-Liste.

Diese Auswahlfenster können auf unterschiedlichen Plattformen mit dem Dienst IFMXPickerService aktiviert werden.

So verwenden Sie den IFMXPickerService-Dienst:

  1. Überprüfen Sie, ob der IFMXPickerService-Plattformdienst von der aktuellen Plattform unterstützt wird und den Zeiger PickerService auf das Dienstobjekt IFMXPickerService abruft.
  2. Erstellen Sie entweder mit der Methode CreateDateTimePicker eine TCustomDateTimePicker-Instanz, oder erstellen Sie mit der Methode CreateListPicker eine Instanz des TCustomListPicker-Auswahlfensters:

Object Pascal:

     var
       PickerService: [[lib_de:FMX.Pickers.IFMXPickerService|IFMXPickerService]];
     begin
        if PlatformServices.Current.[[lib_de:FMX.Platform.TPlatformServices.SupportsPlatformService|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();
      }
Weitere Informationen zur Verwendung von Plattformdiensten finden Sie unter FireMonkey-Plattformdienste. Weitere Beispiele finden Sie im Code von FMX.CalendarEdit.TCustomCalendarEdit.Create und FMX.ListBox.TCustomComboBox.Create.
  1. Zeigen Sie das erforderliche Auswahlfenster durch Aufruf der Show-Methoden aus den erstellten Objekten der Klassen TCustomDateTimePicker oder TCustomListPicker an, und legen Sie die entsprechenden Parameter und Ereignisbehandlungsroutinen für diese Objekte fest. Zum Beispiel:

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();
Weitere Beispiele finden Sie im Code von FMX.CalendarEdit.Style.TStyledCalendarEdit.DropDown und FMX.ListBox.TCustomComboBox.DropDown.

Diese Auswahlfenster stellen das plattformspezifische Verhalten der zugehörigen Steuerelemente bereit. Unter Windows 8 wird mit FMX.ListBox.TComboBox beispielsweise eine Dropdown-Liste auf dem ausgewählten Element zentriert:

Zentrierte Liste für die Datenauswahl

Führen Sie die folgenden Schritte aus, um eine zentrierte Datumsauswahlliste für eine Metropolis-UI-Anwendung (Windows 8) zu implementieren:

  1. Erstellen Sie eine FireMonkey-Anwendung für die Metropolis-UI.
  2. Fügen Sie aus der Tool-Palette eine TComboBox hinzu.
  3. Wählen Sie im Formular-Designer die TComboBox-Komponente aus.
  4. Setzen Sie im Objektinspektor die Eigenschaft FMX.ListBox.TComboBox.DropDownKind auf Native.
  5. Unter Windows 8 muss die Eigenschaft FMX.Styles.TStyleDescription die Plattform [METROPOLISUI] enthalten. Führen Sie dazu Folgendes aus:
    1. Doppelklicken Sie im Strukturfenster auf den Eintrag StyleBook1, und wählen Sie dann die Eigenschaft styleDescription.TStyleDescription aus.
    2. Im Objektinspektor definiert die Eigenschaft PlatformTarget Plattformen, für die dieser Stil implementiert werden kann. Überprüfen Sie, ob PlatformTarget die Plattform [METROPOLISUI] enthält.
      Wenn Sie die Plattform [METROPOLISUI] nicht angeben, arbeitet das Steuerelement für die Datenauswahl als Standard-Dropdown-Liste (Windows oder Mac OS X) ohne Zentrieren des ausgewählten Elements.

Siehe auch