IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Toolbar vertical (une colonne)


Sujet :

Composants FMX Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut Toolbar vertical (une colonne)
    Bonjour,

    je voudrais réaliser un Toolbar une colonne (ici le DataPicker en dessous du ColorPicker). Il y a bien la flèche à droite qui suggère que c'est possible...
    Nom : Capture d’écran 2018-07-23 à 09.56.00.png
Affichages : 402
Taille : 6,5 Ko
    ...mais je n'ai rien trouvé dans les propriétés ni dans un TToolBar, ni dans un TTMSFMXToolBar.
    J'ai placé le ColorPicker dans la Toolbar. La flèche à droite existe dès ce moment. Je place le DatePicker et il se place à droite du premier Picker. Comment procède-t-on ?

    J'essaye de reproduire cela (réalisé en Qt) :

    Non ouvert :
    Nom : Capture d’écran 2018-07-23 à 10.28.12.png
Affichages : 391
Taille : 4,1 Ko

    Ouvert :
    Nom : Capture d’écran 2018-07-23 à 10.28.42.png
Affichages : 386
Taille : 19,3 Ko

    Merci. Gilles
    Dernière modification par tourlourou ; 23/07/2018 à 19h27. Motif: orthographe

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 101
    Par défaut
    Je ne connais pas bien FMX mais avec un button contenant l'image de l'élément sélectionné, un petit bouton pour le DropDown et un PopupMenu, tu n'aurais pas ce que tu veux ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour votre aide.

    Je ne crois. Les éléments doivent être dynamiques notamment au niveau de la langue choisie.
    Nom : Capture d’écran 2018-07-23 à 10.37.18.png
Affichages : 383
Taille : 13,0 Ko
    En plus, ici, c'est ici une des premières versions Qt. Dans les suivantes, j'ai introduit des radiobuttons et par exemple quand un rectangle d'épaisseur 2, couleur verte est choisi, il est redessiné de manière dynamique dans le menu...

    En Qt, je suis parti d'un QToolButon que j'ai appelé QCustomToolButton qui sert de container dont j'ai défini 2 "propriétés" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     setPopupMode(QToolButton::MenuButtonPopup);
       setToolButtonStyle(Qt::ToolButtonIconOnly);
    J'accepte de dériver n'importe quoi mais j'ai besoin du bon container au départ. Déjà, je fais une effort... comme Embarcadero avec son Community. Je débute mes vacances donc je peux investir du temps... Bref, on commence par mettre quoi sur la page blanche ? Je n'ai pas besoin d'exactement la même présentation mais je veux disposer d'une qualité d'ergonomie équivalente.

    J'avais commencé avec un TListBox. Le problème est comment placer un objet de son choix dans un TListBox ? On y place normalement des ListBoxItem. L'idéal serait un composant acceptant des Items empilés verticalement et si j'en crois le concept Firemonkey, normalement, on pourrait mettre n'importe quoi dans chaque Item.

    Merci. Gilles
    Dernière modification par Invité ; 23/07/2018 à 11h08.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 101
    Par défaut
    Je ne vois pas en quoi des éléments dynamiques soient un problème,
    si c'est juste la traduction, suffit de l'appliquer sur le Menu
    si c'est un menu changeant selon le contexte, avant de faire le Popup suffit de jouer sur Visible ou de créer les menus à la volée, si le menu sont associés à une ImageList, c'est elle qu'il faut modifier pour refléter la couleur dans le Menu


    Je ne comprends pas 'un bon container au départ'
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bon alors voilà le début :
    Nom : Capture d’écran 2018-07-23 à 11.29.56.png
Affichages : 366
Taille : 15,9 Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     procedure TForm1.btDropDownClick(Sender: TObject);
    var
        FP: TPointF;
    begin
     //Initialize the coordinates to the origin of the button control.
      FP.X := 0;
      FP.Y := 0;
      //Transposes the coordinates in the context of the form.
      FP := btDropDown.LocalToAbsolute(FP);
      //Transposes the coordinates in the context of the screen.
      FP := ClientToScreen(FP);
      //Display the popup menu at the computed coordinates.
      PopupMenu1.Popup(FP.X, FP.Y);
    end;
    Pour moi le PopMenu1 est un container au même titre que mon QCustomToolButton.

    Maintenant, ce que je ne sais pas faire en Delphi (mais qui est usuel et facile en Qt):
    J'ai bien un MenuItem1. Je veux le "remplacer" par un TTMSFMXColorPicker ou par un TgroupBox ou n'importe quel autre élément visuel. Je fais comment ?
    Dans les forums, j'ai cherché en vain "delphi ColorPicker inside menuItem". Java le fait, Qt le fait et est-ce que Firemonkey le fait ? Sinon, je suis prêt à dériver quelque chose (un container) mais qu'est ce qui accepte en son seing des TColorPicker, des TGroup...et autre TVisualComponent et qui les aligne verticalement (histoire de simplifier le code) ? Bref quel est le custom de base ?
    Merci. Gilles
    Dernière modification par Invité ; 23/07/2018 à 11h54.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 663
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Pour ce qui est de la flèche droite d'une TMSFMXToolbar elle permet d'afficher des options d'un menu un peu particulier puisque spécifique à la toolbar CustomOptionMenu (voir les propriétés du composant)

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,
    Pour ce qui est de la flèche droite d'une TMSFMXToolbar elle permet d'afficher des options d'un menu un peu particulier puisque spécifique à la toolbar CustomOptionMenu (voir les propriétés du composant)
    Oui, je m'en suis rendu compte après. Manque de pratique.

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 663
    Billets dans le blog
    65
    Par défaut
    Le composant Popup (pas popupmenu) ne serait pas approprié ?
    Nom : Capture.PNG
Affichages : 434
Taille : 4,2 Ko
    Nom : Capture1.PNG
Affichages : 386
Taille : 4,1 Ko
    ici un truc sans "fioritures", du code car je te fais grâce des Livebindings
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm16.Switch1Switch(Sender: TObject);
    begin
    popup1.IsOpen:=Switch1.IsChecked;
    end;
     
    procedure TForm16.Switch2Switch(Sender: TObject);
    begin
    popup1.IsOpen:=Switch2.ISchecked;
    end;

  9. #9
    Invité
    Invité(e)
    Par défaut
    Argh... des livebindings !

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 663
    Billets dans le blog
    65
    Par défaut
    Ben, y en a pas dans ma proposition de toute façon cela n'aurait qu'enlevé le code

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bon, j'ai fait plusieurs approches : la meilleure est avec un TTMSFMXPanel comme container.
    Nom : MWSnap039 2018-07-23, 15_58_07.png
Affichages : 392
Taille : 5,5 Ko
    Ceci dit, il est difficile ensuite de régler les problèmes d'autosize. J'ai utilisé un FlowLayout mais franchement c'est insuffisant. Pour l'instant...

    Cordialement. Gilles

    PS : autre approche.J'en étais pas loin... et cela fonctionnait même sous mac OS.... Seulement encore une confusion avec VCL. J'aurais dû vérifier avant de me lancer dans l'appel de TPopupMenu.

    Nom : Capture d’écran 2018-07-23 à 19.48.05.png
Affichages : 368
Taille : 45,8 Ko
    • firemonkey >> Fermer lae TPopupMenu quand la souris le quitte >> Pas d"évènement... c'est bête. Donc pour fermer mon TPopupMenu contenu dans une TListBox il faut que je clique sur un Item du PopupMenu... J"ai essayé de le fermer à partir de la TListBox sans aucun succès. Seule proposition rencontrée sur le web : sous windows (uniquement) utiliser un timer et les messages dans onPopUp, seul évènement de la TPopupMenu. par exemple, fermer le TpopupMenu au bout de 10 secndes.

    Bon je crois que je vais arrêter les frais ici.
    Dernière modification par Invité ; 23/07/2018 à 19h57.

  12. #12
    Invité
    Invité(e)
    Par défaut Question
    Et pourquoi n'y a -il pas d'évènements onMousexxx ?

    A mon idée, parce que FMX est fait pour le mobile et pas pour un engin qui utilise une souris. On touche mais on ne survole pas. Et je n'en démords pas.

    Delphi est toujours Windows. Et Firemonkey est orienté "Mobile". Mac OS est donc le parent pauvre dans l'histoire. Ceci dit, effort fait, rien a réellement changé sur la planète Delphi. Quand ils décideront de faire du vrai multi-OS Desktop, je reviendrai faire un tour. Donc à bientôt.

    Cordialement. Gilles

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 663
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Citation Envoyé par Selzig Voir le message
    Et pourquoi n'y a -il pas d'évènements onMousexxx ?
    Oh, la mauvaise foi ! AMHA cela dépend beaucoup des composants donc de quel composant s'agit-il ? si l'on suit le fil de la discussion un TPopupmenu (il ne peut s'agir d'un TMSFMXpanel puisqu'ils existent) ? Dans ce cas en VCL non plus il n'y a pas ces évènements.


    la meilleure est avec un TTMSFMXPanel comme container.
    Bon maintenant si tu "triches" en utilisant des composants de TMS

    A mon idée, parce que FMX est fait pour le mobile et pas pour un engin qui utilise une souris. On touche mais on ne survole pas.
    moi c'est plutôt l'inverse, j'oublie toujours les taps
    Et Firemonkey est orienté "Mobile".
    et Windows (ou alors les nouveaux programmes que j'écris ne compte pas)
    Mac OS est donc le parent pauvre dans l'histoire
    Joker, je n'ai toujours pas de Mac , je me tâte toujours

    Serge

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Oh, la mauvaise foi.
    [...]

    Joker, je n'ai toujours pas de Mac , je me tâte toujours

    Serge
    OK pour la mauvaise foi... Enfin je ne le conçois pas comme cela. Toujours est-il que faute de savoir-faire (mais je ne demande qu'a apprendre... sans perdre des heures pour arriver à des compromis douteux), avec FMX je n'obtiens jamais la qualité, la finition de ce que je pourrais développer en Delphi VCL (sauf à utiliser WinApi et consort)... et dans ce cas, le code n'est plus portable sous macOS . Remarque que j'ai le problème en Lazarus que je n'utilise que pour mon plaisir, pas pour les mêmes raisons car franchement l'approche est réellement multi-OS-desktop mais par manque de composants "portés". J'utilise également Delphi pour mon plaisir, il me faut l'avouer, mais j'en attends beaucoup plus... et malheureusement, toutes mes tentatives aboutissent à une frustration et au même commentaire : mal adapté au développement pour mac OS... et de plus, sur un Mac, Delphi est très désopilant à l'utilisation. Mon "PC" est un Mac et j'utilise tous mes programmes sous macOS (TT, logiciels graphiques, accès aux BDD, messagerie, FTP,...

    Nom : Capture d’écran 2018-07-24 à 12.21.45.png
Affichages : 369
Taille : 143,8 Ko

    Mes Windows sont sous VirtualBox... Et là aussi, Delphi me frustre (comme Windev d'ailleurs mais je conteste moins dans ce cas, car Windev ne prétend pas compiler pour mac OS). L'IDE Delphi impose Windows. Donc un de mes écrans est sous Windows nécessairement. Comparé avec Qt et Lazarus, il n'y a pas photos puisque leur IDE respectif "tourne" nativement sur mon mac. Et à cause de Delphi, j'ai également 2 claviers (un Mac et un Windows, le windows relié au port USB du clavier Apple...). Bon, j'arrête là ma "rengaine" comme l'écrivent certains. Mais si tu n'as pas de clientèle Mac, n'en achète pas... pour FMX , mais pour toutes autres raisons, macOS est intéressant à découvrir.

    Bon je retourne développer avec quoi tu sais sur mon Mac. A bientôt. Gilles

    PS : au fait, j'avais pensé jouer avec la position de la souris : tu sais le simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if TPlatformServices.Current.SupportsPlatformService(IFMXMouseService) then
    begin
        MouseService := TPlatformServices.Current.GetPlatformService(IFMXMouseService) as IFMXMouseService;
        MousePos := MouseService.GetMousePos;
    end;
    Donc j'ai déclenché cela dans un timer et je ne savais pas que l'apparition d'un TPopupmenu bloquait le timer le temps de son affichage... Dommage. Encore un contournement inefficace. Là, je n'ai vraiment plus d'idée.
    Dernière modification par Invité ; 24/07/2018 à 17h30.

  15. #15
    Invité
    Invité(e)
    Par défaut
    OK. J'ai réglé le problème par contournement mais cela fonctionne correctement. C'est aussi ergonomique qu'en Qt et même plus esthétique. Donc nouvelle question sur les styles : beurk...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Orientation vertical de texte dans une colonne ?
    Par dauphinus dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 19/02/2008, 15h08
  2. Supprimer une colonne sous SQL Serveur 2000
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/07/2003, 12h24
  3. Check sur une colonne de table "en cours"
    Par in dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/07/2003, 09h47
  4. [PostGres] Suppresion d'une colonne.
    Par Gandalf24 dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/05/2003, 09h02
  5. [VB.NET] Insérer une colonne de CheckBox dans un DataGrid
    Par Manue.35 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/05/2003, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo