Sign in Join
Wiki copytemporary

TMemo/fi: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: TMemo/fi

OldNewLine
1+**TMemo** ![](/wiki-images/1/1b/Tmemo.png) on monirivinen tekstikenttä. Se löytyy [[Component Palette|komponenttipaletin]] [[Standard tab/fi|Standard-välilehdeltä]].
2+
3+## Käyttö
4+
5+Jos halutaan käyttää TMemo-komponenttia [[TForm|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';`**;
6+
7+Voidaan myös lukea, missä tahansa lähdekoodissa, mitä tekstiä on siihen sillä hetkellä kirjoitettu **`myString:=Memo1.Lines.Text;`**.
8+
9+On mahdollista kirjoittaa monirivistä tekstiä: **`Memo1.Lines.Text:='This'+LineEnding+'is'+LineEnding+'a'+LineEnding+'multiline'+LineEnding+'text';`**.
10+
11+### Tekstin liittäminen ja TStrings tai TStringList
12+
13+Yleisesti teksti voidaan liittää TMemo:n käyttämällä [[TStringList-TStrings Tutorial|TStringList]] tai sen vanhempaa [[TStringList-TStrings Tutorial|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ä):
14+
15+``` pascal
16+procedure TForm1.Button1Click(Sender: TObject);
17+var
18+ myStringList: TStringList;
19+begin
20+ myStringList:=TStringList.Create; //Create my StringList
21+ myStringList.Add('This is the first line.'); //add a line
22+ myStringList.Add('This is the second line.');
23+ myStringList.Add('This is the third line.');
24+ myStringList.Add('etc.');
25+ Memo1.Lines.Assign(myStringList); //assign text content
26+ myStringList.Free; //free my StringList
27+end;
28+```
29+
30+### Tekstin kirjoittaminen ohjelmakoodissa
31+
32+TMemo:n voi kirjoittaa halutun tekstin suoraan ohjelmakoodissa:
33+
34+``` pascal
35+procedure TForm1.Button1Click(Sender: TObject);
36+begin
37+ Memo1.Lines.Clear; //poistaa kaiken tekstin Memo1:ssa
38+ Memo1.Lines.Add('This is the first line.'); //lisää rivin
39+ Memo1.Lines.Add('This is the second line.');
40+ Memo1.Lines.Add('This is the third line.');
41+ Memo1.Lines.Add('etc.');
42+end;
43+```
44+
45+### Rivin lukeminen
46+
47+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];`**
48+
49+Edelliseen esimerkkiin on lisätty vielä TButton *Button2*, jolla näytetään kolmas rivi seuraavasti:
50+
51+``` pascal
52+procedure TForm1.Button2Click(Sender: TObject);
53+begin
54+ ShowMessage(Memo1.Lines[2]);
55+end;
56+```
57+
58+### Valittu teksti
59+
60+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ä.
61+
62+Tällä tavoin valittu teksti ([[String]]) voidaan näyttää näin:
63+
64+``` pascal
65+procedure TForm1.Button2Click(Sender: TObject);
66+begin
67+ ShowMessage(Memo1.SelText);
68+end;
69+```
70+
71+### Tekstistä haku
72+
73+Päinvastaisessa kuin edellisessä esimerkissä, voidaan myös etsiä tekstiä ( [[String]] ) TMemo:sta ja näyttää paikan, josta se ​​alkaa: **`Position:=Memo1.SelStart;`**
74+
75+Seuraava esimerkki näyttää, kuinka voit etsiä ja hakea jonkin tekstin TMemo:sta:
76+
77+- Luodaan uusi sovellus, jossa on [[TEdit]]-komponentti nimeltään *Edit1*, TMemo-komponentti nimeltään *Memo1* ja kaksi [[TButton]]-painoinappikomponenttia *Button1* ja *Button2*.
78+- Täydennä uses lausetta **LCLProc**, **strutils** ja **lazUTF8** käännösyksiköillä.
79+- Täytetään Memo1 millä tahansa tekstillä *Button1*:n *OnClick*-tapahtumankäsittelijässä kuten esimerkissä: [[TMemo/fi|Tekstin kirjoittaminen ohjelmakoodissa]] on tehty.
80+- Lisätään lähdekoodin seuraava funktio:
81+
82+``` pascal
83+// FindInMemo: Returns the position where the string to search was found
84+function FindInMemo(AMemo: TMemo; AString: String; StartPos: Integer): Integer;
85+begin
86+ Result := PosEx(AString, AMemo.Text, StartPos);
87+ if Result > 0 then
88+ begin
89+ AMemo.SelStart := UTF8Length(PChar(AMemo.Text), Result - 1);
90+ AMemo.SelLength := UTF8Length(AString);
91+ AMemo.SetFocus;
92+ end;
93+end;
94+```
95+
96+- Täydennetään *Button2*:n *OnClick*-tapahtumankäsittelijän koodia niin että se näyttää tältä:
97+
98+``` pascal
99+procedure TForm1.Button2Click(Sender: TObject);
100+const
101+ SearchStr: String = ''; // The string to search for
102+ SearchStart: Integer = 0; // Last position of the string to search for
103+begin
104+ if SearchStr <> Edit1.Text then begin // Falls sich der zu suchende String geändert hat
105+ SearchStart := 0;
106+ SearchStr := Edit1.Text;
107+ end;
108+ SearchStart := FindInMemo(Memo1, SearchStr, SearchStart + 1);
109+
110+ if SearchStart > 0 then
111+ Caption := 'Found at position['+IntToStr(SearchStart)+']!'
112+ else
113+ Caption := 'No further finds!';
114+end;
115+```
116+
117+- 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ä.
118+
119+### Tallentaminen ja lataaminen
120+
121+TMemon sisältö voidaan helposti tallentaa ja ladata käyttämällä luokan [[TStringList-TStrings Tutorial|TStrings]] metodeilla *SaveToFile* ja *LoadFromFile*.
122+
123+Seuraava esimerkki näyttää tämän:
124+
125+- Luodaan uusi sovellus, jossa on TMemo-komponentti nimeltään *Memo1* ja kolme [[TButton]]-painoinappikomponenttia *Button1*, *Button2* ja *Button3*.
126+- Lisäksi laitetaan lomakkeelle komponenttipaletin [[Dialogs tab|Dialogs]] välilehdeltä [[TSaveDialog]] ja [[TOpenDialog]] komponentit.
127+- Vaihdetaan *Button1* Caption-ominaisuuden tekstiksi "Fill memo" (Täytä muistio).
128+- Täytetään Memo1 millä tahansa tekstillä *Button1*:n *OnClick*-tapahtumankäsittelijässä kuten esimerkissä: [[TMemo/fi|Tekstin kirjoittaminen ohjelmakoodissa]] on tehty.
129+- Vaihdetaan *Button2* Caption-ominaisuuden tekstiksi "Save memo" (Tallenna muistio).
130+- Vaihdetaan *Button3* Caption-ominaisuuden tekstiksi "Load memo" (Avaa tiedosto).
131+- Muokataan painikkeiden tapahtumakäsittelijöitä:
132+
133+``` pascal
134+procedure TForm1.Button2Click(Sender: TObject);
135+begin
136+ if SaveDialog1.Execute then
137+ Memo1.Lines.SaveToFile(SaveDialog1.FileName);
138+end;
139+
140+procedure TForm1.Button3Click(Sender: TObject);
141+begin
142+ if OpenDialog1.Execute then
143+ Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
144+end;
145+```
146+
147+## Katso myös
148+
149+- [[doc:lcl/stdctrls/tmemo.html|TMemo dokunmentaatio]]
150+- [[RichMemo|TRichMemo]] - Samantapainen kuin Delphin TRichEdit komponentti: muotoiltua tekstiä (väri, koko jne.)
151+- [[TListBox]] - vieritettävä tekstiluettelo.
152+
153+---
154+*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](/wiki-contact).*

Back to history