Sign in Join
Wiki copytemporary

TMemo/fr: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: TMemo/fr

OldNewLine
1+Un **TMemo** ![](/wiki-images/1/1b/Tmemo.png) est un contrôle d'édition de texte sur plusieurs lignes. Il est disponible depuis l'[[Standard tab/fr|onglet Standard]] de la [[Component Palette/fr|palette de composants]].
2+
3+# Usage
4+
5+Pour utiliser un TMemo sur une [[TForm/fr|fiche]], vous pouvez simplement le sélectionner dans la palette *Standard* et le placer en cliquant sur la fiche. Dans cette zone de saisie, vous pouvez maintenant éditer un texte multi-ligne à l'exécution.
6+
7+Par exemple, dès que vous avez ajouté un TMemo *Memo1* à votre fiche *Form1*, vous pouvez utilisez **`Memo1.Text:='this is a singleline text';`** pourt affecter une [[String/fr|chaîne]].
8+
9+Vous pouvez aussi utiliser le texte partout dans le code source le texte stocké dans *Memo1* avec **`myString := Memo1.Text;`**.
10+
11+Il est aussi possible d'affecter un texte multi-ligne avec **`Memo1.Text := 'This'+LineEnding+'is'+LineEnding+'a'+LineEnding+'multiline'+LineEnding+'text';`**.
12+
13+## Affectation d'une TStrings ou d'une TStringList
14+
15+Un usage courant pour assigner un texte à un TMemo est l'utilisation d'un [[TStringList-TStrings Tutorial/fr|TStringList]] ou de son parent[[TStringList-TStrings Tutorial/fr|TStrings]]. L'exemple suivant montre ceci (dans le gestionnaire d'événement d'un [[TButton/fr|TButton]] *Button1* inséré dans la [[TForm/fr|fiche]] *Form1* avec un TMemo *Memo1* posé dessus).
16+
17+``` pascal
18+procedure TForm1.Button1Click(Sender: TObject);
19+var
20+ myStringList: TStringList;
21+begin
22+ myStringList:=TStringList.Create; //Create my StringList
23+ myStringList.Add('This is the first line.'); //add a line
24+ myStringList.Add('This is the second line.');
25+ myStringList.Add('This is the third line.');
26+ myStringList.Add('etc.');
27+ Memo1.Lines.Assign(myStringList); //assign text content
28+ myStringList.Free; //free my StringList
29+end;
30+```
31+
32+## Insérer des lignes directement
33+
34+Vous pouvez ajouter directement le contenu du mémo, par exemple :
35+
36+``` pascal
37+procedure TForm1.Button1Click(Sender: TObject);
38+begin
39+ Memo1.Lines.Clear; //delete all lines of Memo1
40+ Memo1.Lines.Add('This is the first line.'); //add a line
41+ Memo1.Lines.Add('This is the second line.');
42+ Memo1.Lines.Add('This is the third line.');
43+ Memo1.Lines.Add('etc.');
44+end;
45+```
46+
47+## Lire une ligne
48+
49+Si voulez savoir ce qu'il y a dans une ligne particulière, vous pouvez le voir directement avec **`myString := Memo1.Lines[Index];`**. Remarquez que l'index de *TMemo.Lines* est basé sur zéro i.e. la première ligne sera **`myString := Memo1.Lines[0];`**
50+
51+Dans l'exemple précédent, ajoutez un nouveau TButton *Button2*, vous pouvez afficher la troisième ligne comme suit :
52+
53+``` pascal
54+procedure TForm1.Button2Click(Sender: TObject);
55+begin
56+ ShowMessage(Memo1.Lines[2]);
57+end;
58+```
59+
60+## Texte sélectionné
61+
62+Vous pouvez marquer (sélectionner) des parties de texte à l'exécution en maintenant enfoncé le bouton gauche de la souris ou en pressant sur la touche <span class="kbd">Shift</span> et en sélectionnant le texte avec la souris ou le clavier. Vous pouvez afficher cette partie de texte en faisant cela :
63+
64+``` pascal
65+procedure TForm1.Button2Click(Sender: TObject);
66+begin
67+ ShowMessage(Memo1.SelText);
68+end;
69+```
70+
71+## Rechercher du texte
72+
73+Contrairement à l'exemple précédent, vous pouvez aussi rechercher visuellement un texte dans un mémo et recupérer sa position **`Position := Memo1.SelStart;`**
74+
75+L'exemple suivant montre comment vous pouvez rechercher et rechercher encore un texte dans un mémo :
76+
77+- Créez une nouvelle application avec un [[TEdit/fr|TEdit]] *Edit1*, un TMemo *Memo1* et deux [[TButton/fr|TButton]] *Button1* et *Button2*.
78+- Complétez la clause uses avec **LCLProc** et **strutils**.
79+- Dans le gestionnaire de l'événement *OnClick* de *Button1*, remplissez le mémo avec du texte, comme dans l'exemple Insérer des lignes directement.
80+- Dans l'éditeur de code source, ajoutez la fonction suivante (basée sur l'[exemple](http://www.lazarusforum.de/viewtopic.php?p=39260#p39260) issu du forum Lazarus allemand) :
81+
82+``` pascal
83+// FindInMemo: Returns the position where the string to search was found
84+function FindInMemo(AMemo: TMemo; AString: String; StartPos: Integer): Integer;
85+begin
86+ Result := PosEx(AString, AMemo.Text, StartPos);
87+ if Result > 0 then
88+ begin
89+ AMemo.SelStart := UTF8Length(PChar(AMemo.Text), Result - 1);
90+ AMemo.SelLength := Length(AString);
91+ AMemo.SetFocus;
92+ end;
93+end;
94+```
95+
96+- Maintenant, ajoutez le code suivant dans le gestionnaire d'événement *OnClick* depuis *Button2* :
97+
98+``` pascal
99+procedure TForm1.Button2Click(Sender: TObject);
100+const
101+ SearchStr: String = ''; // The string to search for
102+ SearchStart: Integer = 0; // Last position of the string to search for
103+begin
104+ if SearchStr <> Edit1.Text then begin // Falls sich der zu suchende String geändert hat
105+ SearchStart := 0;
106+ SearchStr := Edit1.Text;
107+ end;
108+ SearchStart := FindInMemo(Memo1, SearchStr, SearchStart + 1);
109+
110+ if SearchStart > 0 then
111+ Caption := 'Found at position['+IntToStr(SearchStart)+']!'
112+ else
113+ Caption := 'No further finds!';
114+end;
115+```
116+
117+- Maintenant à l'exécution, vous pouvez remplir le mémo avec *Button1*, coller le texte à chercher dans *Edit1* et rechercher puis continuer à chercher dans ce mémo avec *Button2*.
118+
119+## Enregistrer et charger
120+
121+Vous pouvez tout aussi facilement enregistrer et charger le contenu d'un mémo en utilisant les méthodes *SaveToFile* et *LoadFromFile* de la classe [[TStringList-TStrings Tutorial/fr|TStrings]].
122+
123+L'exemple suivant vous montre comment :
124+
125+- Créez une nouvelle application avec le TMemo *Memo1*et trois [[TButton/fr|TButton]] *Button1*, *Button2* et *Button3*.
126+- Ajoutez un [[TSaveDialog/fr|TSaveDialog]] et un [[TOpenDialog/fr|TOpenDialog]] depuis la palette de composants *Dialogs* sur la fiche.
127+- Modifiez l'intitulé de *Button1* en "Fill memo".
128+- Dans le gestionnaire d'événement *OnClick* de *Button1*, remplissez le mémo avec du texte, comme dans l'exemple Insérer des lignes directement.
129+- Modifiez l'intitulé du *Button2* en "Save memo".
130+- Modifiez l'intitulé du *Button3* en "Load memo".
131+- maintenant modifiez les gestionnaires d'événement *OnClick* des boutons :
132+
133+``` pascal
134+procedure TForm1.Button2Click(Sender: TObject);
135+begin
136+ if SaveDialog1.Execute then
137+ Memo1.Lines.SaveToFile(SaveDialog1.FileName);
138+end;
139+
140+procedure TForm1.Button3Click(Sender: TObject);
141+begin
142+ if OpenDialog1.Execute then
143+ Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
144+end;
145+```
146+
147+# Voir aussi
148+
149+- [[doc:lcl/stdctrls/tmemo.html|Doc. TMemo]]
150+- [[RichMemo/fr|TRichMemo]] - Comme le composant TRichEdit de Delphi : texte formaté (couleur, taille, etc.)
151+- [[TListBox/fr|TListBox]] - Une liste de chaînes avec défilement
152+
153+---
154+*From the Free Pascal wiki, page "TMemo/fr", as it stood on 2020-03-01 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history