Copie du wikimiroir

Ceci est un miroir du wiki de pascal.chat. La modification, l’historique et la connexion se trouvent là-bas.

TMemo/fr

Deutsch · English · Français · Suomi · Русский · 日本語

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).

pascal
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 :

pascal
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 :

pascal
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 :

pascal
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 :

pascal
// 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;
pascal
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;

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 :

pascal
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


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.

Version 2, dernière modification par WikiArchive .