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 :

Modifier le positionnement des éléments de l'accueil


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut Modifier le positionnement des éléments de l'accueil
    Bonjour à tous,

    Sur ma page d'accueil, j'utilise des TJvXPBar qui intègre les différentes options du menu cependant tous les utilisateurs n'auront pas accès à toute les options (géré par des droits) donc certains éléments sont non visibles cependant ça laisse des trous sur la page d'accueil.
    Donc je souhaiterai si possible, modifier le positionnement des TJvXPBar dès qu'un élément est non visible.
    Pouvez-vous m'aider ?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 447
    Points : 24 844
    Points
    24 844
    Par défaut
    C'est le problème de partir d'une barre créée en DesignTime et de cacher en RunTime
    le plus efficace étant de tout créer au RunTime en fonction des habilitations !
    Lors du change de session, tu détruis tout et tu recrées tout !

    Dans l'application que je maintiens (je le découvre ce matin, j'avais encore jamais regardé cette partie, je travaille dans un tout autre module), le comportement est celui que tu souhaites
    cela instancie les TToolButton à la volée et les ajoutent via InsertControl dans le TToolBar et modifie Width à chaque ajout

    Je n'ai pas de code (même en C++) à te fournir, c'est un vrai foutoir et cela ne te parlerait pas, mes prédécesseurs ont réinventé la roue carrée par méconnaissance de la RTL\VCL
    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 régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Merci pour ta réponse, je t'avoue que j'ai pas tout compris car ta réponse est très technique, je vais regarder du côté d'InsertControl

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 447
    Points : 24 844
    Points
    24 844
    Par défaut
    Pour un TToolButton \ TToolBar
    Habilites c'est une liste d'objet contenant tes droits, une TStringList peut être un début
    Les ToolBar sont dans un TControlBar, tu peux jouer Left et peut-être même les Anchors
    Chaque ToolBar est identifié par une Category, une chaine pouvant être le nom de la ToolBar
    Chaque ToolButton est identifié par un ID, le tag ....

    Je te laisse trouver les équivalents JEDI VCL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for i := 0 to Habilites.Count - 1 do
    begin
      tb := FindComponent(Habilites[i].CategoryToolBarName); 
      if Assigned(tb) then
      begin
        btn := TToolButton.Create(nil);
        btn.Caption := Habilites[i].ButtonCaption;  
        btn.Tag := Habilites[i].ID;
        btn.OnClick := TooButtonClickEventHandler; // Le Tag permettra de trouver l'Hability, une méthode virtuelle Execute ou une Action associé pourrait être une méthode élégante
        ToolBar.InsertControl(btn);
    end;
    Il faudra faire un code de vidange
    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 régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Merci mais ta proposition me renvoie vers un menu classique, tu pourras voir en pièce jointe un aperçu du menu.
    Ce que je souhaiterai si c'est possible, c'est si la partie Gestion de Devis est non visible que la partie centrale de réparation remonte et ne pas avoir un trou entre les 2.
    Images attachées Images attachées  

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 13 447
    Points : 24 844
    Points
    24 844
    Par défaut
    Mes propos sont aussi applicables à un TCategoryPanelGroup ou TCategoryButtons qui serait le plus proche de ce TJvXPBar, ce dernier ressemble à un TOutlookBar à l'époque de D5

    Tous ces composants se ressemblent, ils ont forcément les méthodes d'Ajout de Category et l'ajout de Button au sein d'une Category

    Justement j'ai aidé un collègue sur TCategoryButtons, même comportement que toi
    l'idée fut d'avoir un TCategoryButtons complet et un TCategoryButtons vide
    Lors de l'authentication, le second TCategoryButtons était complètement vidé et l'on recopiait le contenu du premier TCategoryButtons

    Avoir deux TCategoryButtons était plus simple pour créer via le Builder que de tout créer à la main !
    Une grosse flemme, en plus cela permet de mieux visualiser ce qui existe dans le menu que de tout avoir dans code, pas élégant mais pratique

    Les deux TCategoryButtons étant lié à la même TImageList et la même TActionList

    Dans le code de mon collègue, cela gère un seul bouton par category, je le modifie approximativement pour gérer un nombre variable de bouton

    Code c++ : 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
      CategoryButtons2->Assign(CategoryButtons1); // Taille + Categories mais pas ButtonItem
     
      // Copie des Buttons
      for (int iCat = 0; iCat < CategoryButtons1->Categories->Count; iCat++)
      {
        TButtonCollection* BtnLst = CategoryButtons2->Categories->Items[iCat]->Items;
        for (int jBtn = 0; iBtn < BtnLst->Count; iBtn++)
        {
          if (IsActionHabilite(BtnLst->Items[iBtn]->Action))
          {
            TButtonItem *Item = new TButtonItem(BtnLst);
            Item->Assign(BtnLst->Items[iBtn]);
            Item->Action = BtnLst->Items[iBtn]->Action;
          }
        }
      }

    Les category sans button peuvent être supprimer via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CategoryButtons2->Categories->Delete(ItemIndex);

    voir l'image pour une idée du résultat
    à gauche, le TCategoryButtons contenant tous les menus
    à droite, le TCategoryButtons vide dans lequel on affecte
    Images attachées Images attachées  
    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

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Merci pour toutes ses précisions et cet exemple, je regarde ça attentivement à priori ça correspond bien à ce que j'attends (si je peux espacer mes sous menus et ne pas les collés comme dans l'application de ton collègue)

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Je n'ai pas contrôlé à fond , mais pour les JVXPBars les propriétés visible et align (alTop) sont utilisables .

    Si dans le cas exposé tu ne veux pas afficher le jvXPBar 'Devis' , il te suffit de le rendre invisible , si le jvXPBar en dessous à la propriété align=alTop , il remontera tout seul à l'intérieur du jvXPContainer

    ps. il manque un 't' a gestion
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Bonjour,

    Merci pour ta réponse mais je n'utilise pas de container parce que sinon ils sont empilés et il n'y a pas d'espaces entre mes sous-menus ce qui présentent - bien et fait beaucoup + "entassé".

  10. #10
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    oui , les espaces , je n'y avais pas pensé (c'est pour cela que je n'utilise pas jvXPBars mais plutôt les TJVNavxxxxx) , cependant rien n'empêche d'ajouter dans le container (qui n'est ni plus ni moins qu'un panel amélioré) des panels servant de séparateurs
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Bonne idée en effet merci pour les panels séparateurs mais le problème c'est que j'ai 2 colonnes de menu donc si je mets du alTop celui qui peut tout voir ne verra pas tout le menu

Discussions similaires

  1. modifier le style des éléments d'un datagrid
    Par pigeon11 dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/02/2009, 16h42
  2. [script.aculo.us] [Tutoriel] Modifier l'opacité des éléments sélectionnés d'une liste avec Script.aculo.us
    Par Kerod dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 13/01/2009, 21h31
  3. Pb pour positionner des éléments
    Par cissou06 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 03/07/2007, 18h55
  4. Positionner des éléments dans une cellule de tableau
    Par Rémy29 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 31/07/2006, 17h33
  5. Positionner des éléments dans un formulaire
    Par Choupinou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 20/07/2006, 16h36

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