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 de menus


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    imi
    imi est déconnecté
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Par défaut Partage de menus
    Un nouveau défi pour les experts DELPHI.

    Le décor :je suis en train de créer une application composée d'une barre de menu principale (gérée par un TActionManager) uniquement. A partir de cette application je lance des formulaires (contenus dans des DLL) correspondant à des modules distincts; chaque formulaire comporte un TActionManager contenant les éléments du menu associé. Lorsqu'un formulaire est exécuté, les éléments de son menu doivent fusionner avec les éléments de la barre principale et de plus les mises à jour des actions doivent se refléter sur la barre de menu principal (actions enabled checked etc..)

    La question :
    Est-il possible de faire cela ?

    La réponse :
    Oui, je l'ai fait mais il reste des problèmes : par exemple certains éléments de menu doivent changer leur état checked mais je bute sur une erreur "Transtypage de classe incorrecte" quand j'essaie de le faire...
    Le second problème est que mes éléments de menu ne se mettent pas à jour dans la barre de menu principale...

    Avez-vous des idées ?

  2. #2
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Tu nous mets le code qui génére le 'transtypage incorrect' ?

  3. #3
    imi
    imi est déconnecté
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Par défaut
    Ce code se trouve dans la dll :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure madll.MonMenuUpdate(Sender: Tobject)
    begin
      MonMenu.Checked := NOT MonMenu.Checked;
    end;
    où Monmenu est un TAction contenu dans mon TActionManager

  4. #4
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Essayes de passer par une variable intermédiaire pour voir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    bTemp := not(   MonMenu.Checked);
      MonMenu.Checked :=bTemp;

  5. #5
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Citation Envoyé par imi
    Ce code se trouve dans la dll :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure madll.MonMenuUpdate(Sender: Tobject)
    begin
      MonMenu.Checked := NOT MonMenu.Checked;
    end;
    A priori ce code ne correspond pas à l'event Update d'un TAction, mais plutôt à celui d'un Execute.
    Je ferais plutôt ceci sur le Execute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure madll.MonMenuExecute(Sender: Tobject)
    begin
      with TAction(Sender) do Checked := not Checked;
    end;
    @+ Claudius

  6. #6
    imi
    imi est déconnecté
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Par défaut
    Merci pour vos réponses les gars. mais dans les deux cas ça ne marche pas !
    Claudius, delphi me mets "EInvalidCast error..." quand je fais ce que tu proposes...

    C'est comme si il considérait que MonMenu n'est pas un TAction alors que s'en est bien un....

  7. #7
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Tu es sûr que MonMenu est un TAction ?

Discussions similaires

  1. [VB6] [Réseau] Connexion et partage de données
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 21/10/2002, 18h12
  2. [VB6] [MDI] Menus contextuels dans les filles
    Par Rosec dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/09/2002, 14h00
  3. Partager son disque
    Par tintin22 dans le forum Web & réseau
    Réponses: 2
    Dernier message: 16/09/2002, 00h34
  4. Réponses: 4
    Dernier message: 13/05/2002, 16h43
  5. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20

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