Функция InputBox

Таблица строк — компонент StringGrid

 

Компонент StringGrid представляет собой таблицу, содержащую строки. Данные таблицы могут быть только для чтения или редактируемыми. Таблица может иметь полосы прокрутки, причем заданное число первых строк и столбцов может быть фиксированным и не прокручиваться. Таким образом, можно задать заголовки столбцов и строк, постоянно присутствующие в окне компонента. Каждой ячейке таблицы может быть поставлен в соответствие некоторый объект.

Компонент StringGrid предназначен в первую очередь для отображения таблиц текстовой информации. Однако этот компонент может отображать и графическую информацию.

 

Таблица 16.5 - Основные свойства компонента

Cells[ACol, ARow: Integer]: string Строка, содержащаяся в ячейке с индексами столбца и строки ACol и ARow.
Cols[Index: Integer]: TStrings Список строк, содержащихся в столбце с индексом Index.
Rows[Index: Integer]: TStrings Список строк, содержащихся в строке с индексом Index.
Objects [ACol, ARow: Integer]: TObject; Объект, связанный со строкой, содержащейся в ячейке с индексами столбца и строки ACol и ARow.

 

Все эти свойства доступны во время выполнения. Задавать тексты можно программно или по отдельным ячейкам, или сразу по столбцам и строкам с помощью методов класса TStrings.

Свойства ColCount и RowCount определяют соответственно число столбцов и строк, свойства FixedCols и FixedRows — число фиксированных, не прокручиваемых столбцов и строк. Цвет фона фиксированных ячеек определяется свойством FixedColor. Свойства LeftCol и TopRow определяют соответственно индексы первого видимого на экране в данный момент прокручиваемого столбца и первой видимой прокручиваемой строки.

Свойство ScrollBars определяет наличие в таблице полос прокрутки. Причем полосы прокрутки появляются и исчезают автоматически в зависимости от того, помещается таблица в соответствующий размер, или нет.

Свойство Options является множеством, определяющим многие свойства таблицы: наличие разделительных вертикальных и горизонтальных линий в фиксированных (goFixedVertLine и goFixedHorzLine) и не фиксированных (goVertLine и goHorzLine) ячейках, возможность для пользователя изменять с помощью мыши размеры столбцов и строк (goColSizing и goRowSizing), перемещать столбцы и строки (goColMoving и goRowMoving) и многое другое. Важным элементом в свойстве Options является goEditing — возможность редактировать содержимое таблицы.

В основном компонент StringGrid используется для выбора пользователем каких-то значений, отображенных в ячейках. Свойства Col и Row показывают индексы столбца и колонки выделенной ячейки. Возможно также выделение пользователем множества ячеек, строк и столбцов.

Среди множества событий компонента StringGrid следует отметить событие OnSelectСell, возникающее в момент выбора пользователем ячейки. В обработчик этого события передаются целые параметры ACol и ARow — столбец и строка выделенной ячейки, и булев параметр CanSelect — допустимость выбора. Параметр CanSelect можно использовать для запрета выделения ячейки, задав его значение false. А параметры ACol и ARow могут использоваться для какой-то реакции программы на выделение пользователя. Например, оператор

 

Label1.Caption:='Выбрана ячейка '

+IntToStr(ARow)+':'+IntToStr(ACol);

 

выдаст в метку Label1 номер выбранной ячейки. А оператор

 

Label1.Caption :=StringGrid1.Cells [ACol, ARow];

 

выведет в ту же метку текст выделенной ячейки. Конечно, в реальном приложения задача заключается не в том, чтобы вывести подобные тексты при выборе пользователем той или иной ячейки, а в том, чтобы сделать нечто более полезное.

 

Окно ввода — это стандартное диалоговое окно, которое появляется на экране в результате вызова функции InputBox. Значение функции InputBox — строка, которую ввел пользователь.

В общем виде инструкция ввода данных с использованием функции InputBox выглядит так:

Переменная := InputBox(Заголовок, Подсказка, Значение);

где:

Переменная — переменная строкового типа, значение которой должно быть получено от пользователя;

Заголовок — текст заголовка окна ввода; П подсказка — текст поясняющего сообщения;

Значение — текст, который будет находиться в поле ввода, когда окно ввода появится на экране.

Ниже в качестве примера приведена инструкция, используя которую можно получить исходные данные для программы пересчета веса из фунтов в килограммы. Окно ввода, соответствующее этой инструкции, приведено на Рисунок 16.2.

 

s:= InputBox ('Фунты-килограммы','Введите вес в фунтах','0');

 

Рисунок 15.2 - Пример окна ввода

 

Если во время работы программы пользователь введет строку и щелкнет на кнопке ОК, то значением функции InputBox будет введенная строка. Если будет сделан щелчок на кнопке Cancel, то значением функции будет строка, переданная функции в качестве параметра значение.

Следует еще раз обратить внимание на то, что значение функции InputBox строкового (string) типа. Поэтому если программе надо получить число, то введенная строка должна быть преобразована в число при помощи соответствующей функции преобразования. Например, фрагмент программы пересчета веса из фунтов в килограммы, обеспечивающий ввод исходных данных из окна ввода, может выглядеть так:

s := InputBox('Фунты-килограммы1,'Введите вес в фунтах',''); funt := StrToFloat(s);

Ввод данных из поля редактирования осуществляется обращением к свойству Text.

 

Рисунок 15.3 - Компонент Edit1 используется для ввода данных

 

На Рисунок 16.3 - Компонент Edit1 используется для ввода данных приведен вид диалогового окна программы пересчета веса из фунтов в килограммы. Компонент Editl используется для ввода исходных данных. Инструкция ввода данных в этом случае будет иметь вид:

 

Funt := StrToFloat(Editl.Text);

 

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