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

End.

Begin

Case Key of

Begin

Begin

Implementation

Var

Type

Uses

Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;

TForm1= class(TForm)

Label1: TLabel;

StringGrid1: TStringGrid;

Button1: TButton;

Label2: TLabel;

procedure Button1ClicktSender: TObject);

procedure StringGridlKeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

Form1: TForm1;

{$R *.dfm}

procedure TForm1.ButtonlClick(Sender: TObject);

var

a: array[1..5] of real; // массив

suram: real; // сумма элементов

sr: real; // среднее арифметическое

i: integer; // индекс

// вводмассива

// считаем, что если ячейка пустая, то соответствующий

// ей элемент массива равен нулю

for i:= 1 to 5 do

if Length(StringGridl.Cells[i-l,0])<>0

then a[i]:= StrToFloat(StringGridl.Cells[i-1, 0]) else a[i]:= 0;

// обработкамассива

summ:= 0;

for i:=1 to 5 do

summ:= summ + a[i]; sr:= summ / 5;

// выводрезультата

Label2.Caption:=

'Суммаэлементов: ' + FloatToStr(summ)

+ #13+ 'Среднее арифметическое: ' + FloatToStr(sr); end;

'/ Функция обеспечивает ввод в ячейку только допустимых символов

procedure TForm1.StringGridlKeyPress(Sender: TObject; var Key: Char);

#8,'0'..'9':; // цифрыи<Backspace>

#13: // клавиша<Enter>

if StringGridl.Col < StringGridl.ColCount - 1

then StringGridl.Col:= StringGridl.Col + 1; '.',',':

// разделитель целой и дробной частей числа

if Key <> DecimalSeparator then

Key:= DecimalSeparator; // заменимразделитель

// надопустимый

if Pos(StringGridl.Cells[StringGridl.Col,0],

DecimalSeparator) <> 0

then Key:= Chr(O); // запретвводавторого

// разделителя end;

' -': // минус можно ввести только первым символом,

// т. е. когдаячейкапустая

if Length(StringGrid1.Cells[StringGrid1.Col, 0]) <>0 then

Key:= Chr(0);

else // остальные символы запрещены

key:= Chr(0);

end;

end;

В некоторых случаях для ввода массива можно использовать компонент 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 для ввода массива значение каждого элемента массива следует вводить в отдельной строке и после ввода каждого элемента массива нажимать клавишу <Enter>.

Получить доступ к находящейся в поле 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. Диалоговое окно приложения Ввод массива


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: