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

Delphi Discussion :

l'avenir de MDI


Sujet :

Delphi

  1. #21
    Membre du Club
    Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 73
    Points : 61
    Points
    61
    Par défaut SDI qui fait du MDI
    J'ai une fenêtre principale, qui lance diverses fenêtres. On me demande de pouvoir naviguer entre les fenêres filles, de manière simple.
    Donc, je cherche un truc qui ressemblerait plus ou moins à du MDI, mais sans en être.
    Je suis clair ?
    Bin oui, très
    C'est exactement ce que je veux faire. Et dans ma fenêtre principale, qui serait comme une barre d'outils qui viendrait se loger dans le haut de l'écran, un menu donnerait accès à toutes les fenêtres ouvertes. Par exemple mon utilisateur a ouvert quatre fiches signalétiques de quatre clients, dans le menu "fenêtre" apparaît le nom de ces quatre clients...

    Avec du SDI en simple showmodal, c'est ultra-simple à faire !

    Heu, je réinvente un peu la roue, c'est sûr, mais y a-t-il moyen de faire pareil plus simplement ?
    Et n'y a-t-il pas de risque (mémoire etc.) avec tous ces show dans ma SDI ???

    Paul

  2. #22
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    regarder du cote de SDI

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #23
    Membre averti
    Avatar de Pascal Fonteneau
    Profil pro
    gérant
    Inscrit en
    Février 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2007
    Messages : 139
    Points : 352
    Points
    352
    Par défaut Ma solution
    Pour ma part, je trouve l'interface MDI vieillissante, et je n'ai jamais apprécié les "Merges" des menus.
    Le remplacement par des onglets à la IE7 me convient davantage. Je travaille actuellement à la mise en
    place d'une interface de ce type.

    J'utilise pour cela un composant freeware qui propose un bouton de fermeture pour chaque onglet.
    L'implementation est la suivante:

    Une barre d'outils genérale,
    un composant TtabExt (freeware)
    Une frame contenant le code de la 'ex fenetre fille'

    A l'execution , il y a :

    - Instanciation dynamique de fiches avec génération d'onglets supplementaires
    - Suppression des onglets
    - possibilité d'appels des méthodes contenues dans la frame et depuis l'application principale

    Voici un exemple

    http://p.fonten.free.fr/OngletFrame.zip

    PS C'est du deja du delphi 2007

  4. #24
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Il y a peu j'avais une discussion avec pedro où je lui avais fait une petite animation mettant en scène les composants devExpress et notamment les composants dxDockSite et dxDockPanel de la suite ExpressBar.

    C'est la réponse la mieu adaptée (cela n'engage que moi) à l'alternative à MDI. En effet, en bridant quelque peu ces composants il est possible très simplement de mettre en oeuvre une gestion de type onglet à la ie7.
    Chacune de mes TForm sont en fait embarquées dans un dxDockPanel, cela ne change donc rien lors de la conception de l'applicatif.


    Pour vous faire une idée voici une petite animation avec ces composants en action.

    Une autre animation avec ces dxdockPanel, non bridés. L'exécutable zipé de la seconde animation.

    Voilà pour mon retour d'expérience.
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  5. #25
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Bonjour

    Pascal Jankowski, super le "look and feel" de ton application.

    Le seul problème que ca me pose moi la disparition du MDI, c'est dans les opérations Drag and Drop. Le MDI permettait d'afficher deux fenêtres de même nature côte à côte et de pouvoir faire du glisser/déplacer très facilement.

    Avec la philosophie nouvelle de Microsoft, le Drag and Drop est devenu particulièrement inefficace avec la nouvelle présentation des interfaces. Je ne vois aucune application ergonomique permettant de faire du Drag and Drop facilement et surtout visuellement (en évitant d'ouvrir de multiples instances à la Internet Explorer 7).

    Si vous connaissez des interfaces qui permettent de faire du Drag and Drop de manière visuelle et super efficace (comme dans les applications MDI), je suis preneur.

  6. #26
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Rien n'empèche de faire du drag&drop avec ce type d'interface.

    Tu peux passer d'un onglet à l'autre simplement en laissant l'objet déplacé sur l'onglet et permettre à son contenu de repasser au premier plan avant de terminer l'opération du déposer, ce n'est pas franchement difficile à coder.

    Un peu comme ce qui se fait sous Windows quand tu déplaces un objet au dessus le barre démarrer sur un applicatif réduit...
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  7. #27
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Oui je suis d'accord avec toi qu'on peut faire du Drag and Drop avec la méthode que tu préconises, et effectivement ... c'est plutôt simple à mettre en oeuvre.

    Cependant, ce n'est absolument pas efficace en terme d'ergonomie, et tout simplement en terme d'utilisation par un utilisateur novice.

    D'autre part, dans mon application MDI, j'utilise des TVirtualStringTree qui contiennent des centaines de milliers de noeuds (au bas mots). A l'usage, je sais par avance que les opérations Drag and Drop seront un echec avec la méthode que tu décris, non pas pour une question de technique, mais simplement de la mémoire visuelle de l'utilisateur. En effet, si l'utilisateur doit prendre un ensemble de noeuds de la première fiche pour la positionner entre deux noeuds sur la seconde fiche, il lui faut absolument voir la première fiche afin de connaitre l'emplacement dans la seconde fiche. Sans une vision précise des deux fiches, il risque fort de placer au mauvais endroit les données. C'est SUPER problématique pour moi, et je n'ai pas réussi à trouver mieux que la présentation MDI pour gérer cela.

    Possible qu'une autre présentation existe, mais je ne la connais pas.

  8. #28
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Je vous propose la solution qu'on a adopté en C# (moins de 3 jours de devpt pour une unité dédiée à la gestion des "formes détachables" ) , mais qui peut parfaitement se transposer en Delphi:

    • On définit une forme principale composée d'un tabsheet ou pageControl.
    • On crée autant de formes applicatives avec un panel contenant tous les composants.
    • On attache chaque panel "applicatif" aux pages du tabsheet de la forme principale et on rend leur forme d'origine invisible.
    • On prévoit la possibilité de détacher ces panels vers leur forme initiale en faisant un genre de "glisser-déplacer" sur la barre d'onglet (cela fait apparaitre la barre du haut de la forme d'origine au dessus des onglets du tabsheet et cette barre récupère le curseur ce qui permet de déplacer la forme dans le même mouvement).
    • Aprés détachement, on peut aussi réintégrer les formes applicatives dans son onglet en "fermant" la forme applicative ou en faisant le glisser-dépacer inverse

    On combine ainsi le bon ordonnacement apporté par les onglets et la possibilité de voir simultanément 2 (ou n) formes "applicatives" de l'appli.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  9. #29
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Je trouve l'approche de Graffito satisfaisante. Il serait intéressant qu'il puisse fournir quelques écrans pour montrer le résultat final ou simplement faire un exemple qu'il serait possible de télécharger.

    En effet, il y a certains points que j'ai des difficultés à imaginer.

    Le code C# n'est pas une difficulté, il me sera possible de transposer pour faire un modèle Delphi

    Merci d'avance

  10. #30
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Excellente solution. Merci Graffito. Je la programme dans la prochaine version.

  11. #31
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Je mettrai le code C# à disposition Lundi (à partir de mon PC au bureau) dans cette discussion avec un exemple d'application.

    PS : Je suis preneur pour sa transposition en Delphi.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  12. #32
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,

    Je mettrai le code C# à disposition Lundi (à partir de mon PC au bureau) dans cette discussion avec un exemple d'application.

    PS : Je suis preneur pour sa transposition en Delphi.
    sa sera bien, parce que je n'est pas tres bien comprie votre proposition, pour la traduction pas de problemes.

  13. #33
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par Graffito
    Je mettrai le code C# à disposition Lundi (à partir de mon PC au bureau) dans cette discussion avec un exemple d'application.
    Avec quelques captures d'écran, ça serait bien.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  14. #34
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    J'ai mis dans le ZIP joint le programme de demo C# (sous windows XP, il faut donc que DotNet soit installé).

    Pour essayer :
    - lancer l'exe,
    - pour "détacher" faire un glisser-déplacer en cliquant sur les onglets Page1 et Page 2 pour voir le comportement (ignorer le troisième onglet),
    - ca marche aussi sur le panneau "vert" de la page 1,
    - pour rattacher, fermer la ou les formes détachées ou double-click sur l'onglet ou encore "remettre la forme à sa place initiale".

    J'ai utilisé dans cet exemple 3 fois la même forme détachable pour simplifier l'écriture du pgm, mais on aurait pu utiliser des formes tout à fait différentes.

    Il y a aussi le code source en C# pas commenté, mais il est assez court.
    Fichiers attachés Fichiers attachés
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  15. #35
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 48
    Points : 54
    Points
    54
    Par défaut
    Slt à tous, je viens de prendre la discution et j'étais justement en train de developper un systeme de PageControl sur le même principe évoqué par Graffito.
    J'en était à l'analyse et je vais passer au dev de ce composant (car je spécialise un PageControl et une Forme). Ainsi toutes mes nouvelles formes que je vais créer par la suite vont dériver de cette forme (avec une gestion de menu, boutons... centralisés dans la forme de base).

    Voilà le principe de fonctionnement :

    1 - PageControl spécialisé (avec gestion du glissé pour activer / désactiver l'affichage en "Form" pour toutes les formes contenues dans le panel. Ce page control aurra une méthode du type AddForm(TFormPC) qui ajoutera cette forme dans une liste de formes (FListeForme : TObjectList)
    2 - Une forme de base TFormPC qui aurra des méthodes pour affichage avec les bordures (forme classique) ou sans bordure (pour être intégré dans une page du PageControl).
    3 - Lors de l'affichage en mode normal, je change la propriété Parent de chaque forme pour mettre le conteneur du PageControl puis je rend invisible le PageControl et inversement pour l'affichage par onglet.

  16. #36
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 48
    Points : 54
    Points
    54
    Par défaut
    Pour info avec D2006 et + il y a le TDockTabSet qui apparament reprend le même fonctionnement (navigation par onglet et par forme).
    A voir commentcela fonctionne......

  17. #37
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Avez-vous finalement testé l'ergonomie du système proposé, voir démo dans mon post précédent ?
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  18. #38
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,

    Avez-vous finalement testé l'ergonomie du système proposé, voir démo dans mon post précédent ?
    Pour ma part, j'ai un message d'erreur au lancement du programme, genre «L'application n'a pas pu démarrer correctement, cliquer sur Ok pour terminer.»
    De retour parmis vous après 10 ans!!

  19. #39
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Sous Windows XP, il faut que DotNet 2.0 soit installé.
    Sous Vista, Dotnet est installé en mode natif.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  20. #40
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,

    Avez-vous finalement testé l'ergonomie du système proposé, voir démo dans mon post précédent ?
    Je n'ai rien pour compiler du C#.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

Discussions similaires

  1. L'avenir est-il au PHP ?
    Par Manolo dans le forum Langage
    Réponses: 468
    Dernier message: 11/02/2008, 18h54
  2. L'avenir du BDE et des SQL Links révélé ! <officiel>
    Par Merlin dans le forum Bases de données
    Réponses: 12
    Dernier message: 02/06/2006, 10h18
  3. MDI sans MFC, possible ?
    Par delire8 dans le forum MFC
    Réponses: 4
    Dernier message: 17/06/2002, 07h38
  4. pb fenêtre MDI
    Par dédé dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/06/2002, 18h41
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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