Компоненты Delphi страницы Standart

Компонент Delphi Memo




Уроки Delphi
  1.  Первая программа
  2.  Использование компонентов
  3.  События Delphi
  4.  Типы данных Delphi
  5.  Создание своих типов данных
  6.  Выражения и операторы
  7.  Работа с файлами в Delphi
  8.  Дополнительные формы
  9.  Подпрограммы в Delphi
  10. Исключительные ситуации
  11. Взаимодействие приложения с пользователем
  12. Указатели в Delphi
  13. Обзор компонентов
  14. Работа со строками
  15. Создание интерфейса
  16. Графика в Delphi
  17. Многопоточность в Delphi
  18. Динамическое создание
        компонентов
Поиск по сайту




 Это важно:
   Метод Application.ProcessMessages;

 Это полезно:
   Параметр Sender в обработчиках событий;










Бояться не надо



   Компонент Delphi Memo это простой текстовый редактор. Delphi Memo позволяет вводить многострочный текст с клавиатуры, загружать его из файла, редактировать и сохранять в файл текстового формата. При изучении работы с Delphi Edit советую посетить страничку работа со строками Delphi, так как там описываются функции Delphi для работы с данными, представленными в текстовой форме, с которыми и оперирует компонент Memo.

   Простота текстового редактора компонента Delphi Memo заключается в том, что текстовый редактор Delphi Memo не обладает возможностями форматирования содержещегося в нём текста. Это означает, что все атрибуты выбранного шрифта будут относиться ко всему тексту.

   Текст в компоненте Delphi Memo размещается построчно. Поэтому имеется доступ к каждой строке текста отдельно. Строки в редакторе Delphi Memo являются объектами Lines[i] типа String, где i - номер строки, отсчитываемый от нуля. Объект Lines[i] доступен и для чтения, и для записи. Соответственно, текст в компоненте Memo можно редактировать не только с клавиатуры, но и программно:

var S: String;
begin
 Memo1.Lines[3]:='Четвёртая строка по счёту';
 S:=Memo1.Lines[3];
end;

   Естественно, для успешного присвоения текста определённой строке необходимо, чтобы эта строка физически существовала! То есть, данным способом можно только редактировать текст. Новую строку создать таким способом невозможно. Для создания новых строк служат методы

  • Add()
  • Insert()
   Метод Add() добавляет новую строку в конец, а метод Insert() внедряет новую строку перед указанной, для чего метод Insert() имеет соответствующий параметр:

begin
 Memo1.Lines.Add('Это будет последняя строка');
 Memo1.Lines.Insert(2, 'Эта строка будет третьей');  //Так как отсчёт идёт от нуля!
end;

   Delphi Memo имеет также метод для удаления строки:

Memo1.Lines.Delete(i); //Удаление строки с индексом i

Количество строк в компоненте Memo содержится в свойстве Count:

  N:=Memo.Lines.Count;

   Пользуясь этим, например поиск фрагмента 'Нужный_Текст' в строках можно организовать так:

var i: Integer;
begin
  for i:=0 to Memo.Lines.Count-1 do
    begin
      if AnsiPos('Нужный_Текст', Memo.Lines[i])<>0 then
        begin
          Caption:='Найдено в строке №'+IntToStr(i);
          break;
        end;
    end;
end;

   Компонент Delphi Memo позволяет получить доступ к тексту как целому. Свойство Text типа String является текстом, содержащимся в редакторе, в виде одной строки. Необходимо учитывать, что эта строка также будет включать в себя и непечатаемые символы конца строки #13 и символы переноса строки #10. Кстати, чтобы продолжить текст с новой строки, необходимо использовать последовательно оба этих символа:

  Memo1.Text:='Предыдущий текст'+#13+#10+'Это уже новая строка';


   Delphi Memo обладает свойствами для перемещения курсора и выделения текста, такими же, как и у компонента Delphi Edit:
  • SelStart
  • SelLenght
  • SelText
Напоминаю:
- свойство SelStart типа Integer задаёт номер символа, после которого будет стоять курсор (отсчитывается от начала всего текста);
- свойство SelLenght типа Integer определяет количество выделенных символов;
- свойство SelText типа String содержит выделенный текст.

   Для того, чтобы выделение текста было заметно на экране, небходимо, чтобы компонент обладал фокусом ввода. То есть, чтобы ранее либо пользователь переместил туда курсор, клавишей Tab или щёлкнув мышкой, либо был выполнен оператор Memo1.SetFocus.

   Остаётся вопрос, как определить, где сейчас находится курсор, на какой строке, и позицию в строке. Эти параметры содержатся в свойстве CaretPos компонента Delphi Memo, которое имеет тип TPoint, то есть точка - запись с координатами X и Y:

   Memo1.CaretPos.X // позиция курсора в строке (в отличие от SelStart);
   Memo1.CaretPos.Y // номер строки где находится курсор;



Обзор компонентов Delphi           В начало урока          Компонент Delphi Button  

Уроки Delphi начинающим







© 2023 Delphi-Manual.ru - Уроки Delphi начинающим с нуля