Skip to Content

Использование компонента Memo

Использование компонента Memo

В некоторых случаях для ввода массива можно использовать компонент Memo. Компонент Memo позволяет вводить текст, состоящий из достаточно большого количества строк, поэтому его удобно использовать для ввода символьного массива. Компонент Memo добавляется в форму обычным образом. Значок компонента находится на вкладке Standard (рис. 5.4).


Рис. 5.4. Компонент Memo

В табл. 5.3 перечислены некоторые свойства компонента Memo.

Таблица 5.3. Свойства компонента Memo

Свойство Определяет
Name Имя компонента. Используется в программе для доступа к свойствам компонента
Text Текст, находящийся в поле Memo. Рассматривается как единое целое
Lines Текст, находящийся в поле Memo. Рассматривается как совокупность строк. Доступ к строке осуществляется по номеру
Lines .Count Количество строк текста в поле Memo
Left Расстояние от левой границы поля до левой границы формы
Top Расстояние от верхней границы поля до верхней границы формы
Height Высоту поля
Width Ширину поля
Font Шрифт, используемый для отображения вводимого текста
ParentFont Признак наследования свойств шрифта родительской формы

При использовании компонента Memo для ввода массива значение каждого элемента массива следует вводить в отдельной строке и после ввода каждого элемента массива нажимать клавишу .

Получить доступ к находящейся в поле Memo строке текста можно при помощи свойства Lines, указав в квадратных скобках номер нужной строки (строки нумеруются с нуля).

Следующая программа, текст которой приведен в листинге 5.5, демонстрирует использование компонента Memo для ввода символьного массива.

Основной цикл процедуры ввода символьного массива из компонента Memo может выглядеть так:

for i:=l to SIZE do
a [ i ]:= Memol.Lines[i];
где:
SIZE — именованная константа, определяющая размер массива;
а — массив;
Memol — имя Memo-компонента;
Lines — свойство компонента Memo, представляющее собой массив, каждый элемент которого содержит одну строку находящегося в поле Memo текста.

Форма программы приведена на рис. 5.5. Помимо поля Memo она содержит командную кнопку (Buttonl), при щелчке на которой выполняется ввод значений элементов массива из поля Memo.


Рис. 5.5. Диалоговое окно приложения Ввод массива

Листинг 5.5. Ввод массива строк из компонента Memo

  1. unit fr_memo_;
  2. interface
  3.  
  4. uses
  5. Windows, Messages, SysUtils, Classes,
  6. Graphics, Controls, Forms, Dialogs, Menus, StdCtrls;
  7.  
  8. type
  9.  
  10. TForm1 = class(TForm)
  11. Memo1: TMemo;
  12. Button1: TButton;
  13. Label1: TLabel;
  14.  
  15. procedure ButtonlClick(Sender: TObject);
  16.  
  17. private
  18. { Private declarations }
  19. public
  20. { Public declarations }
  21. end;
  22.  
  23. var
  24. Forml: TForm1;
  25.  
  26. implementation
  27.  
  28. ($R *.DFM}
  29.  
  30. procedure TForml .ButtonlClick(Sender: TObject);
  31. const
  32.  
  33. SIZE=5; // размер массива var
  34. a:array[l..SIZE]of string[30]; //массив
  35. n: integer; // количество строк, введенных в поле Memo
  36. i:integer; // индекс элемента массива
  37. st:string;
  38.  
  39. begin
  40.  
  41. n:=Memo1.Lines.Count;
  42.  
  43. if n = 0 then begin
  44. ShowMessage('Исходные данные не введены!');
  45. Exit; // выход из процедуры обработки события
  46. end;
  47.  
  48. // в поле Memo есть текст
  49.  
  50. if n > SIZE then
  51. begin
  52. ShowMessage('Количество строк превышает размер массива.');
  53. n:=SIZE; // будем вводить только первые SIZE строк
  54.  
  55. end;
  56.  
  57. for i:=1 to n do
  58. a[i]:=Form1.Memol.Lines[i-1]; // строки Memo пронумерованы с нуля
  59.  
  60. // вывод массива в окно сообщения
  61.  
  62. if n > 0 then
  63. begin
  64. st:='Введенный массив:'+#13;
  65.  
  66. for i: =1 to n do
  67. st:=st+IntToStr(i)+' '+ a[i]+f13; ShowMessage(st);
  68. end;
  69.  
  70. end;
  71. end.

Основную работу выполняет процедура TForm1.Button1Click, которая сначала проверяет, есть ли в поле Memo1 текст. Если текст есть (в этом случае значение свойства Lines.Count больше нуля), то процедура сравнивает количество введенных строк и размер массива. Если это количество превышает размер массива, то программа изменяет значение п, тем самым подготавливает ввод только первых SIZE строк.

На рис. 5.6 приведен вид диалогового окна приложения Ввод массива. После щелчка на командной кнопке Ввод появляется окно (рис. 5.7), которое содержит значения элементов массива, полученные из Memo-поля.


Рис. 5.6. Окно приложения Ввод массива


Рис. 5.7. Массив, введенный из Memo-поля



Delphi Для профессионалов &1   |    Delphi Для профессионалов &2   |    Delphi Для профессионалов &3   |    Иллюстрированный самоучитель &1   |    Иллюстрированный самоучитель &2