Sign in Join
Wiki copytemporary

TMemo/fr: what changed

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

OldNewLine
11Un **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]].
22
33# Usage
44
55Pour 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.
66
77Par 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]].
88
99Vous pouvez aussi utiliser le texte partout dans le code source le texte stocké dans *Memo1* avec **`myString := Memo1.Text;`**.
1010
1111Il est aussi possible d'affecter un texte multi-ligne avec **`Memo1.Text := 'This'+LineEnding+'is'+LineEnding+'a'+LineEnding+'multiline'+LineEnding+'text';`**.
1212
1313## Affectation d'une TStrings ou d'une TStringList
1414
1515Un 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).
1616
1717``` pascal
1818procedure TForm1.Button1Click(Sender: TObject);
1919var
2020 myStringList: TStringList;
2121begin
2222 myStringList:=TStringList.Create; //Create my StringList
2323 myStringList.Add('This is the first line.'); //add a line
2424 myStringList.Add('This is the second line.');
2525 myStringList.Add('This is the third line.');
2626 myStringList.Add('etc.');
2727 Memo1.Lines.Assign(myStringList); //assign text content
2828 myStringList.Free; //free my StringList
2929end;
3030```
3131
3232## Insérer des lignes directement
3333
3434Vous pouvez ajouter directement le contenu du mémo, par exemple :
3535
3636``` pascal
3737procedure TForm1.Button1Click(Sender: TObject);
3838begin
3939 Memo1.Lines.Clear; //delete all lines of Memo1
4040 Memo1.Lines.Add('This is the first line.'); //add a line
4141 Memo1.Lines.Add('This is the second line.');
4242 Memo1.Lines.Add('This is the third line.');
4343 Memo1.Lines.Add('etc.');
4444end;
4545```
4646
4747## Lire une ligne
4848
4949Si 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];`**
5050
5151Dans l'exemple précédent, ajoutez un nouveau TButton *Button2*, vous pouvez afficher la troisième ligne comme suit :
5252
5353``` pascal
5454procedure TForm1.Button2Click(Sender: TObject);
5555begin
5656 ShowMessage(Memo1.Lines[2]);
5757end;
5858```
5959
6060## Texte sélectionné
6161
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 :
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 `Shift` et en sélectionnant le texte avec la souris ou le clavier. Vous pouvez afficher cette partie de texte en faisant cela :
6363
6464``` pascal
6565procedure TForm1.Button2Click(Sender: TObject);
6666begin
6767 ShowMessage(Memo1.SelText);
6868end;
6969```
7070
7171## Rechercher du texte
7272
7373Contrairement à l'exemple précédent, vous pouvez aussi rechercher visuellement un texte dans un mémo et recupérer sa position **`Position := Memo1.SelStart;`**
7474
7575L'exemple suivant montre comment vous pouvez rechercher et rechercher encore un texte dans un mémo :
7676
7777- Créez une nouvelle application avec un [[TEdit/fr|TEdit]] *Edit1*, un TMemo *Memo1* et deux [[TButton/fr|TButton]] *Button1* et *Button2*.
7878- Complétez la clause uses avec **LCLProc** et **strutils**.
7979- 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.
8080- 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) :
8181
8282``` pascal
8383// FindInMemo: Returns the position where the string to search was found
8484function FindInMemo(AMemo: TMemo; AString: String; StartPos: Integer): Integer;
8585begin
8686 Result := PosEx(AString, AMemo.Text, StartPos);
8787 if Result > 0 then
8888 begin
8989 AMemo.SelStart := UTF8Length(PChar(AMemo.Text), Result - 1);
9090 AMemo.SelLength := Length(AString);
9191 AMemo.SetFocus;
9292 end;
9393end;
9494```
9595
9696- Maintenant, ajoutez le code suivant dans le gestionnaire d'événement *OnClick* depuis *Button2* :
9797
9898``` pascal
9999procedure TForm1.Button2Click(Sender: TObject);
100100const
101101 SearchStr: String = ''; // The string to search for
102102 SearchStart: Integer = 0; // Last position of the string to search for
103103begin
104104 if SearchStr <> Edit1.Text then begin // Falls sich der zu suchende String geändert hat
105105 SearchStart := 0;
106106 SearchStr := Edit1.Text;
107107 end;
108108 SearchStart := FindInMemo(Memo1, SearchStr, SearchStart + 1);
109109
110110 if SearchStart > 0 then
111111 Caption := 'Found at position['+IntToStr(SearchStart)+']!'
112112 else
113113 Caption := 'No further finds!';
114114end;
115115```
116116
117117- 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*.
118118
119119## Enregistrer et charger
120120
121121Vous 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]].
122122
123123L'exemple suivant vous montre comment :
124124
125125- Créez une nouvelle application avec le TMemo *Memo1*et trois [[TButton/fr|TButton]] *Button1*, *Button2* et *Button3*.
126126- Ajoutez un [[TSaveDialog/fr|TSaveDialog]] et un [[TOpenDialog/fr|TOpenDialog]] depuis la palette de composants *Dialogs* sur la fiche.
127127- Modifiez l'intitulé de *Button1* en "Fill memo".
128128- 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.
129129- Modifiez l'intitulé du *Button2* en "Save memo".
130130- Modifiez l'intitulé du *Button3* en "Load memo".
131131- maintenant modifiez les gestionnaires d'événement *OnClick* des boutons :
132132
133133``` pascal
134134procedure TForm1.Button2Click(Sender: TObject);
135135begin
136136 if SaveDialog1.Execute then
137137 Memo1.Lines.SaveToFile(SaveDialog1.FileName);
138138end;
139139
140140procedure TForm1.Button3Click(Sender: TObject);
141141begin
142142 if OpenDialog1.Execute then
143143 Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
144144end;
145145```
146146
147147# Voir aussi
148148
149149- [[doc:lcl/stdctrls/tmemo.html|Doc. TMemo]]
150150- [[RichMemo/fr|TRichMemo]] - Comme le composant TRichEdit de Delphi : texte formaté (couleur, taille, etc.)
151151- [[TListBox/fr|TListBox]] - Une liste de chaînes avec défilement
152152
153153---
154154*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