Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

[Delphi Rio] Comment changer dimension d'un combobox


Sujet :

Composants FMX Delphi

  1. #1
    Membre extrêmement actif
    [Delphi Rio] Comment changer dimension d'un combobox
    Bonjour

    Comme d'habitude, une tâche qui se réalise en un 1/4 de seconde avec VCL devient les "12 travaux d'Hercule" avec FMX.

    Problème du jour: Comment modifier la hauteur d'un combobox, histoire d'avoir un objet un peu plus grand pour faciliter un clic au doigt sur une tablette?


    Je me suis référé à la discussion suivante:

    https://www.developpez.net/forums/d2...e-d-combo-box/


    Comme d'habitude, SergioMaster est de bon conseil Merci à lui!

    Je ne peux pas utiliser la solution "Style" parce que ma version Delphi Rio ne me permet plus d'éditer des Styles (voir mon billet sur le forum Delphi EDI), donc j'utilise la version via du code...

    Cela fonctionne, je peux modifier les éléments (couleur, fonte, etc.), sauf qu'il m'est impossible de modifier la hauteur du combobox!!! Je peux modifier le paramètre "combobox.itemheight" mais le combobox.height reste bloqué sur "32". Impossible donc de modifier à l'affichage la hauteur de l'objet combobox (ni par code, ni par une modification à l'aide de l'éditeur d'objet).

    Aurai-je oublié de modifier un paramètre qui bloquerait la possibilité de modifier la hauteur du combobox (j'ai un "DropDownKind = Custom")?

    Merci pour votre aide...

  2. #2
    Rédacteur/Modérateur

    Bonjour,
    Citation Envoyé par Anselme45 Voir le message

    https://www.developpez.net/forums/d2...e-d-combo-box/
    Comme d'habitude, SergioMaster est de bon conseil Merci à lui!
    Merci

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    donc j'utilise la version via du code...

    je vois que c'est donc la
    troisième solution : retrouver l'objet et modifier les propriétés du style, ça non plus je n'ai jamais essayé
    qui pose délicatesse

    Je ne peux pas utiliser la solution "Style" parce que ma version Delphi Rio ne me permet plus d'éditer des Styles (voir mon billet sur le forum Delphi EDI)
    J'irai y faire un tour
    le combobox.height reste bloqué sur "32". Impossible donc de modifier à l'affichage la hauteur de l'objet combobox (ni par code, ni par une modification à l'aide de l'éditeur d'objet).
    Aurai-je oublié de modifier un paramètre qui bloquerait la possibilité de modifier la hauteur du combobox (j'ai un "DropDownKind = Custom")?
    Le DropDownKind c'est pour les éléments, pas pour le combobox sensus stricto. mais je ne comprends pas pourquoi la hauteur ne puisse pas être changée la preuve

    Même si les flèches ne changent pas (pas normal, pb de style ?). UN moment, sans vérifier, j'ai pensé à une indication de platforme mais, non, il n'y a pas cette propriété ou bien j'ai mal cherché (j'utilise rarement celle-ci).
    Je séche, on parle bien de la hauteur de la box, pas du texte de l'item sélectionné ?
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre extrêmement actif
    Citation Envoyé par SergioMaster Voir le message
    ...
    Je séche, on parle bien de la hauteur de la box, pas du texte de l'item sélectionné ?
    Exact! Une petite image pour être clair:

    La zone qui affiche l'élément sélectionné (lettre A) a une hauteur bloquée sur la valeur "32"

    Les éléments du combobox (lettre B) peuvent être modifié (couleur, font, hauteur).



    Pour modifier par code le combobox, j'utilise le code suivant:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    procedure TForm1.StyleComboBoxItems(ComboBox:TComboBox; Family:string; Size:Single);
    var
     Item : TListBoxItem;
     i : Integer;
    begin
     ComboBox.ItemHeight:=Size+10;
     ComboBox.Height:=Size+10;    // DEBUG Ne fonctionne pas!!!
     
     ComboBox.DropDownKind:=TDropDownKind.Custom;
     
     Item:=TListBoxItem.Create(ComboBox);
     for i := 0 to ComboBox.Count-1 do
      begin
        Item:=ComboBox.ListItems[i];
        Item.Font.Family := Family;
        Item.Font.Size := Size;
        Item.TextSettings.FontColor:=TalphaColorRec.Green;
        Item.StyledSettings := Item.StyledSettings - [TStyledSetting.Family,TStyledSetting.Size,TStyledSetting.FontColor];
      end;
    end;

  4. #4
    Membre extrêmement actif
    Un style fourni par Embarcadero est appliqué à l'application.

    Dans ce style, j'ai trouvé un layout intitulé "comboboxstyle" qui a une propriété "FixedHeight=32"

    Quand je mets "FixedHeight=0" dans le style, je peux modifier la propriété "height" du combobox dans l'inspecteur d'objet et le combobox sur la form en développement prend la bonne dimension, mais sur l'appareil Android la hauteur du combobox reste inchangé?!?

    Quand je mets "FixedHeight=50" dans le style, la propriété "Height" du combobox dans l'inspecteur d'objet prend automatiquement la valeur 50 sans que l'on puisse modifier la valeur manuellement et sur l'appareil Android on obtient un combobox d'une hauteur de 50!


    Si on a la curiosité de regarder la doc officielle de Embarcadero pour comprendre le fonctionnement de cette propriété "FixedHeight" de l'objet "layout" (a remarquer que pour Tlayout l'inspecteur d'objet affiche la propriété "Height" mais pas "FixedHeight")

    Dans la doc locale obtenue par F1, on trouve la propriété "FixedHeight" avec pour seule explication la célèbre phrase qui explique tout "Embarcadero Technologies ne possède pas d'informations supplémentaires pour le moment. Veuillez nous aider à documenter cette rubrique en utilisant la page Discussion!"


    Dans la doc en ligne pour Delphi RIO, il n'y a plus de propriété "FixedHeight" mais on a une "FixedSize" avec bien sûr la phrase "Embarcadero Technologies ne possède pas d'informations supplémentaires pour le moment. Veuillez nous aider à documenter cette rubrique en utilisant la page Discussion!"



    Je préfère ne pas décrire ma pensée, je pourrai être grossier!!!

  5. #5
    Rédacteur/Modérateur

    Bonjour,

    Ce ne serait pas aussi bête que la propriété stylesettings (ôter size voire fontcolor et même peut-être style)
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  6. #6
    Membre extrêmement actif
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Ce ne serait pas aussi bête que la propriété stylesettings (ôter size voire fontcolor et même peut-être style)
    L'objet Combobox n'a pas de propriété "stylesettings" à l'inverse d'un listboxitem...

###raw>template_hook.ano_emploi###