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

Lazarus Pascal Discussion :

Déplacement de l'ascenseur d'un TMemo [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut Déplacement de l'ascenseur d'un TMemo
    Bonjour à toutes et à tous,

    Dans un TMemo, je voudrais récupérer la position de l'ascenseur lorsqu'on le déplace. Mais je ne vois pas d'évènement correspondant.

    Savez-vous comment faire ?

    Merci de votre aide.

    Pierre

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Pierre,

    Cela dépend de ce que vous voulez faire. J'utilise ceci pour l'ascenseur vertical :
    Par exemple
    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
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i : integer;
    begin
      with Memo1 do begin
        ScrollBars := ssAutoVertical;   
        Clear;
        for i := 0 to 999 do
         memo1.Lines.add(IntToStr(i));
      end;   
    end;
     
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    Showmessage(IntToStr(Memo1.VertScrollBar.Position)); //ou .ScrollPos)
    Showmessage(IntToStr(Memo1.VertScrollBar.ScrollPos*Memo1.VertScrollBar.Increment)+'/'+ IntToStr((Memo1.VertScrollBar.Range-1)*Memo1.VertScrollBar.Increment));
    end;
    Le click sur BitBtn1 donne
    • pour le premier showmessage : le numéro de la première ligne visible (qui est liée à la position de l'ascenseur) dans le TMemo... quelque soit la police et sa taille...
    • pour le deuxième : la position "en pixel" dans le cadre intérieur (range étant le nb de lignes)...


    Cordialement. Gilles
    Dernière modification par Invité ; 11/07/2012 à 15h14.

  3. #3
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Merci selzig pour cette réponse.

    Pour autant, ce n'est pas ce que je souhaite faire.

    Ce que je souhaite est que suite à un déplacement de l'ascenseur, un évènement se déclenche (et non moi qui vais chercher l'information) m'informant de la position de l'ascenseur.

    Cordialement.

    Pierre

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Ce que vous voulez, c'est intercepter l'évènement :

    Vite fait donc mal fait (incomplet)... mais fonctionnel (Une TForm, un Tlabel) :
    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
    69
    unit Unit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, Lmessages;
     
    type
     
      { TmyMemo }
      TmyMemo = class(TMemo)
      private
        fOnVScroll: TNotifyEvent;
      public
        procedure WMVScroll(var Msg : TLMScroll); message LM_VSCROLL;
      published
        property onVScroll : TNotifyEvent read fOnVScroll write fOnVScroll;
      end;
     
      { TForm1 }
      TForm1 = class(TForm)
        Label1  : TLabel;
        myMemo1 : TmyMemo;
        procedure FormCreate(Sender: TObject);
      protected
     
      private
        { private declarations }
     
      public
        { public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.lfm}
     
    { TmyMemo }
    procedure TMyMemo.WMVScroll(var Msg : TLMScroll);
    begin
      inherited;
      if assigned(fOnVScroll) then fOnVScroll(self);
      with Form1 do Label1.Caption := IntToStr(myMemo1.VertScrollBar.Position);
    end;
     
    { TForm1 }
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i : integer;
    begin
      myMemo1 := TmyMemo.Create(Self);
      with myMemo1 do begin
        Parent := Form1;
        ScrollBars := ssAutoBoth;
        Clear;
        for i := 0 to 100 do Lines.add(IntToStr(i));
      end;
      with Label1 do begin
        left := 6;
        top  := 100;
      end;
    end;
     
    end.
    Plus complet et plus propre : http://cheat-engine.googlecode.com/s...llTreeView.pas

    Le plus pratique serait de créer votre propre composant en dérivant un TMemo (ou un TCustomMemo) et de le placer dans un lpk.

    Cordialement. Gilles

  5. #5
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Merci selzig, c'est tout à fait ce qu'il me fallait. Je n'étais pas arrivé à trouver le message LM_VSCROLL ; ou plutôt, je n'avais pas pensé regarder de ce côté..

    Cordialement.

    Pierre

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

Discussions similaires

  1. [WD14] Déplacement d'un Ascenseur automatique
    Par jimmypage dans le forum WinDev
    Réponses: 2
    Dernier message: 03/05/2012, 13h57
  2. TDbGrid Déplacement grille en même temps que l'ascenseur
    Par jackfirst72 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 26/06/2008, 09h06
  3. Limiter le déplacement de la souris
    Par el_bouleto dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/11/2002, 23h56
  4. TMemo et TRichEdit
    Par Invité dans le forum C++Builder
    Réponses: 6
    Dernier message: 09/10/2002, 20h37
  5. Retour chariot dans un TMemo ?
    Par Vincent PETIT dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/08/2002, 18h55

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