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 :

Détection OnClick sur ScrollBar RichEdit


Sujet :

Delphi

  1. #1
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut Détection OnClick sur ScrollBar RichEdit
    Bonsoir

    Une petite question qui me pose bien du souci :

    Est-il possible de détecter le OnClick (enfin son équivalent) sur la ScrollBar de RichEdit ?

    En effet, je dois détecter cela.

    Celui qui me dit que c'est lié avec le RichEdit par lui-même, je lui fait dévorer mon mulot

    Merci d'avance de toute réponse ou idée.

    @+

  2. #2
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    with RichEdit1 do  zone:=rect(boundsrect.Right-15,boundsrect.top,boundsrect.Right,boundsrect.bottom); //scrollbar vertical
    end;
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    if ptinrect(zone,point(mouse.CursorPos.x-clientorigin.x,mouse.CursorPos.y-clientorigin.y))then caption:='tu scrolles' else caption:='non';
    end;
    sur le onmousemouve du richedit avec ssleft in shift et point(x,y), ça ne fonctionne pas... dommage...

    il faudrait au moins inclure l'enfoncement du bouton gauche de la souris en condition supplémentaire.
    dommage

    pas le temps de regarder plus profondément...

  3. #3
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Tu disais :
    sur le onmousemouve du richedit avec ssleft in shift et point(x,y), ça ne fonctionne pas... dommage...
    C'est ce dont je disais précédemment : le RichEdit et sa ScrollBar ne font pas un, mais deux

    Je ne suis pas friand de toute méthode utilisant un Timer, mais là je ne vais pas faire la chochotte

    Archimède, ça marche impec !

    Ça ne détecte pas le "OnClick", mais le "OnMouseMove" sur la ScrollBar.

    Peut importe ; ça va déjà me dépanner un max


  4. #4
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Je suis tout à fait conscient que ce n'est pas top mais c'est une ébauche d'idée à améliorer...

    salut

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Un peu demander au RichEdit de nous avertir sur
    des évènements supplémentaires...

    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
     
    //*** NOTES 
    //*** Declaration pour Delphi 5...
    //*** sûrment inutile dans version superieur...
    Const
      EM_GETEVENTMASK = WM_USER + 59;
      EM_SETEVENTMASK = WM_USER + 69;
      ENM_MOUSEEVENTS = $00020000;
      ENM_SCROLLEVENTS= $00000008;
      EN_MSGFILTER    = $700;
     
    Type
      PMsgFilter = ^TMsgFilter;
    {$EXTERNALSYM _msgfilter}
      _msgfilter = Record
        nmhdr: TNMHdr;
        msg: UINT;
        wParam: WPARAM;
        lParam: LPARAM;
      End;
      TMsgFilter = _msgfilter;
     
    Function GetEventMask(h: HWND): integer;
    Begin
      result := sendmessage(h, EM_GETEVENTMASK, 0, 0);
    End;
     
    Function SetEventMask(h: hwnd; Mask: integer): integer;
    Begin
      result := sendmessage(h, EM_SETEVENTMASK, 0, Mask);
    End;
    Dans le create de la form...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var
      Mask:DWord;
    Begin
      Mask:=GetEventMask(RichEdit1.Handle);
      //Souris et Scroll Events
      Mask:=Mask Or ENM_MOUSEEVENTS or ENM_SCROLLEVENTS;
      //Demande Au RichEdit d'avertir la form d'évènement supplémentaire
      SetEventMask(RichEdit1.Handle, Mask);
    On Override la WndProc de la form...
    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
     
    Procedure TForm1.WndProc(Var Msg: TMessage);
    Var
      i: integer;
    Begin
      If (Msg.Msg = WM_NOTIFY) And (PNMHDR(Msg.lParam).hwndFrom = RichEdit1.handle) Then
      Begin
        If (PNMHDR(Msg.lParam).code = EN_MSGFILTER) Then
        Begin
          if PMSGFILTER(Msg.lparam).msg =WM_VSCROLL then
          begin
            //Scroll See help on GetScrollPos
            i:=0; //for Break Point only
          end;
          If PMSGFILTER(Msg.lparam).msg = WM_MOUSEMOVE Then
          Begin
            case PMSGFILTER(Msg.lparam).wParam of
              MK_LBUTTON:
                begin
                  //Un click gauche ici!
                  i:=0;//for Break Point only
                end;
              MK_RBUTTON:
                begin
                  //UnClick droit ici
                  i:=0;//for Break Point only
                end;
              MK_MBUTTON:
                begin
                  //UnClick centre ici
                  i:=0;//for Break Point only
                end;
            end;
          End;
        End;
      End;
      Inherited;
    End;
    À modifier selon votre défi du jour....

  6. #6
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Whaouuu !!! Éric, là je suis paré de tous les évènements concernant ce RichEdit !

    Merci les copains, grâce à vous je suis arrivé à mes fins

    @+

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Points : 4
    Points
    4
    Par défaut limites d'une solution sans composant
    Si le TRichEdit n'est pas directement placé sur la fiche, cette solution ne fonctionne pas : en effet, les messages sont envoyés au parent du TRichEdit, non à la fiche...

    Une solution consiste à dériver une nouvelle classe de TRichEdit en ajoutant deux méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure CreateWnd; override;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure CNNotify(var Msg: TWMNotify); message CN_NOTIFY
    Leur implémentation reprend ce qui a été précédemment proposé...

    Remarque finale : les constantes EM_GETEVENTMASK ... se trouve dans l'unit RichEdit.pas présente dans D5 ...

  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
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par cruchacode Voir le message
    Une solution consiste à dériver une nouvelle classe de TRichEdit en ajoutant deux méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure CreateWnd; override;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure CNNotify(var Msg: TWMNotify); message CN_NOTIFY
    Il était temps que tu arrives, on ce posais encore la question...

    T’inquiète je suis le rigolo du coin.

    ça c'est du déterrage de topic utile.

    Merci

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

Discussions similaires

  1. Détection clic sur scrollbar
    Par jibouze dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/04/2006, 17h36
  2. onclick sur bouton radio?
    Par Art19 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/07/2005, 14h43
  3. 2 Questions facile sur scrollbar et Accents
    Par mamizo dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/02/2005, 11h53
  4. [HTML][débutante] Map ou Onclick sur image ? Différent ?
    Par khany dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 08/12/2004, 14h05
  5. Réponses: 5
    Dernier message: 17/06/2004, 23h38

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