Wiki-kopiopeilipalvelin

Tämä on pascal.chatin wikin peilipalvelin. Muokkaus, historia ja kirjautuminen ovat siellä.

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.

Versio 1, viimeksi muokannut WikiArchive .