Sign in Join
Wiki copytemporary

TMemo/fi

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

TMemo on monirivinen tekstikenttä. Se löytyy komponenttipaletin Standard-välilehdeltä.

Käyttö

Jos halutaan käyttää TMemo-komponenttia lomakkeella niin se voidaan valita Standard komponenttipaletilta ja sijoittaa klikkaamalla lomakkeelle. Tämän tehtyä on mahdollista muokata monirivistä tekstiä ohjelman ajonaikana. Esimerkiksi jos on lisätty TMemo-komponentti nimeltään Memo1 lomakkeelle Form1 niin siihen voidaan sijoittaa ohjelmassa tekstiä:Memo1.Lines.Text:='this is a singleline text';;

Voidaan myös lukea, missä tahansa lähdekoodissa, mitä tekstiä on siihen sillä hetkellä kirjoitettu myString:=Memo1.Lines.Text;.

On mahdollista kirjoittaa monirivistä tekstiä: Memo1.Lines.Text:='This'+LineEnding+'is'+LineEnding+'a'+LineEnding+'multiline'+LineEnding+'text';.

Tekstin liittäminen ja TStrings tai TStringList

Yleisesti teksti voidaan liittää TMemo:n käyttämällä TStringList tai sen vanhempaa TStrings. Seuraava esimerkki näyttää tämän ( Lomakkeella Form1 on TMemo nimeltään Memo1 ja TButton-komponentti nimeltään Button1. Button1 tapahtuman käsittelijä):

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;

Tekstin kirjoittaminen ohjelmakoodissa

TMemo:n voi kirjoittaa halutun tekstin suoraan ohjelmakoodissa:

pascal
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Clear;                              //poistaa kaiken tekstin Memo1:ssa
  Memo1.Lines.Add('This is the first line.');     //lisää rivin
  Memo1.Lines.Add('This is the second line.');
  Memo1.Lines.Add('This is the third line.');
  Memo1.Lines.Add('etc.');
end;

Rivin lukeminen

Jos halutaan tietää, mitä on tietyllä rivillä, sen voi tarkistaa suoraan myString:=Memo1.Lines[Indeksi];. Huomaa että TMemo.Lines:n indeksi on nolla pohjainen, eli ensimmäinen rivi olisi: myString:=Memo1.Lines[0];

Edelliseen esimerkkiin on lisätty vielä TButton Button2, jolla näytetään kolmas rivi seuraavasti:

pascal
procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage(Memo1.Lines[2]);
end;

Valittu teksti

Osaa tekstiä voi merkitä ohjelman ajon aikana pitämällä hiiren vasenta painiketta alhaalla tai painamalla [Shift] -näppäintä ja valitsemalla teksti hiirellä tai näppäimistöllä.

Tällä tavoin valittu teksti (String) voidaan näyttää näin:

pascal
procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage(Memo1.SelText); 
end;

Tekstistä haku

Päinvastaisessa kuin edellisessä esimerkissä, voidaan myös etsiä tekstiä ( String ) TMemo:sta ja näyttää paikan, josta se ​​alkaa: Position:=Memo1.SelStart;

Seuraava esimerkki näyttää, kuinka voit etsiä ja hakea jonkin tekstin TMemo:sta:

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 := UTF8Length(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;

Tallentaminen ja lataaminen

TMemon sisältö voidaan helposti tallentaa ja ladata käyttämällä luokan TStrings metodeilla SaveToFile ja LoadFromFile.

Seuraava esimerkki näyttää tämän:

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;

Katso myös


From the Free Pascal wiki, page "TMemo/fi", 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.

Revision 1, last changed by WikiArchive .

Edited on wiki.freepascal.org by 2 people, 2016–2020

From the official wiki's backup of 26 May 2024: who edited this page there, and when. Edits made there after that date were not recorded, and the earlier versions are not shown here; the main page says why.

WhenWhoWhat changed
DjzepiCreated page
TrevFixed syntax highlighting (minor)

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.