Title : Adaptation code [TMemo] vers [TRichEdit], problème [ScrollBar]
Bonjour tout le monde![]()
Je planche et je bute lamentablement sur une petite extrapolation de code prévu pour un TMemo que je tente d'adapter pour un TRichEdit.
Avec un TMemo tout fonctionne nickel/chrôme, mais si je remplace ce TMemo par un TRichEdit, là j'ai un gros problème de ScrollBar.
Je veux dire qu'avec un TRichEdit lorsque le texte à rechercher est plus loin que le bord inférieur de cet editor, alors le ScrollBar ne descend plus !
Pas facile de bien expliquer, mais autrement dit : la procédure de Find fonctionne impec, mais l'utilisateur ne peux plus voir la suite de la recherche s'il ne manoeubre pas manuellement le ScrollBar
J'ai tenté avec d'autres sortes de compos hérités de TRichEdit, mais rien à faire, c'est toujours pareil !
Je suis débutant et là je suis bloqué car je ne comprends pas grand chose ; le TRichEdit doit pourtant doit avoir le TMemo comme ancêtre non ?
Voici le code tout entier :
J'ajoute qu'hier je pensais avoir trouvé la solution en testant toutes les propriétés du ScrollBar, mais non, trop facile...,
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 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) FindDialog1: TFindDialog; Chercher: TButton; Editor: TRichEdit; procedure ChercherClick(Sender: TObject); procedure FindDialog1Find(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ChercherClick(Sender: TObject); begin FindDialog1.Position := Point(Editor.Left + Editor.Width, Editor.Top); FindDialog1.Execute; end; procedure TForm1.FindDialog1Find(Sender: TObject); var FoundPos, InitPos: Integer; begin {search in the text after the current selection} InitPos := Editor.SelStart + Editor.SelLength; FoundPos := Pos (FindDialog1.FindText, Copy (Editor.Text, InitPos + 1, Length (Editor.Text) - InitPos)); if FoundPos > 0 then begin {activate the component, and select the text} Editor.SetFocus; Editor.SelStart := InitPos + FoundPos - 1; Editor.SelLength := Length(FindDialog1.FindText); end else begin MessageBeep(MB_ICONASTERISK); MessageDlg ('Text not found', mtInformation, [mbOK], 0); end; end; END.
Merci beaucoup de vos lumières, là je suis curieux de connaître le fin mot de cette histoire.
Partager