Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Использование компонентов многострочного редактора для обработки строковых данных.



Лабораторная работа № 16.

Использование компонентов многострочного редактора для обработки строковых данных.

Цель работы: Использовать строковый тип данных в программах (ввод строки, вывод, преобразование).

Теория.

Типы данных для работы со строками

Короткие строки типа ShortString и String[N]

Короткие строки имеют фиксированное количество символов. Строка ShortString может содержать 255 символов. Строка String[N] может содержать N символов, но не более 255. Первый байт этих переменных содержит длину строки.

Длинная строка типа String

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

Существует ряд стандартных процедур и функций для работы со строками

Функция Length(s) выдает длину строки s

Функция Concat(s1, S2, …, sn) возвращает строку s1+s2+…sn.

Функция Copy(s, p, k) возвращает фрагмент строки s, который начинается в позиции p и имеет длину k.

Функция Pos(s1, s) ищет первое вхождение подстроки s1 в строку s и возвращает номер первого символа s1 в строке s или 0 если не нашли.

Процедура Delete(s, p, k) удаляет из строки s фрагмент, который начинается в позиции p и имеет длину k.

Процедура Insert(s, s1, p) вставляет в строку s подстроку s1, начиная с заданной позиции p.

В Delphi можно производить преобразования числовых значений в строковые и наоборот. Для этого используются процедуры Str(X: n: d, S) и Val(S, X, e).

 

Пример:

Задание: написать программу подсчета числа слов в произвольной строке. В качестве разделителя может быть любое число пробелов. Для ввода строк и работы с ними использовать TComboBox. Ввод строки заканчивать нажатием клавиши Enter. Для выхода из программы использовать кнопку Close.

Панель диалога будет иметь вид (рис. 5.1).

Текст программы приведен ниже.

 

// Обработка события активизации формы

procedure TForm1.FormActivate(Sender: TObject);

begin

ComboBox1.SetFocus; // Передача фокуса ComboBox1

end;

 

// Обработка события нажатия левой клавиши мыши

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

begin

if key=#13 then begin // Если нажата клавиша Enter, то...

ComboBox1.Items.Add(ComboBox1.Text); // Строка из окна редактирования

// заносится

в список выбора

ComboBox1.Text: =''; // Очистка окна редактирования

end;

end;

 

procedure TForm1.ComboBox1Click(Sender: TObject);

var st: string;

n, i, nst, ind: integer;

begin

n: =0; // Содержит число слов

ind: =0;

nst: =ComboBox1.ItemIndex; // Определение номера выбранной строки

st: =ComboBox1.Items[nst]; // Занесение выбранной строки в переменную st

for i: =1 to Length(st) do begin // Просмотр всех символов строки st

case ind of

0: if st[i]< > ' ' then begin // Если встретился символ после пробела

ind: =1;

n: =n+1; // Число слов увеличивается на единицу

end;

1: if st[i]=' ' then ind: =0; // Если встретился пробел после символов

end;

end;

 

Label3.Caption: =IntToStr(n); // Вывод числа слов в Label3

 

end;

 

end.

 

Рисунок 14.2

Варианты заданий.

Вариант 1. Дана строка, состоящая из групп нулей и единиц. Каждая группа отделяется от другой одним или несколькими пробелами. Найти количество групп с пятью символами.

Вариант 2. Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран самую короткую группу.

Вариант 3. Дана строка, состоящая из групп нулей и единиц. Подсчитать количество символов в самой длинной группе.

Вариант 4. Вывести строку длины N (N — четное), которая состоит из чередующихся символов C1 и C2, начиная с C1.

Вариант 5. Дана строка. Вывести строку, содержащую те же символы, но расположенные в обратном порядке.

Вариант 6. Дана строка. Вывести коды ее первого и последнего символа.

Вариант7. Дана строка. Подсчитать количество содержащихся в ней цифр1|[прописных букв]2|[строчных букв]3.

Вариант 8. Дана строка. Преобразовать все строчные1|прописные2 латинские3|русские4 буквы в прописные1|строчные2.

Вариант 9. Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2; если строку нельзя преобразовать в число, то вывести 0.

Вариант 10. Дано целое число. Вывести набор символов, содержащий цифры этого числа в исходном1|обратном2 порядке.

Вариант 11. Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (> 0). Вывести набор символов, изображающих первые N цифр дробной части этого вещественного числа (без округления).

Вариант 12. Дана строка, изображающая двоичную1|десятичную2 запись целого числа. Вывести строку, изображающую десятичную1|двоичную2 запись этого же числа.

Вариант 13. Дана строка, изображающая целое число. Вывести сумму цифр этого числа.

Вариант 14. Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы "." (точка).

Вариант 15. Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2.

Вариант 16. Даны две строки: S1 и S2. Проверить, содержится ли строка S2 в строке S1. Если да, то вывести номер позиции, начиная с которой S2 содержится в S1, если нет, то вывести 0.

Вариант 17. Даны две строки: S1 и S2. Определить количество вхождений строки S2 в строку S1.

Вариант 18. Дана строка S и символ C. Удвоить каждое вхождение qhlbnk` C в строку S.

Контрольные вопросы:

 

1. Какая функция определяет длину строки?

2. Процедура удаления фрагмента из строки?

3. Функции преобразования, использующие целый тип данных?

4. Как произвести ввод и вывод строки в приложении?

5. Какие компоненты необходимы для работы со строками?

 

Лабораторная работа № 17

Использование компонентов многострочного редактора для одномерных массивов.

Цель работы: Изучить свойства компонента TMemo. Написать программу с использованием массивов.

Теория.

Задание 1.

Вариант 1. Дан массив размера N. Вывести его элементы в обратном порядке.

Вариант 2. Дан массив размера N. Вывести вначале его элементы с четными1|нечетными2 индексами, а затем - с нечетными1|четными2.

Вариант 3. Дан действительный массив А(п). Найти максимальный и " минимальный элементы массива.

Вариант 4. Дан целочисленный массив размера N. Вывести вначале все его четные1|нечетные2 элементы, а затем — нечетные1|четные2.

Вариант 5. Поменять местами минимальный и максимальный элементы массива размера 10.

Вариант 6. Заменить все положительные1|отрицательные2 элементы целочисленного массива размера 10 на значение минимального3|максимального4.

Вариант 7. Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами.

Вариант 8. Дан целочисленный массив А(п) , В(п). Создать новый массив С(п), элементами которого являются произведения соответствующих элементов массивов Аи В.

 

Вариант 9. В массиве В(п), найти сумму всех положительных и произведение всех отрицательных элементов. Результат вывести на экран.

 

Вариант 10. Дан массив С(п ). Поменять знаки на противоположный у всех отрицательных элементов массива.

Вариант 11. В массиве С(п) все четные элементы заменить на 0, а нечетные на 1.

 

Вариант 12. Дан массив А(п). Создать новый массив, элементами которого являются произведение A(i) на максимальный элемент массива А.

 

Вариант 13. Дан массив А(п). Уменьшить все его элементы на минимальный элемент массива А

 

Вариант 14. В массиве A(п), состоящий из вещественных чисел, возвести в квадрат все нечетные отрицательные числа, а положительные четные заменить на единицу.

 

Вариант 15. Дан массив А(п). Вывести в порядке следования: все отрицательные числа, затем все положительные числа.

 

Вариант 16. Дано вещественное число R и массив размера N. Найти элемент массива, который наиболее1|наименее2 близок к данному числу.

 

Вариант 17. Дан массив А(п), состоящий из целых чисел и натуральное число k. Требуется:

а) удалить из массива k-ый элемент;

б) вставить заданное число m в k-ую позицию массива.

 

Вариант 18. Дан массив А(п), состоящий из целых чисел. Найти количество и сумму тех элементов, которые делятся на 5 и не делятся на 7.

.

Вариант 19. Дан массив чисел. Найти наибольший элемент, поставить его первым.

Вариант 20. Дан массив чисел. Все элементы массива, начиная с первого положительного, уменьшить на 0.5.

 

Контрольные вопросы:

 

1. Назначение и определение массива?

2. Что означает событие OnKeyPress?

3. Что означает метод Show для компоненты Edit1?

4. При определении массива указывается его ….?

5. Какой компонент используется для работы с одномерным массивом?

 

Лабораторная работа № 18

Использование компонентов списков и выпадающих списков.

Цель работы: Изучить свойства компонент: ListBox и ComboBox. Написать программу с использованием списков выбора.

Теория.

Для создания списков существуют 2 компоненты ListBox и ComboBox.

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

Комбинированный список TComboBox представляет собой комбинацию списка TListBox и редактора TEdit, и поэтому большинство его свойств и методов позаимствовано у этих компонентов. Существует пять модификаций компонента, определяемые его свойством style: csSimple, csDropDown, csDropDownList, csOwnerDrawFixed и csOwnerDrawVariable. Список, отображаемый в поле компонента, можно сформировать во время создания формы или во время работы программы. Чтобы сформировать список во время создания формы, надо выбрать свойство Items, щелкнуть на находящейся в поле значения свойства кнопке и в окне Sring List Editor ввести элементы списка.

Чтобы сформировать список во время работы программы (добавить в список элемент), надо применить метод Add к свойству Items.

Пример 1: По фамилии в списке вывести его должность.

1. Поместите на форму компоненты: 3 Label, ListBox и измените значения их свойств:

Свойство Caption у компоненты Label1- ‘ Список сотрудников’;

Свойство Caption у компоненты Label2- ‘ ‘;

Свойство Caption у компоненты Label3- ‘ Должность’;

2. Расположите компоненты как показано на рисунке 16.1 и введите текст программы для событий OnCreate для компоненты Form1 и OnClick для компоненты ListBox:

 

 

Рисунок 16.1

 

procedure TForm1.FormCreate(Sender: TObject);

begin

ListBox1.Items[0]: =’ Иванов’;

ListBox1.Items[1]: =’ Петров’;

ListBox1.Items[2]: =’ Сидоров’;

end;

 

Procedure TForm1.ListBox1Click(Sender: TObject);

var i: byte;

begin

i: =ListBox1.ItemIndex;

Case i of

0: Label2.Caption: =’ директор ’;

1: Label2.Caption: =’ менеджер ’;

2: Label2.Caption: =’ программист ’;

end;

end;

 

Пример 2: Просмотреть или добавить в список нового сотрудника.

1. Поместите на форму компоненты: 2 Label, ComboBox, Button, Edit и измените значения их свойств:

Свойство Caption у компоненты Label1- ‘ Список сотрудников’;

Свойство Caption у компоненты Label2- ‘ Введите сотрудника‘;

Свойство Caption у компоненты Label3- ‘ Добавить в список’;

2. Расположите компоненты как показано на рисунке 16.2 и введите текст программы для событий OnClick для компоненты Button1:

 

 

Рисунок 16.2

 

procedure TForm1.Button1Click(Sender: TObject);

begin

ComboBox1.Items.Add(Edit1.Text);

end;

 

Задание.

 

Вариант № 1

По введенному дню недели определить, рабочий или выходной день.

Вариант № 2

По введенному номеру месяца определить название месяца.

Вариант № 3

Дан номер месяца (1 — январь, 2 — февраль, ...). Вывести название соответствующего времени года (" зима", " весна" и т.д.).

Вариант № 4

Имеются следующие описания:

Язык=(Паскаль, Ява, Бейсик, Фортран, Лисп)

По русскому названию языка вывести английский эквивалент.

Вариант № 5

Имеются описания:

Сезон=(зима, весна, лето, осень)

Погода=(тепло, холодно)

По сезону ответить какова погода.

Вариант № 6

Дано целое число в диапазоне 1 – 5. Вывести строку — словесное описание соответствующей оценки (1 — " плохо", 2 — " неудовлетворительно", 3 — " удовлетворительно", 4 — " хорошо", 5 — " отлично" ).

Вариант № 7

По введенному номеру месяца определить количество дней в месяце (год не високосный).

Вариант № 8

По возрасту человека определить ходит ли он в садик, в школу, на работу или сидит на пенсии, а при Н> 120 «Уже умер».

Вариант № 9

Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины и длина отрезка L в этих единицах (вещественное число). Вывести длину данного отрезка в метрах.

Вариант № 10

Имеются следующие описания:

Страна=(Австрия, Болгария, Греция, Италия, Норвегия, Франция, ФРГ)

Столица=(Вена, София, Афины, Рим, Осло, Париж, Бон)

По значению страны определить столицу.

Вариант № 11

Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер действия и два числа A и B (В не равно нулю). Выполнить над числами указанное действие и вывести результат.

Вариант № 12

Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы и масса тела M в этих единицах (вещественное число). Вывести массу данного тела в килограммах.

Вариант № 13

Группу детей, приехавшую в пионерский лагерь, распределяют по отрядам следующим образом:

6-7 лет – 5 отряд; 7-9 лет – 4 отряд; 9-11 лет – 3 отряд; 11-13 лет – 2 отряд; 13-15 (включительно) – 1 отряд. Определить по вводимому возрасту отряд для ребенка.

Вариант № 15

Имеются следующие описания:

Число=1..31

День недели=(вс, пн, вт, ср, чт, пт, сб, )

Считая, что год не високосный и его 1 января приходится на любой день недели, определить день недели, на который приходится день с введенной датой.

 

Вариант № 16

Робот может перемещаться в четырех направлениях (" С" — север, " З" — запад, " Ю" — юг, " В" — восток) и принимать три цифровые команды: 0 — продолжать движение, 1 — поворот налево, –1 — поворот направо. Дан символ C — исходное направление робота и число N — посланная ему команда. Вывести направление робота после выполнения полученной команды.

 

Вариант № 17

Элементы окружности пронумерованы следующим образом: 1 — радиус (R), 2 — диаметр (D), 3 — длина (L), 4 — площадь круга (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данной окружности (в том же порядке). В качестве значения Pi использовать 3.14.

 

Контрольные вопросы:

 

1. Какие компоненты для работы со списками вы знаете?

2. Компонент ListBox, методы компонента?

3. Компонент ComboBox, методы компонента?

4. Методы для заполнения списка?

 

Лабораторная работа № 19.

 

Теория.

Компонент TStringGrid предназначен для создания таблиц, в ячейках которых располагаются произвольные текстовые строки, расположена на странице Additional(рисунок 17.1)

 

 

Рисунок 17.1

 

Таблица делится на две части – фиксированную и рабочую. Фиксированная служит для показа заголовков столбцов/строк и для ручного управления их размерами. Обычно фиксированная часть занимает крайний левый столбец и самый верхний ряд таблицы, однако с помощью свойств FixedCols и FixedRows можно задать другое количество фиксированных столбцов и строк(если эти свойства имеют 0, таблица не содержит фиксированной зоны). Рабочая часть – это остальная часть таблицы. Она может содержать произвольное количество столбцов и строк, более того, эти величины могут изменяться программно. Рабочая часть может не умещаться целиком в пределах окна компонента, в этом случае в него автоматически помещаются нужные полосы прокрутки. При прокрутке рабочей области фиксированная область не исчезает, но меняется ее содержимое – заголовки строк и столбцов(рис.17.2)

 

 

Рисунок 17.2

 

Центральным свойством компонента является Cells – двухмерный массив ячеек, каждая из которых может содержать произвольный текст. Конкретная ячейка определяется парой чисел – номером столбца и номером строки, на пересечении которых она находится (нумерация начинается с нуля). Свойство cells имеет тип String, поэтому программа может легко прочитать или записать содержимое нужной ячейки. Например:

Cells [1, 1]: = ‘Левая верхняя ячейка рабочей зоны’;

Количество ячеек по каждому измерению хранит пара свойств Colcount (количество столбцов) и RowCount(количество строк). Значения этих свойств и, следовательно, размеры таблицы могут меняться как на этапе разработки программы, так и в ходе ее работы, однако их значения должны быть как минимум на единицу больше соответственно значений в свойствах FixedCols и FixedRows, определяющих размеры фиксированной зоны. Свойства компоненты представлены в таблице 17.

 

Таблица 17 – Свойства компоненты StringGrid

Название Назначение
Свойства
Name: String Наименование компоненты (по умолчанию StringGrid)
Cells[ACol, ARow: Integer]: String; Определяет содержимое ячейки с табличными координатами (ACol, ARow)
ColCount: Longint Содержит количество столбцов таблицы
EditorMode: Boolean; Разрешает/запрещает редактирование ячеек, игнорируется, Если свойство Options включает goAlwayseShowEditor или не Включает goEditing
FixedColor: TColor; Определяет цвет фиксированной зоны
FixedCols: Integer; Определяет количество столбцов фиксированной зоны
FixedRows: Integer; Определяет количество рядов фиксированной зоны
RowCount: Longint; Содержит количество рядов таблицы
ScrollBars: TScroll Style; ssVertical – вставляется вертикальная полоса; ssBoth – вставляются обе полосы

 

Пример: Найти сумму всех элементов двумерного массива 4× 4.

1. Расположить на форме следующие компоненты: StringGrid(Additional), Button, Label, Edit (для вывода результата);

2. Свойства StringGrid, заменить на FixedCols=0(без заголовков строк), FixedRows=0(без заголовков столбцов);

3. Свойства RowCount=4, ColCount=4$

4. Свойство Options| GoEditing = true (разрешить редактировать);

5. Расположить компоненты следующим образом(рис. 17.3)

 

 

Рисунок 17.3

 

Напишите следующий обработчик события:

 

procedure Form1.Button1Click (Sender: TObject);

var a: array [0..3, 0..3] of integer;

i, j, s: integer;

begin

s=0;

for i: =0 to 3 do

for j: =0 to 3 do

begin

a[i, j]: = StrToInt (StringGrid1.Cells[I, j]); {считывание элементов}

s: =s+a[i, j];

end;

Edit1.Text: =IntToStr(s);

end;

 

Задания.

 

Вариант № 1

Дан массив А(п, т). Требуется пределить:

а) максимальное по величине число;

б) минимальное по величине число;

в) среднее арифметическое элементов каждого из столбцов, имеющих нечётные номера;

г) сумму положительных элементов каждой из строк, имеющих чётные номера.

 

Вариант № 2

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

 

Вариант № 3

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

 

Вариант № 4

Дана матрица A (5x4). Заполнить ее значениями вещественного типа. Найти максимальное значение в каждой строке. Из этих значений получить вектор из 5-ти элементов. Выдать матрицу А и вектор В.

 

Вариант № 5

В заданном двумерном массиве А(п, т) заменить нулями элементы, стоящие в строках или столбцах, где имеются нули.

 

Вариант № 6

Дана матрица А(п, п). Заменить нулями все элементы, расположенные на главной диагонали (диагональ - сверху вниз и слева направо) и выше неё.

 

Вариант № 7

Дана действительная квадратная матрица порядка п. Преобразовать матрицу по правилу: строку с номером п сделать столбцом с номером п, а столбец с номером п сделать строкой с номером п.

 

Вариант № 8

В данной действительной квадратной матрице порядка п найти наибольший по модулю элемент. Получить квадратную матрицу порядка п-1 путем выбрасывания из исходной матрицы какой-нибудь строки и столбца, на пересечении которых расположен элемент с найденным значением.

 

Вариант № 9

Дана (построчно) вещественная матрица Л размером 10x10 и массив В(10).

а) нечетные строки матрицы А заменить на В;

б) четные столбцы матрицы А заменить на В;

 

Вариант № 10

Определить, является ли заданная целая квадратная матрица 9-го порядка магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы.

 

 

Вариант № 11

Дана матрица А(п, т). Поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением (предполагается, что эти элементы единственны).

 

Вариант № 12

Дана матрица порядка п х n. Найти сумму элементов, расположенных в заштрихованной части матрицы

Вариант № 13

Дана матрица размера 5 x 9. Найти суммы элементов всех ее четных1|нечетных2 строк3|столбцов4.

 

Вариант № 14

Дана матрица размера 5 x 10. Найти минимальное1|максимальное2 значение в каждой строке3|столбце4.

 

Вариант № 15

Дана матрица A(n, m). Поменять местами первую и последнюю строку, а каждый элемент этих строк увеличить в два раза.

 

Вариант № 16

Дана матрица A(n, m). Найти строки, элементы которых одинаковы, если таковых нет, то первую строку скопировать в последнюю.

 

Вариант № 17

Дана матрица A(n, m) и массив B(n, m). Вывести матрицу, элементами которой являются значения, состоящие из произведения элементов массива на каждый элемент соответствующей строки.

 

Вариант № 18

Дана матрица A(n, mсостоящая из нулей и единиц. Заменить на 4 те строки, у которых все элементы единицы.

 

Контрольные вопросы:

1. Назначение компоненты StringGrid?

2. Свойства компоненты StringGrid?

3. Методы компоненты StringGrid?

4. Как изменить размер фиксированной части таблицы?

 

 

 


 

Лабораторная работа № 20.

 

Теория.

TButton

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

 

PropertyCancel: Boolean;   Если имеет значение True, событие OnClick кнопки возникает при нажатии клавиши Esc
PropertyDefault: Boolean; Если имеет значение True, событие OnClick кнопки возникает при нажатии клавиши Enter
PropertyEnabled: Boolean; Если имеет значение False, то кнопка недоступна для нажатия
TModalResulr = Low(Integer).. High (Integer); PropertyTModalResult; - Определяет результат, с которым было закрыто модальное окно

 

В терминологии Windows модальными окнами называются такие специальные окна, которые, раз появившись на экране, блокируют работу пользователя с другими окнами вплоть до своего закрытия. Если у кнопки определено свойство ModalResult, нажатие на нее приводит к закрытию модального окна и возвращает в программу значение ModalResult как результат диалога с пользователем. В Delphi определены следующие стандартные значения ModalResult:

 

mrNone Модальное окно не закрывается
mrOk Была нажата кнопка Ok
mrCancel Была нажата кнопка Cancel
mrAbort Была нажата кнопка Abort
mrRetry Была нажата кнопка Retry
mrIgnore Была нажата кнопка Ignore
mrYes Была нажата кнопка Yes
mrNo Была нажата кнопка No
mrAll Была нажата кнопка All

TCheckBox

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

 

TLeftRight = (taLeftJustify, taRightJustify); PropertyAlignment: TLeftRight; Определяет положение текста: taLeftJustify -с левой стороны компонента; taRightJustify -с правой стороны
PropertyAllowGrayed: Boolean; Разрешает (запрещает) использование неактивного состояния cbGrayed
PropertyChecked: Boolean; Содержит выбор пользователя типа Да/Нет. Состояния cbUnchecked и cbGrayed отражаются как False
TcheckBoxState = (cbUnchecked, cbChecked, cbGrayed); PropertyState: CheckBoxState; Содержит состояние компонента: cbUnchecked – нет; cbChecked • да; cbGrayed –неактивен

RadioButton

Кнопки с зависимой фиксацией предназначены для выбора одной опции из нескольких взаимоисключающих, поэтому таких кнопок должно быть как минимум две. Для группировки кнопок с зависимой фиксацией внутри формы их необходимо разместить внутри компонента Panel, GroupBox или ScrollBox. Состояние кнопки содержится в свойстве Checked.

TBitBtn

Пиктографическая кнопка TBitBtn представляет собой разновидность стандартной кнопки TButton, которая помимо текста может содержать графическое изображение. Растровое изображение определяется с помощью свойства Clyph. В комплект поставки DELPHI (поддиректория Images/Buttons) входит около 160 различных вариантов растровых изображений для кнопок. Кроме того, пользователь может самостоятельно создать растровое изображения с помощью встроенного в DELPHY графического редактора.

Свойство Kind позволяет выбрать одну из 11 стандартных разновидностей кнопки (рис.П2.1.)

 

Нажатие любой из кнопок, кроме bkCustom и bkHelp, закрывает модальное окно и возвращает в программу результат mrXXX: bkOk -mrOk, bkCancel - mrCancel и т.д. Кнопка bkClose для модального окна возвращает mrCancel, а для главного окна программы - закрывает его и завершает работу программы. Кнопка bkHelp автоматически вызывает раздел справочной службы, связанный с HelpContext формы, на которую она помещена.

 

PropertyGlyph: TBitmap; Определяет связанные с кнопкой растровые изображения (до 4)
TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bklgnore, bkAll); PropertyKind: TBitBtnKind; . Определяет разновидность кнопки
TButtonLayout = (bIGlyphLeft, bIGlyphRight, bIGlyphTop, , blGlyphBottom); PropertyLayout: TButtonLayout; Определяет край кнопки, к которому прижимается пиктограмма
PropertyMargin: Integer; Определяет расстояние в пикселях от края кнопки до пиктограммы
TnumGlyphs: 1..4; PropertyNumGlyphs: TnumGlyphs; Определяет количество растровых изображений. Таких состояний может быть четыре: нормальное, запрещенное, нажатое, и утопленное
PropertySpacing: Integer; Определяет расстояние в пикселях от пиктограммы до надписи на кнопке

TSpeedButton

Еще один вариант кнопки, который отличается от TBitBtn тремя обстоятельствами: во-первых, не предусмотрен вывод надписи, во-вторых, имеется возможность фиксации в утопленном состоянии и, в-третьих, она не может закрыть модальное окно.

Задание:

Используя все разновидности кнопок, решить:

1.Дано двузначное число. Определить:

а) входит ли в него цифра 3;

б) входит ли в него цифра А.

 

2. Дано двузначное число. Определить:

а) входят ли в него цифры 4 или 7;

б) входят ли в него цифры 3, 6 или 9.

 

3. Дано трехзначное число. Определить:

а) входит ли в него цифра 6;

6) входит ли в него цифра N.

4. Дано трехзначное число. Определить:

а) входят ли в него цифрв1, 4 или 7;

6) входят ли в него цифры 3, 6 или 9.

5. Дано четырехзначное число. Определить:

а) входит ли в него цифра 4;

б) входит ли в него цифра В.

6. Дано четырехзначное число. Определить:

а) входят ли в него цифры 2 или 7;

6) входят ли в него цифры 3, 6 или 9.

7. Дано натуральное число n (n 9999). Выяснить, является ли оно палиндромом ( перевертышем ), с учетом четырех цифр, как, например, числа 7777, 8338, 0330 и т.п. (палиндромом называется число, десятичная запись которого читается одинаково слева направо и справа налево).

8. Дано натуральное число n (n < 9999). Выяснить, верно ли, что это число содержит ровно три одинаковые цифры, если оно записано четырьмя цифрами, как, например, числа 3363, 4844, 0300 и т.п.

9. Дано натуральное число n (n < 9999). Выяснить, различны ли все четыре цифры этого числа (если оно записано четырьмя цифрами). Например, в числе 3678 все цифры различны, в числе 0023 — нет.

10. Определить, является ли заданное шестизначное число счастливым. (Счастливым называют такое шестизначное число, у которого сумма его первых трех цифр равна сумме его последних трех цифр.)

11. Имеются стол прямоугольной формы с размерамиа х b (а и b — целые числа, а > b) и кости домино с размерами с х d х е (с, d и е — целые числа, с > d> e). Найти вариант размещения на столе наибольшего количества костей. Все размещаемые кости должны лежать на одной и той же грани в один ярус без свешивания со стола. Все ребра костей домино должны быть параллельны или перпендикулярны каждой стороне стола.

12. Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них и длины их сторон. Один из прямоугольников назовем первым, другой — вторым,

а) Определить, принадлежат ли все точки первого прямоугольника второму.

б) Определить, принадлежат ли.все точки одного из прямоугольников другому.

в) Определить, пересекаются ли эти прямоугольники.

 

Контрольные вопросы:

1. Особенность кнопок SpeedButton?

2. Для чего используется свойство NumGlyphs компонента BitBtn?

3. Какое свойство компонента BitBtn содержит набор стилей,?

4. С помощью какого свойства можно добавить рисункок на кнопку?

 

 

Лабораторная работа № 21.

 

Теория.

Разработаем программу, реализующую простой Секундомер. Эта программа будет отображать - Общее время и Время интервала, а также иметь три кнопки: Старт/Стоп, Интервал и Сброс. Законченный вид приложения показан на рисунке.

Компонент Timer (Таймер ) - небольшой хронометр, который работает в фоновом режиме и через регулярные интервалы времени " просыпается" и посылает сообщение приложению, вызывая обработчик события OnTimer. Вы можете включать и выключать таймер с помощью изменения его свойства Enabled (Доступен) и можете регулировать скорость таймера, изменяя его свойство Interval (Интервал).

Свойство таймера Интервал определяет количество миллисекунд (тысячных долей секунды) между событиями OnTimer (тактами). То есть, если Интервал устанавливается в 1000, то таймер будет передавать события OnTimer каждые 1000 миллисекунд (один раз в секунду). Установка интервала в 0 - то же самое, что отключение таймера. Максимальное значение интервала - 32767, т.е. один тик через 32.767 секунды.

  1. Измените свойство Caption (Заголовок) формы на " Секундомер" - чтобы вы знали, над чем работаете
  2. Разместите на форме два компонента Label, как показано на рисунке и измените их заголовки на " " Общее время" и " Время интервала".
  3. Хотя две строки, отображающие время справа от меток, будут похожи на компоненты строки редактирования, в этой форме они будут компонентами Memo (Мемо-поля). Причина, по которой здесь используется компонент Memo в том, что у него есть свойство Aligment (Выравнивание), которое позволяет нам отображать текст выровненным вправо. Разместите компоненты Memo для метки " Общее время" как на рисунке и установите его размер высотой в одну строку.
  4. Установите для этого компонента свойства, как показано в таблице 3.1. Мы устанавливаем свойства Enabled и TabStop (доступность мышкой и клавишей Tab) в False, чтобы Memo не мог быть выбран с помощью мышки или табуляции с клавиатуры. Мы это поле будем использовать только для отображения информации - ввода от пользователя в него не требуется. Поэтому мы изменили и свойство ReadOnly на True, что не позволяет пользователю изменять текст Memo, но не запрещает изменять его самой программе.
Изменение свойств для отображения Общего времени
Свойство Значение
Aligment alRightJustify
BorderStyle bsSingle
Enabled False
Name TotalTime
ReadOnly True
TabStop False
Lines 0.0
  1. Memo " Время интервала" подобно уже созданному компоненту и поэтому для экономии наших сил и времени используйте процедуру " Копирование - Вставка". В форме появится новый компонент Memo, перекрывающий первый со смещением немного вправо и вниз. Он имеет все свойства компонента " Полное время", кроме имени и позиции. Переместите его в нужное место формы и установите имя LapTime.
  2. Выберите компонент Timer на странице System палитры компонентов и поместите его на форму справа от двух Memo отображения времени. Установите для него свойство Enabled в True и установите Interval в 100, что даст вам десять тактов в секунду.
  3. Сохраните результаты вашей работы командой SaveProject меню File в своей папке с именами TIMERFRM.PAS и SECONDMR.DPR.

Лабораторная работа № 22.

 

Теория.

Рассмотрим 2 вида переключателей

1) TCheckBox - независимый переключатель

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-08-31; Просмотров: 801; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.201 с.)
Главная | Случайная страница | Обратная связь