TMemo/fr
│
Deutsch (de) │
English (en) │
suomi (fi) │
français (fr) │
日本語 (ja) │
русский (ru) │
Un TMemo est un contrôle d'édition de texte sur plusieurs lignes. Il est disponible depuis l'onglet Standard de la palette de composants.
Usage
Pour utiliser un TMemo sur une 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.
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 chaîne.
Vous pouvez aussi utiliser le texte partout dans le code source le texte stocké dans Memo1 avec myString := Memo1.Text;
.
Il est aussi possible d'affecter un texte multi-ligne avec Memo1.Text := 'This'+LineEnding+'is'+LineEnding+'a'+LineEnding+'multiline'+LineEnding+'text';
.
Affectation d'une TStrings ou d'une TStringList
Un usage courant pour assigner un texte à un TMemo est l'utilisation d'un TStringList ou de son parentTStrings. L'exemple suivant montre ceci (dans le gestionnaire d'événement d'un TButton Button1 inséré dans la fiche Form1 avec un TMemo Memo1 posé dessus).
procedure TForm1.Button1Click(Sender: TObject);
var
myStringList: TStringList;
begin
myStringList:=TStringList.Create; //Create my StringList
myStringList.Add('This is the first line.'); //add a line
myStringList.Add('This is the second line.');
myStringList.Add('This is the third line.');
myStringList.Add('etc.');
Memo1.Lines.Assign(myStringList); //assign text content
myStringList.Free; //free my StringList
end;
Insérer des lignes directement
Vous pouvez ajouter directement le contenu du mémo, par exemple :
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear; //delete all lines of Memo1
Memo1.Lines.Add('This is the first line.'); //add a line
Memo1.Lines.Add('This is the second line.');
Memo1.Lines.Add('This is the third line.');
Memo1.Lines.Add('etc.');
end;
Lire une ligne
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];
Dans l'exemple précédent, ajoutez un nouveau TButton Button2, vous pouvez afficher la troisième ligne comme suit :
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(Memo1.Lines[2]);
end;
Texte sélectionné
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 :
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(Memo1.SelText);
end;
Rechercher du texte
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;
L'exemple suivant montre comment vous pouvez rechercher et rechercher encore un texte dans un mémo :
- Créez une nouvelle application avec un TEdit Edit1, un TMemo Memo1 et deux TButton Button1 et Button2.
- Complétez la clause uses avec LCLProc et strutils.
- 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.
- Dans l'éditeur de code source, ajoutez la fonction suivante (basée sur l'exemple issu du forum Lazarus allemand) :
// FindInMemo: Returns the position where the string to search was found
function FindInMemo(AMemo: TMemo; AString: String; StartPos: Integer): Integer;
begin
Result := PosEx(AString, AMemo.Text, StartPos);
if Result > 0 then
begin
AMemo.SelStart := UTF8Length(PChar(AMemo.Text), Result - 1);
AMemo.SelLength := Length(AString);
AMemo.SetFocus;
end;
end;
- Maintenant, ajoutez le code suivant dans le gestionnaire d'événement OnClick depuis Button2 :
procedure TForm1.Button2Click(Sender: TObject);
const
SearchStr: String = ''; // The string to search for
SearchStart: Integer = 0; // Last position of the string to search for
begin
if SearchStr <> Edit1.Text then begin // Falls sich der zu suchende String geändert hat
SearchStart := 0;
SearchStr := Edit1.Text;
end;
SearchStart := FindInMemo(Memo1, SearchStr, SearchStart + 1);
if SearchStart > 0 then
Caption := 'Found at position['+IntToStr(SearchStart)+']!'
else
Caption := 'No further finds!';
end;
- 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.
Enregistrer et charger
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 TStrings.
L'exemple suivant vous montre comment :
- Créez une nouvelle application avec le TMemo Memo1et trois TButton Button1, Button2 et Button3.
- Ajoutez un TSaveDialog et un TOpenDialog depuis la palette de composants Dialogs sur la fiche.
- Modifiez l'intitulé de Button1 en "Fill memo".
- 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.
- Modifiez l'intitulé du Button2 en "Save memo".
- Modifiez l'intitulé du Button3 en "Load memo".
- maintenant modifiez les gestionnaires d'événement OnClick des boutons :
procedure TForm1.Button2Click(Sender: TObject);
begin
if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
Voir aussi
- Doc. TMemo
- TRichMemo - Comme le composant TRichEdit de Delphi : texte formaté (couleur, taille, etc.)
- TListBox - Une liste de chaînes avec défilement