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 :

Partage d'un même PopUP menu entre plusieurs fiches


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 126
    Par défaut Partage d'un même PopUP menu entre plusieurs fiches
    Malgré plusieurs tentatives je n'arrive pas à résoudre cette question d'organisation des composants.

    Dans mon application, j'ai
    - une UNITE <Common> sans FICHE qui rassemble tout ce qui est commun,
    - trois FICHES qui utilisent le même menu PopUP,

    J'aurai aimé mettre ce menu dans <Common> et pouvoir tout simplement
    faire dans les trois fiches <PopUpMenu1.Popup>;

    Tout ce que j'ai pu faire pour l'instant, c'est d'avoir 3 PopUp menus identiques
    et mettre dans <Common> la rédaction des <Caption> des divers verbes qui changent en fonction du contexte,
    et la programmation des actions qu'entraînent ces différents verbes du menu.

    Comment peut-on mettre un contrôle dans une UNITE qui n'a pas de FICHE?

  2. #2
    Membre éclairé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Par défaut
    Salut

    Personnellement, je dirais qu'un composant graphique (TMainMenu en fait partie) ne peut avoir qu'une fiche comme parent

    Par définition, une unité sans fiche ne peut rien contenir de "visuel"

  3. #3
    Membre émérite
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Par défaut
    Tu peux essayer de déposer ton PopupMenu sur une fiche, tu devrai ensuite pouvoir l'utiliser sur d'autres fiches.
    Sinon tu peux toujours le remplir dans son évènement OnPopup : dans cette exemple je l'alimente par rapport au contenu de ma ListBox, mais tu peux imaginer n'importe quoi
    Code : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    procedure TForm1.pairClick(Sender: TObject);
    begin
      ShowMessage('Vous avez cliqué le pair : ' + (Sender as TMenuItem).Caption);
    end;
     
    procedure TForm1.impairClick(Sender: TObject);
    begin
      ShowMessage('Vous avez cliqué l''impair : ' + (Sender as TMenuItem).Caption);
    end;
     
    procedure TForm1.PopupMenu1Popup(Sender: TObject);
    var
      i : Integer;
      mi : TMenuItem;
    begin
      PopupMenu1.Items.Clear;
     
      for i := 0 to ListBox1.Count - 1 do begin
        mi :=TMenuItem.Create(Sender as TPopupMenu);
        mi.Caption := ListBox1.Items[i];
        (Sender as TPopupMenu).Items.Add(mi);
        if Odd(i) then
          mi.OnClick := pairClick
        else
          mi.OnClick := impairClick;
      end;
    end;

  4. #4
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Il y a les Data Module qui sont prévus pour ce genre de comportement. Crées-en un et place ton TPopupMenu dessus, que tu configures. Ensuite, dans tes fiches, tu ajoutes l'unité contenant ton data set à la clause uses. Tu peux finalement associer le popup menu créé à la propriété PopupMenu de tes composants sur tes fiches.

    @OutOfRange : TMainMenu et TPopupMenu ne sont pas des composants graphiques ! Ils ajoutent un élément graphique aux fiches/composants qui les références via les propriétés appropriées, mais ils ne sont pas eux-mêmes graphiques.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 126
    Par défaut
    Merci à tous,

    SJRD me donne la solution parfaite.
    Je n'avais pas remarqué que l'on pouvait mettre des menus y.c. les popup menus dans un module de données.
    Margré des milliers de lignes de code déjà écrites en Delphi, on en apprend tous les jours grâce à ce forum.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/06/2015, 15h59
  2. [Débutant] Partager une même propriété entre plusieurs classes
    Par BasicZX81 dans le forum VB.NET
    Réponses: 4
    Dernier message: 09/09/2012, 15h56
  3. Réponses: 1
    Dernier message: 10/11/2011, 18h38
  4. Partager une même base sqlite entre plusieurs applis
    Par Tiberizz dans le forum SQLite
    Réponses: 2
    Dernier message: 12/11/2009, 22h19
  5. partager l'instance d'une classe entre plusieurs thread ?
    Par contremaitre dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 29/07/2008, 11h53

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