Функция 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);
Окна сообщений используются для привлечения внимания пользователя. При помощи окна сообщения программа может, к примеру, проинформировать об ошибке в исходных данных или запросить подтверждение выполнения необратимой операции, например, удаления файла.