TMemo/fi
│
Deutsch (de) │
English (en) │
suomi (fi) │
français (fr) │
日本語 (ja) │
русский (ru) │
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ä):
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:
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:
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:
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:
- Luodaan uusi sovellus, jossa on TEdit-komponentti nimeltään Edit1, TMemo-komponentti nimeltään Memo1 ja kaksi TButton-painoinappikomponenttia Button1 ja Button2.
- Täydennä uses lausetta LCLProc, strutils ja lazUTF8 käännösyksiköillä.
- Täytetään Memo1 millä tahansa tekstillä Button1:n OnClick-tapahtumankäsittelijässä kuten esimerkissä: Tekstin kirjoittaminen ohjelmakoodissa on tehty.
- Lisätään lähdekoodin seuraava funktio:
// 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;
- Täydennetään Button2:n OnClick-tapahtumankäsittelijän koodia niin että se näyttää tältä:
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;
- Ohjelmaa suorittaessa voidaan memo1:n tekstikenttään laittaa painikkeella Button1 tekstiä. Laita etsittävä teksti Edit1:n. Painikkeella Button2 etsitään tätä tekstiä memo1:stä.
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:
- Luodaan uusi sovellus, jossa on TMemo-komponentti nimeltään Memo1 ja kolme TButton-painoinappikomponenttia Button1, Button2 ja Button3.
- Lisäksi laitetaan lomakkeelle komponenttipaletin Dialogs välilehdeltä TSaveDialog ja TOpenDialog komponentit.
- Vaihdetaan Button1 Caption-ominaisuuden tekstiksi "Fill memo" (Täytä muistio).
- Täytetään Memo1 millä tahansa tekstillä Button1:n OnClick-tapahtumankäsittelijässä kuten esimerkissä: Tekstin kirjoittaminen ohjelmakoodissa on tehty.
- Vaihdetaan Button2 Caption-ominaisuuden tekstiksi "Save memo" (Tallenna muistio).
- Vaihdetaan Button3 Caption-ominaisuuden tekstiksi "Load memo" (Avaa tiedosto).
- Muokataan painikkeiden tapahtumakäsittelijöitä:
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
- TMemo dokunmentaatio
- TRichMemo - Samantapainen kuin Delphin TRichEdit komponentti: muotoiltua tekstiä (väri, koko jne.)
- TListBox - vieritettävä tekstiluettelo.