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 VCL Delphi Discussion :

ToolBar / TFrame


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 13
    Par défaut ToolBar / TFrame
    Bonjour,

    Je développe mes applications principalement à base de TFrame.
    Une TFrame peut contenir une ou plusieurs TFrame qui peuvent également contenir d’autres TFrame.

    Je suis à la recherche d’un composant TToolBar qui peut etre placé et visible dans un ou plusieurs TFrame en mode conception, mais dont les différents contenus seraient « mergés » et visible uniquement dans la TForm parent.

    Avez vous des exemples de composants qui peuvent m’aider svp ?

    Merci

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 124
    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 124
    Par défaut
    Je ne crois pas que cela existe !
    Tu dois pouvoir créer une Frame ancêtre TFrameWithToolBar et coder une méthode abstraite FillToolBar, celle-ci doit être capable d'ajouter des Boutons à une ToolBar passée en paramètre, et recursivement pour les sous-frame
    Cela test avec is pour savoir si ça hérite d'une TFrame ou d'une TFrameWithToolBar

    La Fenêtre contenant la Frame appel cette méthode, passe sa ToolBar en paramètre, ensuite cela doit se faire tout seul !

    Tes frames sont réutilisables ? il te faudra ajouter un objet de contexte, car dans certains cas les menus ajoutés seraient différents !
    Si tes Frames ne sont pas réutilisables ? pourquoi des Frames ?

    Tu dois pouvoir aussi faire un équivalent pour un TMainMenu !
    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
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 13
    Par défaut
    Merci pour ta réponse, effectivement elle confirme mes recherches sur le net car je n’avais rien trouvé, d’où ma question sur le forum.

    Mes TFrame ont 2 usages, un pour une gestion du code beaucoup plus simple car chaque frame à sa fonction et du coup l’unité est beaucoup plus légère en taille de code. Et l’autre effectivement, c’est de pouvoir réutiliser ces frames à plusieurs moment soit dans des Forms différentes ou de bien pourquoi pas dans des programmes différents.

    D’après toi lors de la connexion à la Toolbar parent pourrait-on facilement trouver une méthode pour affecter le Parent des boutons et masquer la toolbar de la Frame enfant ? Les boutons seraient « juste » déplacé visuellement dans la toolbar parent?

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 124
    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 124
    Par défaut
    Pour les Frames, il n'y aurait pas de ToolBar, juste une fonction qui permet de créer dynamiquement des TToolButton avec comme Parent (et\ou Owner) la ToolBar de la TForm ! Pas d'IDE !

    modifier TToolButton.Parent fonctionne, comme c'est un TControl c'est normal, c'est juste la collections Buttons[] qui pourrait poser des problèmes (VA ? EListError ?)
    Voir aussi RemoveComponent et InsertCompoment si tu veux absolument utiliser l'IDE !

    Utilise Tag, tu mets dedans le Handle ou la référence de la Frame, il sera facile de les trier et de les retirer

    j'ai maintenu des applications qui contenait des TToolBar, mais je ne me suis jamais intéressé plus que cela à ce composant, surtout que j'utilisais une TActionList (qui permettait d'avoir aussi l'action dans le MainMenu) donc souvent c'était plus pour offrir les fonctionnalités les plus courantes à portée de main !

    Ton histoire de fusion me pose juste un problème de compréhension pour l'utilisateur, déjà lors d'un Merge de Menu MDI, certains utilisateurs sont perdus, si tu as une ToolBar, faudrait veiller que les Frame utilise des Icones différentes, sinon comment s'y retrouver si tu as des icones en double

    Pour ton histoire de "l’unité est plus légère", c'est un long débat, si tu as un code de fenêtre lourd c'est souvent parce qu'il y a un mélange entre la présentation et le modèle (genre du SQL en plein milieu pour remplir une DBGrid), le MVC en Delphi, ce n'est pas habitué, c'est presque Anti-RAD comme méthode !
    Pour moi, une Frame ou une Form devrait quasi vide, juste les EventHandler qui appelent une série de fonction d'un objet (controller) pour récupérer les données qu'elles doivent afficher !
    J'ai trop souvent vu (et je le vois encore où je travaille), toute l'intelligence métier dans les fenêtres (insertion, règle de maj, contrôle de cohérence...), lors que tu fais une nouvelle fenêtre qui doit mettre à jour une série de table, tu copies-colles ou réécrit des passages entiers de code métier, une aberration car rendra les futures évolutions pénibles avec de fort risque de régression !
    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
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 13
    Par défaut
    merci de ton aide, j’ai fait quelques essais et j’arrive à mes fins…

    En ce qui concerne ton commentaire sur la séparation de VCL/objet métier je suis 100% d’accord avec toi. D’ailleurs je fais de nombreux composant d’affichage de graphe, et depuis quelques années, j’ai pris l’habitude de séparer tout l’aspect VCL de la fonction même du composant.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 13
    Par défaut
    Je vais m’auto-répondre, et changer de question du coup.

    J’ai fait l’essai d’affecter le parent du bouton à la toolbar parent, et ça marche bien. Le soucis c’est quand je veux faire l’inverse c’est plus difficile.
    En effet dans mon projet, une toolbar parent peut avoir plusieurs toolbar enfants. Du coup une fois les boutons ré-affectés, je ne sais plus à quel toolbar enfants ils appartiennent car le Owner des boutons ce n’est pas la toolbar mais la TFrame…

    Donc ma question comment peut-on faire en mode conception pour que lorsqu’on pose un bouton sur par exemple un TCustomPanel (composant de base de ma TMyToolBar), le Owner soit le TCustomPanel et non le TFrame parent ?

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

Discussions similaires

  1. Composant graphique multiple (ou dérivé d'un TFrame)
    Par Jean Bovet dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/04/2007, 19h57
  2. Redimensionner une ToolBar
    Par tscoops dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/11/2003, 17h46
  3. Toolbar Buttons et paramètres
    Par Lux interior dans le forum XMLRAD
    Réponses: 4
    Dernier message: 13/06/2003, 20h44
  4. [TFrame] Problème de gestion du OnMouseDown avec une Frame
    Par xherault dans le forum Composants VCL
    Réponses: 5
    Dernier message: 23/05/2003, 16h35
  5. Problème avec un TFrame
    Par mixi dans le forum Langage
    Réponses: 4
    Dernier message: 12/09/2002, 14h25

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