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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    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 Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    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 Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    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 Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    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 émérite

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

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    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....
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    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

    @+

+ 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