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
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
Bonjour Pierre,
Cela dépend de ce que vous voulez faire. J'utilise ceci pour l'ascenseur vertical :
Par exemple
Le click sur BitBtn1 donne
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;
- 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.
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
Bonsoir,
Ce que vous voulez, c'est intercepter l'évènement :
Vite fait donc mal fait (incomplet)... mais fonctionnel (Une TForm, un Tlabel) :
Plus complet et plus propre : http://cheat-engine.googlecode.com/s...llTreeView.pas
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.
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager