TMemo/ru

From Lazarus wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

TMemo tmemo.png является элементом управления с многострочным полем для редактирования текста. Данный компонент доступен на вкладке Standard палитры компонентов.

Использование

Для использования элемента TMemo на форме вам необходимо просто выбрать его на вкладке Standard палитры компонентов и разместить на форме с помощью щелчка мыши. В данном текстовом поле вы можете редактировать многострочный текст во время выполнения программы.

Например, если вы добавили элемент TMemo с именем Memo1 на форму с именем Form1, то для того чтобы присвоить значение типа String данному элементу, вы можете использовать такую инструкцию Memo1.Text := 'Это однострочный текст';.

Также вы можете использовать текст из элемента с именем Memo1 в любом месте исходного кода с помощью следующей инструкции myString := Memo1.Text;.

Кроме того можно присвоить многострочный текст элементу с именем Memo1 с помощью такой инструкции Memo1.Text:='This'+LineEnding+'is'+LineEnding+'a'+LineEnding+'multiline'+LineEnding+'text'; .

Присваивание строк из TStrings или TStringList

В общем, для присваивания текста элементу TMemo используется класс TStringList или его родительский класс - TStrings. Это показано в следующем примере (данный код располагается в обработчике события кнопки с именем Button1, расположенной на форме с именем Form1; также на форме должен быть расположен элемент TMemo с именем Memo1):

procedure TForm1.Button1Click(Sender: TObject);
var
  myStringList: TStringList;
begin
  myStringList:=TStringList.Create;               //создаем объект myStringList
  myStringList.Add('Это первая строка.');         //добавляем в него строки
  myStringList.Add('Это вторая строка.');
  myStringList.Add('Это третья строка.');
  myStringList.Add('и т.д.');
  Memo1.Lines.Assign(myStringList);               //присваиваем текст элементу Memo1
  myStringList.Free;                              //уничтожаем объект myStringList
end;

Непосредственное добавление строк

Вы можете непосредственно добавлять строки в элемент TMemo, как показано в следующем примере:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Clear;                              //удалить все строки из элемента Memo1
  Memo1.Lines.Add('Это первая строка.');          //добавить строку
  Memo1.Lines.Add('Это вторая строка.');
  Memo1.Lines.Add('Это третья строка.');
  Memo1.Lines.Add('и т.д.');
end;

Чтение стоки

Если вы хотите узнать, что содержится в определенной строке, вы можете непосредственно проверить это с помощью такой инструкции myString:=Memo1.Lines[Index];. Обратите внимание, что индексы строк в TMemo.Lines начинаются с 0, т.е. первая строка будет иметь индекс 0: myString:=Memo1.Lines[0];

Добавьте ещё одну кнопку с именем Button2 к предыдущему примеру для того, чтобы отобразить содержимое третьей строки, как показано в следующем примере:

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage(Memo1.Lines[2]);
end;

Выделенный текст

Вы можете отметить часть текста в режиме выполнения программы с помощью левой кнопки мыши или удерживать клавишу [Shift] и выбрать текст с помощью мыши или стрелок на клавиатуре. Выделенный текст (String) можно отобразить с помощью следующей инструкции:

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage(Memo1.SelText); 
end;

Поиск текста

В отличие от предыдущего примера вы также можете искать текст (String) в элементе TMemo и определять место, где он находится: Position:=Memo1.SelStart;

В следующем примере показано, как вы можете искать текст в элементе TMemo:

  • Создайте новое приложение со следующими элементами: TEdit с именем Edit1, TMemo с именем Memo1 и две кнопки с именами Button1 и Button2.
  • Добавьте в раздел Uses строки LCLProc, strutils и LazUTF8.
  • В обработчике события OnClick кнопки Button1 заполните строки элемента Memo1 любым текстом, как в примере Непосредственное добавление строк.
  • В редакторе исходного кода добавьте следующую функцию (основана на этом примере [1] с German Lazarusforum):
// Функция FindInMemo: Возвращает позицию найденной строки
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 := Length(AString);
    AMemo.SetFocus;
  end;
end;
  • Добавьте следующий код в обработчик события OnClick кнопки Button2:
procedure TForm1.Button2Click(Sender: TObject);
const
  SearchStr: String = '';                     // Строка, которую ищем
  SearchStart: Integer = 0;                   // Позиция, с которой начинаем искать строку
begin
  if SearchStr <> Edit1.Text then begin       
    SearchStart := 0;
    SearchStr := Edit1.Text;
  end;
  SearchStart := FindInMemo(Memo1, SearchStr, SearchStart + 1);

  if SearchStart > 0 then
    Caption := 'Найдена в позиции['+IntToStr(SearchStart)+']!'
  else
    Caption := 'Нет совпадений!';
end;
  • Теперь вы можете заполнить текстом элемент Memo1 в режиме выполнения программы с помощью кнопки Button1, вставить текст, который нужно найти в элемент Edit1 и найти его с помощью кнопки Button2.

Сохранение и загрузка текста

Вы можете довольно легко сохранять и загружать содержимое в элемент TMemo, используя методы SaveToFile и LoadFromFile класса TStrings.

В следующем примере показано, как это можно сделать:

  • Создайте новое приложение со следующими элементами: TMemo с именем Memo1 и три кнопки с именами Button1, Button2 и Button3.
  • Дополнительно поместите на форму элементы TSaveDialog и TOpenDialog, расположенные на вкладке Dialogs палитры компонентов.
  • Измените свойство Caption кнопки Button1 на "Fill memo".
  • В обработчике события OnClick кнопки Button1 заполните элемент TMemo любым текстом, как в примере Непосредственное добавление строк.
  • Измените свойство Caption кнопки Button2 на "Save memo".
  • Измените свойство Caption кнопки Button3 на "Load memo".
  • Теперь отредактируйте обработчики событий OnClick кнопок Button2 и Button3:
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;

См. также

  • Документация по TMemo
  • TRichMemo - Delphi-подобный компонент TRichEdit: работа с форматированным текстом (изменение цвета текста, размера шрифта и т.д.)
  • TListBox - Список строк с прокруткой


Компоненты LCL
Вкладка Компоненты
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 • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog • TTaskDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TBufDataset • TMemDataset • TSdfDataSet • TFixedFormatDataSet • TDbf
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 • 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 • 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 • TIpHttpDataProvider • TIpHtmlPanel