Difference between revisions of "TMemo/fi"
(Created page with "{{TMemo}} '''TMemo''' image:tmemo.png on monirivinen tekstikenttä. Se löytyy komponenttipaletin Standard-välilehdeltä. ==K...") |
m (Fixed syntax highlighting) |
||
Line 17: | Line 17: | ||
Seuraava esimerkki näyttää tämän ( Lomakkeella ''Form1'' on TMemo nimeltään ''Memo1'' ja [[TButton]]-komponentti nimeltään ''Button1''. Button1 tapahtuman käsittelijä): | Seuraava esimerkki näyttää tämän ( Lomakkeella ''Form1'' on TMemo nimeltään ''Memo1'' ja [[TButton]]-komponentti nimeltään ''Button1''. Button1 tapahtuman käsittelijä): | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
procedure TForm1.Button1Click(Sender: TObject); | procedure TForm1.Button1Click(Sender: TObject); | ||
var | var | ||
Line 34: | Line 34: | ||
===Tekstin kirjoittaminen ohjelmakoodissa=== | ===Tekstin kirjoittaminen ohjelmakoodissa=== | ||
TMemo:n voi kirjoittaa halutun tekstin suoraan ohjelmakoodissa: | TMemo:n voi kirjoittaa halutun tekstin suoraan ohjelmakoodissa: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
procedure TForm1.Button1Click(Sender: TObject); | procedure TForm1.Button1Click(Sender: TObject); | ||
begin | begin | ||
Line 51: | Line 51: | ||
Edelliseen esimerkkiin on lisätty vielä TButton ''Button2'', jolla näytetään kolmas rivi seuraavasti: | Edelliseen esimerkkiin on lisätty vielä TButton ''Button2'', jolla näytetään kolmas rivi seuraavasti: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
procedure TForm1.Button2Click(Sender: TObject); | procedure TForm1.Button2Click(Sender: TObject); | ||
begin | begin | ||
Line 64: | Line 64: | ||
Tällä tavoin valittu teksti ([[String]]) voidaan näyttää näin: | Tällä tavoin valittu teksti ([[String]]) voidaan näyttää näin: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
procedure TForm1.Button2Click(Sender: TObject); | procedure TForm1.Button2Click(Sender: TObject); | ||
begin | begin | ||
Line 80: | Line 80: | ||
* Täytetään Memo1 millä tahansa tekstillä ''Button1'':n ''OnClick''-tapahtumankäsittelijässä kuten esimerkissä: [[TMemo/fi#Tekstin kirjoittaminen ohjelmakoodissa|''Tekstin kirjoittaminen ohjelmakoodissa'']] on tehty. | * Täytetään Memo1 millä tahansa tekstillä ''Button1'':n ''OnClick''-tapahtumankäsittelijässä kuten esimerkissä: [[TMemo/fi#Tekstin kirjoittaminen ohjelmakoodissa|''Tekstin kirjoittaminen ohjelmakoodissa'']] on tehty. | ||
* Lisätään lähdekoodin seuraava funktio: | * Lisätään lähdekoodin seuraava funktio: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
// FindInMemo: Returns the position where the string to search was found | // FindInMemo: Returns the position where the string to search was found | ||
function FindInMemo(AMemo: TMemo; AString: String; StartPos: Integer): Integer; | function FindInMemo(AMemo: TMemo; AString: String; StartPos: Integer): Integer; | ||
Line 94: | Line 94: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Täydennetään ''Button2'':n ''OnClick''-tapahtumankäsittelijän koodia niin että se näyttää tältä: | * Täydennetään ''Button2'':n ''OnClick''-tapahtumankäsittelijän koodia niin että se näyttää tältä: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
procedure TForm1.Button2Click(Sender: TObject); | procedure TForm1.Button2Click(Sender: TObject); | ||
const | const | ||
Line 126: | Line 126: | ||
* Vaihdetaan ''Button3'' Caption-ominaisuuden tekstiksi "Load memo" (Avaa tiedosto). | * Vaihdetaan ''Button3'' Caption-ominaisuuden tekstiksi "Load memo" (Avaa tiedosto). | ||
* Muokataan painikkeiden tapahtumakäsittelijöitä: | * Muokataan painikkeiden tapahtumakäsittelijöitä: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
procedure TForm1.Button2Click(Sender: TObject); | procedure TForm1.Button2Click(Sender: TObject); | ||
begin | begin |
Latest revision as of 11:50, 1 March 2020
│
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.