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 :

[TStatusBar] Comment ajouter des composants à un TStatusBar


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    527
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 527
    Par défaut [TStatusBar] Comment ajouter des composants à un TStatusBar
    Bonjour,

    Je voudrais utiliser un TSatusBar sur lequel j'ajouterais différents composants (TPanel, Tlabel,etc..).
    Le problème, c'est que je n'arrive pas à les lier à ma StatusBar.
    Je m'explique:
    Je sélectionne ma barre en cliquant dessus, puis je fais glisser un composant à partir de la palette. Il a bien l'air d'être sur la barre de statut, mais si j'essaie de le déplacer, il "sort" de la barre. Idem à l'exécution, si je redimensionne l'écran, le composant ne reste pas dans la barre.

    si je sélectionne ma barre de status puis que j'appuie sur F6 pour ajouter le composant, j'ai le même problème. Je n'ai trouvé aucune info sur le docwiki de RAD Studio.
    Quelqu'un peut-il m'aider?

  2. #2
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    527
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 527
    Par défaut
    Je viens de trouver une méthode de bourrin
    J'édite la Form au format texte et j'intègre manuellement les composant dans la déclaration de la statusbar.
    C'est pas terrible alors j'attends une éventuelle solution avant de clore le sujet

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 001
    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 001
    Par défaut
    Tu peux aussi sans modifier la XFM, poser tes composants sur la TForm et change leur Parent durant le OnCreate !

    En VCL, on faisant cela en calant sur les dimensions des Panels[] : Jauge (gauge) dans une TStatusBar
    Il n'y a pas de TStatusPanel en FMX ???

    Ou même les créer totalement à la volée pour éviter un jour un mauvaise surprise de plantage de la XFM
    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

  4. #4
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    527
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 527
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Tu peux aussi sans modifier la XFM, poser tes composants sur la TForm et change leur Parent durant le OnCreate !
    Oui, j'y avais pensé mais pour ajuster les positions des composants entre eux, c'est pas terrible de le faire à l'aveugle. ça risque de prendre du temps pour tout aligner en ne voyant le résultat qu'à l'exécution.

    Citation Envoyé par ShaiLeTroll Voir le message
    Il n'y a pas de TStatusPanel en FMX ???
    Non, j'ai été sidéré de voir ça. En fait, sur Firemonkey la TStatusBar n'est rien d'autre qu'un container. On y met tout et n'importe quoi si ça nous chante (et si on y arrive)

  5. #5
    Membre extrêmement actif
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 219
    Par défaut
    Bonjour,

    en fait pour faire ce que tu veux, il faut à mon avis éditer le style de la TStatutBarre, et là tu va pouvoir y mettre ce que tu veux et ce sera intégré dedans.

    Il y a une grosse différence dans la notion de conteneur entre la VCL et FireMonkey. Dans la VCL quelques composants sont conteneurs (comme les tpanels) et les composants qu'ils contiennent sont comme intégrés dedans.
    Aec FireMonkey, tout composant peut aussi être un conteneur. Et cela veut dire comme en VCL que les héritage de propriété fonctionnent. Seulement le conteneur ne contient pas forcément visuellement le contenu qui peut se trouver à l'extérieur de son conteneur. Ce n'est à priori pas un bug mais bien une différence de philosophie. L'avantage c'est que si on veux lier juste 2 composants, pas besoin de mettre un TPanel pour les contenir, on déclare l'un conteneur de l'autre. Le style par contre permet de revenir au conteneur "à la VCL", en plus compliqué mais aussi en plus puissant.

    @++
    Dany

  6. #6
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    527
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 527
    Par défaut
    Merci à tous les deux pour vos réponses.
    Je crois que je vais rester sur ma méthode "bourrin". Elle me semble plus simple à mettre en oeuvre et suffit à mes besoins

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour Dany,

    Citation Envoyé par skywaukers Voir le message
    Ce n'est à priori pas un bug mais bien une différence de philosophie.
    Je m'y colle (ie j'suis dedans )... mais où trouve-t-on le détail de cette autre philosophie ? Comme lors de mon dernier test, j'ai l'impression de perdre pieds. Les déductions par tâtonnement, l'apprentissage par les exemples : OK, mais pas systématiquement ! Une doc synthétique (ie votre approche philosophique), cela existe ? Voire, "FMX vs VCL" , histoire de participer au changement et ne pas de le subir en râlant [je commence déjà ! ].

    Bonne journée. Cordialement.
    Gilles
    Dernière modification par Invité ; 01/05/2013 à 11h58.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par ShaiLeTroll Voir le message
    Tu peux aussi sans modifier la XFM, poser tes composants sur la TForm et change leur Parent durant le OnCreate !
    Ou même les créer totalement à la volée pour éviter un jour un mauvaise surprise de plantage de la XFM
    Oui on peut... Techniquement, on va rustiner parce que l'IDE ne permet pas de concevoir directement la chose. (d'où l'antique... Depuis on fait quand même beaucoup mieux en gestion "visuelle" des parents.). Durant l'installation, j'ai bien vu à plusieurs reprises une fenêtre au fond rouge "Delphi XE4" et en dernière ligne, je cite "-EDI visuel avec le framework FireMonkey".

    Là, j'ai l'impression de coder un composant. A l'arrivée, il va y en avoir partout et puis en cas de modification des composants placés sur la Form (remplacements, ajouts...), quelle simplicité ! Dans le code Lazarus de ma Form, rien de tel. Quelques lignes dans le FormCreate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with StatusBar1 do  begin
       for i := 0 to 2 do Panels[i].Style := psOwnerDraw;
       Panels[0].Text  := 'Coucou';
       Panels[1].Text  := 'C''est un';
       Panels[2].Text  := 'Test'; 
    end;
    et le reste pour l'affichage dans procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
    Panel: TStatusPanel; const Rect: TRect);

    Tout le reste est dans le placement (y compris la "parenté") et les ancrages des divers composants. Testé, cela fonctionne presque identiquement dans les 3 OS. Une petite différenciation de code dans le StatusBar où le symbole de "coin de fenêtre pour l'agrandissement" n'existe (automatiquement) pas dans les 3 OS.

    Bon alors, je résume à la mi-temps de la journée XE4 :
    • l'installation de Delphi xE4 a duré pratiquement 1H00 sur mon 64 bits tout neuf... avec une période très longue d'attente : Traitement du système d'aide : Installation en cours. La durée est ainsi prolongée. Je n'ai pas réussi à l'installé à la première reprise. Un blocage inexpliqué s'est produit dans le téléchargement web de coremobile (58% achevé... et jamais 59).
    • je n'ai pas trouvé FireDac dans la version Trial et j'ai découvert que je n'avais pas accès à celui-ci : Not Authorized. Donc je ne sais toujours pas si je peux me connecter à pgSQL notamment en OS X en utilisant l'équivalent de dynlibs en Lazarus [une petite trouvaille qui me permet de contourner dans 90% des cas les problèmes de dépendances et donc m'épargne d'installer le client sur le poste de l'utilisateur Linux ou Mac].
    • On m'a parlé de Rave mais en réalité il s'agit de FastReport4.


    Citation Envoyé par SergioMaster Voir le message
    je pense que la difficulté réside en l'outil de création/modification des styles .
    Oserai-je dire qu'il n'est pas encore a la hauteur de ce que nous propose l'éditeur de formes ? oui ! et c'est fort dommage
    Ah oui, ce n'est pas usuel pour moi. C'est censé faciliter mon codage ?

    Bon allez, difficile de s'absoudre des références VCL/LCL. On s'y recolle.

    Cordialement. Gilles
    Dernière modification par Invité ; 02/05/2013 à 15h17.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bon,

    j'arrête là pour aujourd'hui. Je suis très surpris. J'ai programmé à "l'ancienne" enfin comme dans l'exemple ControlsDemo et reproduit assez facilement le travail réalisé en Lazarus.

    StatusBar :
    Les parents semblent fonctionner normalement; enfin je n'ai rien vu de particulier (donc M. ShaiLeTroll je n'ai rien dit. Désolé... comme quoi quand on cause de ce qu'on ne connaît pas ou mal... ). Les ancrages et align sont différents de ceux de Lazarus mais très efficaces. Le rendu est sympa.

    ToolsBar :
    J'ai un plantage au niveau des styles avec un message curieux (ci-joint : j'ai renvoyé une déclaration de bug). Je voulais les utiliser pour essayer de réaliser un bouton graphique 5 états comme je dispose en Lazarus.

    Sinon je suis fâché avec dbExpress... mais il me le rend bien : pas de driver pgSQL.

    Conclusion : l'ensemble est sympa. Il y a encore quelques petites erreurs au niveau de l'IHM. Par exemple, certaines propriétés sont difficilement accessibles en bas de l'inspecteur d'objet*.

    Sinon un point commun entre Lazarus et FMX : c'est le nombre de composants dispos... pas d'ImageList en FMX ?

    Bonne soirée. Gilles

    *C'est ce qui m'a le plus gêné : le docking de l'IDE. J'ai découvert l'affichage Classique flottant qu'au bout de 4H00 d'utilisation ! Maintenant, impeccable.
    Images attachées Images attachées  
    Dernière modification par Invité ; 02/05/2013 à 19h24.

  10. #10
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    Citation Envoyé par Higgins Voir le message
    Bonjour,

    Je voudrais utiliser un TSatusBar sur lequel j'ajouterais différents composants (TPanel, Tlabel,etc..).
    Le problème, c'est que je n'arrive pas à les lier à ma StatusBar.
    Je m'explique:
    Je sélectionne ma barre en cliquant dessus, puis je fais glisser un composant à partir de la palette. Il a bien l'air d'être sur la barre de statut, mais si j'essaie de le déplacer, il "sort" de la barre. Idem à l'exécution, si je redimensionne l'écran, le composant ne reste pas dans la barre.

    si je sélectionne ma barre de status puis que j'appuie sur F6 pour ajouter le composant, j'ai le même problème. Je n'ai trouvé aucune info sur le docwiki de RAD Studio.
    Quelqu'un peut-il m'aider?
    Salut Higgins (j'adore le pseudo ça me rappelle ma jeunesse...)
    Je prends le topic un peu tard, mais je pense avoir une solution pour ton soucis.
    Quand tu crées le composant, par défaut, il le met avec la Form en parent.
    J'ai aps le Delphi sous la main mais sur la partie gauche de l'éditeur tu as l'arbo des objets, et pour mettre ton contrôle comme dépendant de la barre de statut, il suffit de déplacer le contrôle dans la fenêtre explorateur et de le positionner comme enfant du status bar et ça devrait le faire.
    A mions que j'ai aps compris la demande...
    En fait, c'est une des fonctionnalités de FMX qui permet à n'importe quel contrôle visuel d'être le parent d'un autre contrôle visuel.

    Dis moi si tu arrives à faire, sinon je posterai un truc ce soir avec mon Delphi.

  11. #11
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    527
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 527
    Par défaut
    Citation Envoyé par arkhamon Voir le message
    Salut Higgins (j'adore le pseudo ça me rappelle ma jeunesse...)
    Merci, ça fait toujours plaisir

    J'ai fait le test et, effectivement, ça fonctionne très bien en glissant/lâchant le composant dans l'inspecteur d'objet.
    Merci pour ton aide

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/05/2012, 18h10
  2. comment ajouter des composants au delphi
    Par hayat2 dans le forum Débuter
    Réponses: 3
    Dernier message: 23/05/2010, 13h00
  3. Comment ajouter des composants par un click ?
    Par haraelendil dans le forum Composants
    Réponses: 11
    Dernier message: 18/08/2008, 18h49
  4. [BorderLayout] Comment ajouter des dimensions aux composants ?
    Par jlassiramzy dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 27/12/2006, 14h48
  5. [C# express] Comment ajouter des composants à la palette d'outils?
    Par Jayceblaster dans le forum Visual Studio
    Réponses: 1
    Dernier message: 04/11/2006, 20h40

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