TMemo/fi

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) suomi (fi) français (fr) 日本語 (ja) русский (ru)

TMemo tmemo.png 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


LCL Components
Component Tab Components
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn • TSpeedButton • TStaticText • TImage • TShape • TBevel • TPaintBox • TNotebook • TLabeledEdit • TSplitter • TTrayIcon • TControlBar • TFlowPanel • TMaskEdit • TCheckListBox • TScrollBox • TApplicationProperties • TStringGrid • TDrawGrid • TPairSplitter • TColorBox • TColorListBox • TValueListEditor
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TTaskDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TCSVDataSet • TSdfDataSet • TBufDataset • TFixedFormatDataSet • TDbf • TMemDataset
System TTimer • TIdleTimer • TLazComponentQueue • THTMLHelpDatabase • THTMLBrowserHelpViewer • TAsyncProcess • TProcessUTF8 • TProcess • TSimpleIPCClient • TSimpleIPCServer • TXMLConfig • TEventLog • TServiceManager • TCHMHelpDatabase • TLHelpConnector
Misc TColorButton • TSpinEdit • TFloatSpinEdit • TArrow • TCalendar • TEditButton • TFileNameEdit • TDirectoryEdit • TDateEdit • TTimeEdit • TCalcEdit • TFileListBox • TFilterComboBox • TComboBoxEx • TCheckComboBox • TButtonPanel • TShellTreeView • TShellListView • TXMLPropStorage • TINIPropStorage • TJSONPropStorage • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TLvlGraphControl • TShortPathEdit • TSpinEditEx • TFloatSpinEditEx • TTreeFilterEdit • TExtendedTabControl •
RTTI TTIEdit • TTIComboBox • TTIButton • TTICheckBox • TTILabel • TTIGroupBox • TTIRadioGroup • TTICheckGroup • TTICheckListBox • TTIListBox • TTIMemo • TTICalendar • TTIImage • TTIFloatSpinEdit • TTISpinEdit • TTITrackBar • TTIProgressBar • TTIMaskEdit • TTIColorButton • TMultiPropertyLink • TTIPropertyGrid • TTIGrid
SQLdb TSQLQuery • TSQLTransaction • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TMySQL57Connection • TSQLite3Connection • TIBConnection • TFBAdmin • TFBEventMonitor • TSQLDBLibraryLoader
Pascal Script TPSScript • TPSScriptDebugger • TPSDllPlugin • TPSImport_Classes • TPSImport_DateUtils • TPSImport_ComObj • TPSImport_DB • TPSImport_Forms • TPSImport_Controls • TPSImport_StdCtrls • TPSCustomPlugin
SynEdit TSynEdit • TSynCompletion • TSynAutoComplete • TSynMacroRecorder • TSynExporterHTML • TSynPluginSyncroEdit • TSynPasSyn • TSynFreePascalSyn • TSynCppSyn • TSynJavaSyn • TSynPerlSyn • TSynHTMLSyn • TSynXMLSyn • TSynLFMSyn • TSynDiffSyn • TSynUNIXShellScriptSyn • TSynCssSyn • TSynPHPSyn • TSynTeXSyn • TSynSQLSyn • TSynPythonSyn • TSynVBSyn • TSynAnySyn • TSynMultiSyn • TSynBatSyn • TSynIniSyn • TSynPoSyn
Chart TChart • TListChartSource • TRandomChartSource • TUserDefinedChartSource • TCalculatedChartSource • TDbChartSource • TChartToolset • TChartAxisTransformations • TChartStyles • TChartLegendPanel • TChartNavScrollBar • TChartNavPanel • TIntervalChartSource • TDateTimeIntervalChartSource • TChartListBox • TChartExtentLink • TChartImageList
IPro TIpFileDataProvider • TIpHtmlDataProvider • TIpHttpDataProvider • TIpHtmlPanel
Virtual Controls TVirtualDrawTree • TVirtualStringTree • TVTHeaderPopupMenu