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 :

Un RichEdit affiché en popuMenu


Sujet :

Composants VCL Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut Un RichEdit affiché en popuMenu
    Bonjour à tous,

    est-il possible d'afficher un RicheEdit comme un PopupMenu ?
    Le style de chose que l'on retrouve dans delphi lorsque l'on fait CTRL+ESPACE

    Merci à vous.

  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 fais une form avec ton TRichEdit et tu l'affiches sur l'évènement OnKey.

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Citation Envoyé par philnext Voir le message
    Tu fais une form avec ton TRichEdit et tu l'affiches sur l'évènement OnKey.
    Tu pense que cela suffit ? Il n'y a aucun composant qui existe pour cela ?

  4. #4
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 537
    Par défaut
    Bonjour,

    je fais comme cela aussi, ça marche très bien - tu calcules la position de la fenêtre par rapport aux coordonnées de la souris avant d'ouvrir une fenêtre sans bords

    Charly

  5. #5
    Membre Expert

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Par défaut
    C'est aussi comme ça qu'on fait tous les composants Dropdown qui affichent autre chose que la bête liste prévue par les combos (par exemple, pour afficher une grille avec plusieurs colonnes...).

    En fait, tu n'as même pas besoin de mettre une Form. Tu peux afficher le RichEdit directement. Le plus délicat, c'est de trouver le bon moment pour cacher automatiquement le composant popup et de ne pas rater un événement.
    Sinon, tu te retrouve avec des popup qui ne se ferment jamais.

  6. #6
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Citation Envoyé par Franck SORIANO Voir le message
    C'est....... Tu peux afficher le RichEdit directement. ......
    Bonjour Franck,

    Justement c'est cela que je cherche mais comment procéde-t-on ?

    UN P'tit exemple ou un tuto la dessus serait le bienvenu

    Merci.

  7. #7
    Membre Expert

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Par défaut
    Un RichEdit c'est une fenêtre windows comme une autre. En fait, tu crées le contrôle, tu définis son Parent et ses coordonnées.... Comme si tu créais n'importe quel contrôle dynamiquement.

    Un petit exemple vite fait :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    type
      TForm3 = class(TForm)
        Edit1: TEdit;
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure DoOnExit(sender : TObject);
        procedure KillCtrl(var msg : TMessage); message WM_USER;
      end;
     
    var
      Form3: TForm3;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm3.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    var
      edt : TRichEdit;
    begin
      edt := TRichEdit.Create(self);
      edt.SetBounds(X, Y, 100, 100);
      edt.Parent := self;
      edt.Visible := true;
      edt.OnExit := DoOnExit;
      edt.SetFocus;
    end;
     
    procedure TForm3.DoOnExit(sender: TObject);
    begin
      PostMessage(Handle, WM_USER, cardinal(sender), 0);
    end;
     
    procedure TForm3.KillCtrl(var msg: TMessage);
    begin
      TObject(msg.WParam).Free;
    end;
    Ici, dès que tu cliques dans la form à la souris, j'affiche un RichEdit à l'endroit où on a cliqué.
    Je lui définit un événement OnExit pour le détruire dès qu'il perd le focus.
    La méthode DoOnExit est alors appelée par le RichEdit lorsqu'il faut le détruire. Pour éviter qu'il ne se détruise lui-même dans son propre gestionnaire d'événement, je poste un message à la Form pour lui demander de détruire le contrôle lorsqu'on sera sorti du traitement du OnExit.
    En détruisant le RichEdit il disparait tout seul de la form.

    Après tu peux surcharger le CreateParams du RichEdit pour lui donner un style WS_POPUP au lieu de WS_CHILD et lui permettre de dépasser des limites de la form...

  8. #8
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Super génial...

    Alors, je viens d'essayer de l'afficher en Popupwindows

    Mais évidemment je suis pas du tout qualifié pour faire cela. Voici le code que j'ai fais :

    Mon RichEdit qui s'affichage en popup est affichable dans un richeedit,..lol

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls;
     
    Type
      TMonRichEdit = Class(THintWindow)
      Private
      Protected
        Procedure CreateParams(var Params: TCreateParams); Override;
      Public
     
      end;
     
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        RichEdit1: TRichEdit;
        procedure RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure DoOnExit(sender : TObject);
        procedure KillCtrl(var msg : TMessage); message WM_USER;
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.DoOnExit(sender: TObject);
    begin
      PostMessage(Handle, WM_USER, cardinal(sender), 0);
    end;
     
    procedure TForm1.KillCtrl(var msg: TMessage);
    begin
      TObject(msg.WParam).Free;
    end;
     
    Procedure TMonRichEdit.CreateParams(var Params: TCreateParams);
    Begin
      inherited CreateParams(Params);
      Params.Style := WS_POPUP;
    end;
     
    procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      edt : TMonRichEdit;
    Begin
      edt := TMonRichEdit.Create(self);
      edt.SetBounds(TRichEdit(Sender).left+X, TRichEdit(Sender).top+Y, 100, 100);
      edt.Parent := self;
      edt.Visible := true;
      edt.OnExit := DoOnExit;
      edt.SetFocus;
    end;
     
    end.
    Mais je ne maitrise pas tout ces concepts, j'essai toutefois de proposé quelquechose, pour que tu m'aide à le faire fonctionner sans bug !

    La déjà il s'affiche pas au bonne endroit (bon je devrais m'en sortir)
    ensuite une fois afficher il reste afficher et si je fais ALT+F4, j'ai plus aucnu focus nul par... lol

    est-ce que tu pourrais me guider ?

  9. #9
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Bonjour

    Mes essais plantent toujours autant, dés que le richedit se show..boom...

    @@@+

  10. #10
    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
    Pour commencer je te conseille de rajouter une Tform dans ton projet, classiquement et de l'afficher avec on showmodal.
    Tu vérifies si tout est OK en ouverture et fermeture et quand ça marche tu rajoutes un TRichEdit dans ta TForm.
    OK, c'est pas le plus élégant mais c'est le plus facile pour commencer.

  11. #11
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Bon,

    je n'arrive pas du tout à mes fins.

    Même en essayant avec une form ou pas....

    Je recherche toujours le moyen d'y arriver, le but étant toujours le même et s'apparente à ce que l'on retrouve dans delphi (CTRL+ESPACE) un composant apparait avec une proposition de propriety et autre procedure et lorsqu'on tape des caractères sa filtre automatiquement.

    Je veux pas aller jusque là, moi j'aimerais juste affiche une liste de mot (pré-rempli) l'utilisateur tape du text et cela filtre, puis il fait entrée et le mot se colle dans le richeEdit.

    Merci pour votre aide.

Discussions similaires

  1. Comment afficher le hint d'une ligne d'un RichEdit ?
    Par Nicolas Coolman dans le forum Contribuez
    Réponses: 2
    Dernier message: 11/09/2008, 00h37
  2. [RichEdit] Est-il possible d'afficher le numéro des lignes ?
    Par Invité dans le forum Composants VCL
    Réponses: 17
    Dernier message: 17/04/2008, 18h56
  3. Réponses: 18
    Dernier message: 19/06/2007, 18h23
  4. afficher du texte
    Par Mau dans le forum OpenGL
    Réponses: 10
    Dernier message: 24/06/2003, 16h31
  5. Réponses: 2
    Dernier message: 10/06/2002, 12h03

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