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 :

[TPopupMenu][TRichEdit] : unité commune pour plusieurs frames


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Par défaut [TPopupMenu][TRichEdit] : unité commune pour plusieurs frames
    Bonjour à tous,

    Delphi 7 Enterprise.

    Je cherche à regrouper dans une unité unique et séparé différents événements déclenchés par un PopupMenu.
    Ce popup menu j'aimerai l'intégrer ensuite dans différents modéles de frames de mon appli.

    Dans mon unité commune, j'ai par exemple une procédure me permettant de changer la font de mon RichEdit

    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
    procedure TFCommon.SetFont_RE(sender:TObject);
    var
      popup: TPopupMenu;
      component: TComponent;
      frame:TComponent;
      pc:integer;
    begin
      if Sender is TMenuItem then
        begin
          popup:= TMenuItem(Sender).GetParentComponent as TPopupMenu;
          component:= popup.PopupComponent;
          frame:=component.GetParentComponent;
          for PC:=0 to frame.ComponentCount-1 do
            begin
              if (frame.Components[PC] is TRichEdit) then
                if TRichEdit(frame.Components[PC]).Name=component.Name then
                begin
                  ChangerLaFont_RE(TRichEdit(frame.Components[PC]));
                  exit;
                end;
            end;
        end;
    end;
    Dans une de mes frames (fichier unité différent), je place un richedit, et je spéficie la propriété PopupMenu, en allant rechercher le popupmenu de mon unité UCommon.

    Ce qui ne marche pas dans la procédure SetFont_RE ci-dessus, c'est la boucle de recherche du composant Richedit dans ma frame.

    Lorsque je fais un showmessage(component.name) il m'affiche correctement le nom du RichEdit de ma frame.
    Lorsque je recherche le parent du richedit : j'obtiens bien le Panel de ma frame.

    Ma question est donc : comment rendre générique la boucle suivante, pour que je puisse l'appeler depuis n'importe quelles frames ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for PC:=0 to frame.ComponentCount-1 do
            begin
              if (frame.Components[PC] is TRichEdit) then
                if TRichEdit(frame.Components[PC]).Name=component.Name then
                begin
                  ChangerLaFont_RE(TRichEdit(frame.Components[PC]));
                  exit;
                end;
            end;

    Merci de votre aide

    @

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 493
    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 493
    Par défaut
    salut


    pour simplifier tu peut faire une fonction


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function TFCommon.ChangeFontFrame(Frame : Tframe;Name : String)
    var
     PC : integer
    begin
      for PC:=0 to frame.ComponentCount-1 do
      begin
         if (frame.Components[PC] is TRichEdit) then
            if TRichEdit(frame.Components[PC]).Name=Name then
            begin
               ChangerLaFont_RE(TRichEdit(frame.Components[PC]));
                exit;
             end;
      end;
    end;
    ton richedit a bien etait construit avec son owner ?

    @+ Phil

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Par défaut
    merci bcq de ton aide

    j'ai remplacé avant ma boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    frame:=component.GetParentComponent;
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    frame:=component.Owner;
    et çà fonctionne

    merci encore

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

Discussions similaires

  1. [AC-2010] Enregistrement commun pour plusieurs subnavigation form
    Par Pimpampoum dans le forum IHM
    Réponses: 1
    Dernier message: 06/02/2014, 13h44
  2. Répertoire commun pour plusieurs projets
    Par mariusapo dans le forum Développement Web avec .NET
    Réponses: 2
    Dernier message: 26/04/2012, 16h26
  3. [AC-2007] Table commune pour plusieurs projets ADP
    Par alfhcg dans le forum Projets ADP
    Réponses: 1
    Dernier message: 02/01/2012, 01h53
  4. Besoin d'aide pour plusieurs Layout sur une même Frame
    Par CosaNostra dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 12/02/2010, 16h27
  5. [XSL] Sortie commune pour plusieurs XSL
    Par pataguillon dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 11/09/2007, 11h56

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