Разработка программ с применением оператора цикла for .
Лабораторная работа № 1 1 . Тема 1: Оператор выбора Case. Группы радиокнопок - компоненты RadioGroup , RadioButton и GroupBox . Цель: Познакомиться с оператором выбора Case. Также рассмотреть работу компонентов RadioGroup, RadioButton и GroupBox.
Оператор выбора Case.
Оператор выбора Case позволяет выполнить одно из нескольких действий в зависимости от переключателя. В качестве переключателя используется выражение, которое располагается между ключевыми словами Case и Of. Результатом этого выражения может быть только значение порядкового типа.
Общую структуру оператора выбора в полной форме можно представить следующим образом:
Case <переключатель> of
<список констант 1>:<оператор 1>;
<список констант 2>:<оператор 2>;
................
<список констант N>:<оператор N>;
Else <оператор E>
End;
Значение переключателя определяет, какой из операторов должен быть выполнен. Если переключатель принимает одно из значений списка констант 1, то выполняется оператор 1, а остальные операторы пропускаются. Аналогично будут выполняться операторы от оператора 2 до оператора N. Оператор E будет выполняться в том случае, если значение переключателя не совпало ни с одним из значений Списков констант от 1 до N.
В неполной форме оператора case альтернативная всем предыдущим вариантам выбора ветвь Else отсутствует.
Пример:
Case I of
1:ShowMessage(‘I=1’);
2,3,5:ShowMessage(‘I=2 или I=3 или I=5’)
End;
Группы радиокнопок — компоненты RadioGroup, RadioButton и GroupBox
|
|
Радиокнопки образуют группы взаимосвязанных индикаторов, из которых обычно может быть выбран только один. Они используются для выбора пользователем одной из нескольких взаимоисключающих альтернатив, например, отдела, в котором работает сотрудник, или пола сотрудника.
Впрочем, радиокнопки могут использоваться и для отображения аналогичных данных. В этом случае управление кнопками осуществляется программно.
Начнем рассмотрение радиокнопок с компонента RadioGroup — панели группы радиокнопок. Это панель, которая может содержать регулярно расположенные столбцами и строками радиокнопки. Надпись в левом верхнем углу панели (см. рис.) определяется свойством Caption . А надписи кнопок и их количество определяются свойством Items , имеющим тип TStrtugs . Этот тип представляет собой набор строк (подробнее мы изучим несколько позже). Щелкнув на кнопке с многоточием около этого свойства в окне Инспектора Объектов, вы попадете в редактор списков строк. В нем вы можете занести надписи, которые хотите видеть около кнопок, по одной в строке. Сколько строчек вы запишете — столько и будет кнопок. Например, для компонента RadioGroup рисунка свойство Items в редакторе Delphi имеет вид:
|
|
Кнопки, появившиеся в панели после задания значений Items, можно разместить в несколько столбцов (не более 17), задав свойство Columns. По умолчанию Columns=1, т.е. кнопки размещаются друг под другом.
Определить, какую из кнопок выбрал пользователь, можно по свойству ItemIndex, которое показывает индекс выбранной кнопки. Индексы, как всегда в Delphi, начинаются с 0. По умолчанию ItemIndex = -1, что означает отсутствие выбранной кнопки. Если вы хотите, чтобы в момент начала выполнения приложения какая-то из кнопок была выбрана (это практически всегда необходимо), то надо установить соответствующее значение ItemIndex во время проектирования. Если вы используете радиокнопки не для ввода, а для отображения данных, устанавливать значение ItemIndex можно программно во время выполнения приложения.
Пример: Найти значение функции в точках x=1, x=1.5, x=3 и x=5. В какой именно точке производится вычисление определяющееся радиокнопками.
Решение: Разместим на форме следующие компоненты: TButton, TLabel, TRadioGroup. В свойство Items объекта TRadioGroup внесем следующие строки:
Обработчик события onClick объекта TButton запишем следующим образом:
Компонент RadioGroup очень удобен, но не свободен от некоторых недостатков. Его хорошо использовать, если надписи кнопок имеют примерно одинаковую длину и если число кнопок в каждом столбце (при размещении их в нескольких столбцах) одинаково. Посмотрите, например, следующий рисунок.
|
|
Группа радиокнопок выглядит плохо: она занимает слишком много места, которое пропадает впустую. Связано это с тем, что длина надписи у первой кнопки превышает длину надписей у остальных кнопок. A RadioGroup при размещении кнопок, ориентируется на надпись максимальной длины.
В подобных случаях желательно нерегулярное расположение кнопок. Такую возможность дают компоненты RadioButton , сгруппированные панелью GroupBox . Панель GroupBox выглядит на форме так же, как RadioGroup, и надпись в ее верхнем левом углу также определяется свойством Caption.
Эта панель сама по себе пустая. Ее назначение — служить контейнером для других управляющих элементов, в частности, для радиокнопок RadioButton . Отдельная радиокнопка RadioButton особого смысла не имеет, хотя и может служить индикатором, включаемым и выключаемым пользователем. Но в качестве индикаторов обычно используются другие компоненты — CheckBox . А радиокнопки имеют смысл, когда они взаимодействуют друг с другом в группе. Эта группа и объединяется единым контейнером, обычно панелью GroupBox.
|
|
Рассмотрим свойства радиокнопки RadioButton . Свойство Caption содержит надпись, появляющуюся около кнопки. Значение свойства Alignment определяет, с какой стороны от кнопки появится надпись: taLeftJustify — слева, taRichtJustify — справа (это значение принято по умолчанию). Свойство Checked определяет, выбрана ли данная кнопка пользователем, или нет. Поскольку в начале выполнения приложения обычно надо, чтобы одна из кнопок группы была выбрана по умолчанию, ее свойство Checked надо установить в true в процессе проектирования. Если вы поэкспериментируете, то заметите, что и во время проектирования можно установить в true значение Checked только у одной кнопки из группы.
Для размещения радиокнопок на панели необходимо выбрать в палитре компонентов соответствующий объект и затем щелкнуть клавишей мыши на панели.
Размещение кнопок RadioButton в панели GroupBox , как можно видеть из рис, дает большую свободу по сравнению с компонентом RadioGroup и позволяет разместить кнопки не регулярно.
Радиокнопки RadioButton могут размещаться не только в панели GroupBox , но и в любой панели другого типа, а также непосредственно на форме. Группа взаимосвязанных кнопок в этих случаях определяется тем оконным компонентом, который содержит кнопки. В частности, для радиокнопок, размещенных непосредственно на форме, контейнером является сама форма. Таким образом, все кнопки, размещенных непосредственно на форме, работают как единая группа, т.е. только в одной из этих кнопок можно установить значение Checked в true .
Пример: Решим предыдущую задачу с использованием объектов GroupBox и RadioButton.
Решение: Разместим на форме следующие компоненты: TButton, TLabel, TGroupBox а также в панель GroupBox добавим четыре радиокнопки RadioButton (с именами RadioButton1, RadioButton2, RadioButton3, RadioButton4). Изменим текст надписи радиокнопок
Обработчик события onClick объекта TButton запишем следующим образом:
Тема 2: Разработка программ с использованием оператора цикла For . Список строк TStrings . Объект TMemo .
Цель: Познакомиться с написанием программ циклической структуры, с использованием оператора FOR, а также задействовав класс TStrings и многострочное окно редактирования TMemo.
Разработка программ с применением оператора цикла for .
Оператор for обеспечивает циклическое повторение некоторого оператора (в частности, составного оператора) заданное число раз. Повторяемый оператор называется телом цикла. Повторение цикла определяется некоторой управляющей переменной (счетчиком), которая увеличивается или уменьшается на единицу при каждом выполнении тела цикла. Повторение завершается, когда управляющая переменная достигает заданного значения.
Оператор for записывается в одной из следующих форм:
for <счетчик>:=<начальное значение> to <конечное значение> do <оператор>;
или
for <счетчик>:=<начальное значение> downto <конечное значение> do <оператор>;
где <счетчик> — локальная управляющая переменная порядкового типа. В начале выполнения оператора for ей присваивается <начальное значение>. После каждого очередного выполнения тела цикла <оператор> ее значение увеличивается (в первой форме с to ) или уменьшается (во второй форме с downto ) на единицу. Когда значение управляющей переменной достигает значения <конечное значение>, тело цикла выполняется последний раз, после чего управление передается оператору, следующему за структурой for . <начальное значение> и <конечное значение> являются выражениями, совместимыми по типу с управляющей переменной.
Если заданные начальное и конечное значения равны друг другу, то тело цикла выполняется только один раз. Если в форме с to начальное значение больше конечного или в форме с downto начальное значение меньше конечного, то тело цикла не выполняется ни разу.
Внутри цикла значение управляющей переменной может использоваться в выражениях. Изменение управляющей переменной в теле цикла не допускается. После окончания выполнения структуры for значение управляющей переменной не определено.
Приведем примеры использования оператора for .
TStrings – это абстрактный класс объектов, представляющих собой списки строк и используемых во многих компонентах Delphi в качестве различных свойств.
Класс TStrings содержит методы и свойства, позволяющие манипулировать со списками строк:
• Добавлять и удалять строки в указанных позициях;
• Перестраивать и упорядочивать последовательность строк;
• Получать доступ к конкретным строкам;
• Читать и записывать списки строк в файлы и потоки;
• Связывать с каждой строкой некоторый объект.
Свойства.
Ниже приведен список основных свойств, определенных в TStrings.
Свойство | Тип | Описание |
Count | Integer | Число строк в списке. Свойство только для чтения. ; |
Strings [Index: Integer] | String | Текст строки с указанным индексом. Индекс первой строки — 0. |
Text | String | Представляет весь список как одну строку, внутри которой используются разделители типа символов возврата каретки (#13) и перевода строки (#10). |
Методы.
Ниже приведены основные методы, объявленные в классе TStrings .
Дата добавления: 2018-11-24; просмотров: 299; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!