
Разработка усложненного Delphi-проекта
Цель работы: изучение свойств и методов компонентов, расположенных на странице Additional системы Delphi, и закрепление практических навыков работы с ними.
Введение
Страница Additional системы Delphi также включает компоненты, которые наиболее часто используются при формировании пользовательского интерфейса приложения. К этим компонентам относятся:
Кнопка TBitBtn. Представляет разновидность стандартной кнопки Button. На этих кнопках можно размещать растровые рисунки (пиктограммы). Большое их количество находится в папке Program Files\Common Files\Borland Share\Images\But-tons. Рисунки загружаются на кнопки в свойство Glyph. Но можно использовать для этого рисунки и из других графических файлов.
На кнопке изображение меняется в зависимости от ее состояния. Поэтому для рисунков на кнопке надо разрабатывать до 4 одинаковых по размеру рисунков в одном файле.
Свойство Kind определяет вариант используемого рисунка. Существуют 11 стандартных вариантов надписи с префиксом bk на кнопках такого вида.
? Help |
X Cancel |
Retry |
No |
X |
All |
OK |
Yes |
|
Ignore |
Custom |
|
Кнопка Close по умолчанию закрывает главное окно программы и завершает ее.
Любая из этих кнопок, кроме bkCustom и bkHelp, закрывает модальное окно. Кнопка Help автоматически вызывает раздел справочной службы, связанной с формой.
Если задается свойство Glyph, то автоматически устанавливается значение Kind = bkCustom.
Свойство Layout определяет край кромки кнопки, к которой прижимается рисунок, и может принимать следующие значения: blGlyphLeft, blGlyphRight, blGlyphTop, blGlyphBottom.
Свойство Margin:integer определяет расстояние в пикселях от края кнопки до пиктограммы.
Свойство Spacing:integer определяет расстояние в пикселях от пиктограммы до надписи на кнопке.
У этой кнопки есть также свойства Cancel и Default, определенные для кнопки Button.
Кнопка TSpeedButton. Такие кнопки во многом похожи на предыдущие, но есть определенные отличия:
- они могут фиксироваться в нажатом состоянии;
- не могут закрывать модальные окна;
- кнопка всегда должна входить в группу кнопок (группа может состоять из одной кнопки). Номер группы задается свойством GroupIndex: integer, которое не может равняться 0.
Поведение кнопки определяется свойством AllowAllUp: boolean - если свойству задано значение True, то утопленная кнопка отпускается только при нажатии другой кнопки из этой группы. В противном случае кнопка отпускается повторным нажатием.
Состояние кнопки определяется свойством Down: boolean - если оно равно значению True, то кнопка утоплена. Это свойство можно менять программно.
Для этой кнопки дополнительно определено событие OnDblClick.
Редактор TMaskEdit. Предназначен для ввода текста, соответствующего некоторому шаблону, задаваемому свойством EditMask: string. Если это свойство не задано, то этот редактор работает как обычный редактор Edit. Задан ли шаблон, определяется свойством IsMasked: boolean.
Свойство EditText: string содержит введенный в редактор текст, а свойство Text: string - результат работы шаблона (если он задан, в противном случае значения этих двух свойств совпадают).
Шаблон состоит из трех частей, разделенных;. Сначала идет маска, затем переключатель передачи, далее символ-заполнитель.
Переключатель передачи - это 1 или 0. При 1 в свойство Text передается результат применения шаблона, при 0 - исходный текст.
Пример приглашения для ввода телефонного номера: ХХ-ХХ-ХХ. Здесь символ Х стоит в третей части шаблона, т.е. является символом-заменителем.
Сама маска может включать символы трех типов: описатели полей ввода, специальные символы и литералы.
Описатели указывают, какой именно символ можно ввести в данной позиции (но только одной). Виды описателей:
L - буква;
l - может быть буква;
А - буква или цифра;
а - может быть буква или цифра;
С - любой символ;
с - может быть любой символ;
0 - цифра;
9 - может быть цифра;
# - может быть цифра или знаки +, -.
Специальные символы:
: - разделитель для часов, минут, секунд;
/ - разделитель полей даты;
; - разделитель частей шаблона;
! - подавляет все ведущие пробелы;
> - следующие за ним все буквы преобразуются в заглавные;
< - следующие за ним все буквы преобразуются в строчные;
<> - отменяются все преобразования букв.
Литералы при вводе информации пользователем появляются в тексте автоматически (например дефис (-) в телефонном номере). Если в литерале надо использовать один из предыдущих зарезервированных символов, то перед ним надо поставить символ \.
Таблица TStringGrid. Это таблица, в ячейки которой можно заносить текстовые строки. Стандартно (по умолчанию) одна строка выделяется для оглавления столбцов и один столбец - для нумерации строк (рис. 3.1). Данные элементы таблицы неподвижны при пролистывании таблицы. Но это количество строк и столбцов можно увеличить. Данные количества задаются свойствами FixedCols и FixedRows.
Т
Рис. 3.1
Все ячейки таблицы имеют матричную нумерацию, которая начинается с нуля, т.е. ячейка левого верхнего угла имеет координаты [0, 0].
Ширину ячеек можно менять свойством DefaultColWidth (по умолчанию она составляет 64 пикселей). Высота строк задается свойством DefaultHeight (по умолчанию 8).
При значении True свойства DefaultDrawing: boolean неподвижные элементы таблицы закрашиваются серым цветом. В противном случае они выделяются более жирной рамкой.
Фон таблицы задается свойством Color.
При инициализации таблицы ее начальный размер (по умолчанию) составляет 6 х 6 ячеек. Число столбцов в дальнейшем можно менять свойством ColCount: integer. Аналогично - число строк задается свойством RowCount: integer.
Между ячейками существуют разделительные линии, толщина которых задается свойством GridLineWidth: integer.
Содержимое каждой отдельной ячейки хранится в свойстве Cells[<столбец>, <строка>]. Подобная адресация позволяет заносить значения в таблицу или считывать из нее в цикле. Пример:
Form1.StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] := Form1.StringGrid1.Cells[String-Grid1.Col, StringGrid1.Row] + Chr(Key).
Занесение происходит по событию OnKeyDown, генерируемому таблицей.
Свойство Cols(index: integer): TStrings содержит все строки столбца с номером Index, а Rows(index: integer): TStrings - строки.
В процессе выполнения программы пользователь может мышью выделить блок ячеек таблицы. Параметры выделенного блока доступны программно через сложное свойство таблицы Selection. Оно определяет границы выделения и состоит, в пером случае, из четырех значений: Selection.Left, Selection.Top, Selection.Right, Selection.Bottom. Во втором случае выделяются левый верхний и правый нижний углы, а затем для них фиксируются координаты Х и Y: Selection.TopLeft.X и Selection.TopLeft.Y, Selection.BottomRight.X и Selection.BottomRight.Y. Текущая ячейка представляет собой частный случай выделения блока, поэтому для нее Selection.Left = Selection.Right, Selection.Top = Selection.Bottom и Selection.TopLeft.X = Selection.BottomRight.X, Selection.TopLeft.Y = Selection.BottomRight.Y.
У таблицы есть свойство Align, которое определяет режим размещения таблицы на пространстве формы.
Таблица TDrawGrid. Обладает большей гибкостью по сравнению с предыдущей таблицей. Также содержит фиксированную (которая может отсутствовать) и рабочую части. Но фиксированная часть используется не только для отображения заголовков строк и столбцов, но и для фиксации их размеров, т.е. строки и столбцы могут быть разного размера. Если таблица не умещается в рабочую область, для нее автоматически создаются линейки прокрутки. Некоторые свойства данного компонента представлены в табл. 3.1.
Табл. 3.1
Свойство |
Его назначение |
BorderStyle |
Определяет наличие/отсутствие внешней рамки таблицы |
ColCount: LongInt |
Количество столбцов таблицы |
ColWidths(Index: LongInt) |
Ширина столбца с номером Index |
FixedColor: TColor |
Цвет фиксированной зоны |
FixedCols: Integer |
Количество столбцов фиксированной зоны |
FixedRows: Integer |
Количество строк фиксированной зоны |
GridHeight: Integer |
Высота таблицы |
GridLineWidth: Integer |
Толщина разделительных линий в таблице |
GridWidth: Integer |
Ширина таблицы |
Options |
Параметры таблицы |
RowCount: LongInt |
Количество строк таблицы |
RowHeights(Index: LongInt) |
Высота строки с номером Index |
Свойство Options является составным. Оно включает следующий набор логических свойств (перечислена только их часть):
goFixedVertLine - столбцы фиксированной зоны разделяются вертикальными линиями;
goFixedHorzLine - строки фиксированной зоны разделяются вертикальными линиями;
goVertLine - столбцы рабочей зоны разделяются вертикальными линиями;
goHorzLine - строки рабочей зоны разделяются вертикальными линиями;
goRowSizing - разрешает ручное (мышью) изменение высоты строк;
goColSizing - разрешает ручное (мышью) изменение ширины столбцов;
goRowMoving - разрешает ручное (мышью) перемещение строк;
goColMoving - разрешает ручное (мышью) перемещение столбцов.
Контейнер TImage. Чаще всего используется для размещения на форме растрового изображения. Имеет одно важное преимущество при размещении графики по сравнению с пространством самой формы - при сворачивании и возврате назад изображение на пространстве TImage не исчезает, т.е. его не надо заново прорисовывать.
Загрузка изображения на компонент идет через свойство Picture.
Изображение может не совпадать по размерам с параметрами контейнера. Регулируются эти вопросы двумя свойствами:
Stretch: boolean - разрешает/запрещает изменять размеры изображения так, чтобы оно заполняло всю область компонента;
AutoSize: boolean - разрешает/запрещает изменять размеры контейнера так, чтобы в него полностью загрузилось изображение.
Другие свойства:
Center: boolean - указывает, надо ли центрировать изображение в границах контейнера. Игнорируется при AutoSize = true или (Stretch = true и изображение не является пиктограммой ICO);
Transparent: boolean - разрешает/запрещает накладывать собственный фон изображения на фон компонента;
IncrementalDisplay: boolean - разрешает/запрещает показ большого изображения по мере его загрузки;
Canvas - канва для создания изображений.
Выполнение лабораторной работы
В соответствии с вариантом выбрать задание на программную разработку:
На форме располагаются компоненты: редактор MaskEdit, группа из четырех кнопок SpeedButton, метка Label, контекстное меню для формы и две кнопки BitBtn (для очистки редактора и закрытия формы) с подходящими по назначению рисунками. В MaskEdit вводится дробное число как аргумент тригонометрической функции. Сама функция: sin, cos, tg или ctg, - выбирается с помощью кнопок SpeedButton. Запуск на вычисление производится с помощью контекстного меню. Результат помещается на Label.
На форме располагаются компоненты: два редактора MaskEdit, Label, главное меню, кнопка SpeedButton, две кнопки Button (с надписями «Очистить» и «Закрыть»). В один редактор вводится с проверкой дробное число, а во второе - целое как показатель возведения в степень первого числа. Запуск на вычисление производится с помощью команды главного меню. Результат помещается на Label. Кнопка SpeedButton убирает/восстанавливает главное меню. Очистка окна аргумента производится кнопкой Button. Вторая кнопка заканчивает программу.
На форме располагаются компоненты: редакторы MaskEdit и Memo, Label, ListBox, радиопереключатель на два положения, кнопка BitBtn вида Yes с рисунком и кнопка Close. В редактор MaskEdit вводится строка, преобразуемая к верхнему или нижнему регистру. Вид преобразования задается радиопереключателем. При нажатии кнопки Yes строка копируется в Memo или на Label. Приемник копирования выбирается с помощью ListBox. Когда редактор Memo заполнится, копирование производится только на Label. Очистка Memo восстанавливает исходную ситуацию. Кнопка Close заканчивает программу.
// В редактор MaskEdit вводится строка, преобразуемая к верхнему или нижнему регистру
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
case radioGroup1.ItemIndex of
0: begin MaskEdit1. EditMask := '>LLLLLL;0;*';MaskEdit1.SetFocus; end;
1: begin MaskEdit1. EditMask := '<LLLLLL;0;*'; MaskEdit1.SetFocus; end;
end;
end;
На форме располагаются компоненты: два компонента ListBox, таблица StringGrid размером 4х6, кнопка SpeedButton, две кнопки Button и кнопка Close. На одной из кнопок Button надпись «Очистка», на другой – «Занесение». Над одним из компонентов ListBox надпись «Строки», над другим – «Столбцы». С помощью первого выбирается строка таблицы, другим - столбец. При нажатии кнопки “Занесение” в соответствующую ячейку заносится произведение или сумма номеров строки и столбца. Вид операции определяется состоянием кнопки SpeedButton. Кнопка «Очистка» очищает данную ячейку. Кнопка Close заканчивает программу.
procedure TForm1.Button2Click(Sender: TObject);
begin
case listbox1.ItemIndex of
0: stringgrid1.Col:=strtoint(listbox1.Items[listbox1.itemindex]);
1: stringgrid1.Col:=strtoint(listbox1.Items[listbox1.itemindex]);
2: stringgrid1.Col:=strtoint(listbox1.Items[listbox1.itemindex]);
3: stringgrid1.Col:=strtoint(listbox1.Items[listbox1.itemindex]);
4: stringgrid1.Col:=strtoint(listbox1.Items[listbox1.itemindex]);
5: stringgrid1.Col:=strtoint(listbox1.Items[listbox1.itemindex]);
end;
case listbox2.ItemIndex of
0: stringgrid1.Row:=strtoint(listbox2.Items[listbox2.itemindex]);
1: stringgrid1.Row:=strtoint(listbox2.Items[listbox2.itemindex]);
2: stringgrid1.Row:=strtoint(listbox2.Items[listbox2.itemindex]);
3: stringgrid1.Row:=strtoint(listbox2.Items[listbox2.itemindex]);
4: stringgrid1.Row:=strtoint(listbox2.Items[listbox2.itemindex]);
5: stringgrid1.Row:=strtoint(listbox2.Items[listbox2.itemindex]);
end;
end;
На форме располагаются компоненты: таблица StringGrid размером 3х6, шесть кнопок Button c пронумерованными названиями изображений, контейнер Image, радионабор из трех положений и кнопка Close. Нажатие кнопки с названием приводит к появлению на Image соответствующего изображения и дублированию названия рисунка в соответствующей ячейке строки таблицы. Номер строки задается радионабором. Остальные ячейки этой строки при этом очищаются.
На форме располагаются: таблица StringGrid 4х5, два набора радиокнопок с соответствующими надписями для выбора номеров строк и столбцов таблицы, редактор MaskEdit, кнопка Button c надписью «Занесение» и кнопка Close. Выбор ячейки таблицы и нажатие кнопки «Занесение» приводит к появлению в данной ячейке текста из редактора MaskEdit. При этом в другой ячейке надпись исчезает. Редактор требует ввода слов (только буквы) длиной от 4 до 8 символов, в противном случае занесение не происходит. Кнопка Close заканчивает программу.
На форме располагаются компоненты: таблица StringGrid 4х6, в первую ячейку которого занесена фамилия студента; четыре кнопки cо стрелками , , , ; редактор MaskEdit для отображения координат текущей ячейки и кнопка Close. Нажатие кнопок со стрелками приводит к перемещению в указанном направлении фамилии. Редактор позволяет ввести новые координаты ячейки в указанном формате и диапазоне с клавиатуры, а нажатие клавиши Enter приводи к перемещению фамилии в новое место. Остальные ячейки таблицы при этом очищаются.
На форме располагаются: четыре кнопки BitBtn с рисунками и номерами сверху, контейнер Image, две линейки ScrollBar, кнопка Close и редактор Edit. Нажатие каждой кнопки приводит к дублированию на Image рисунка, а номер кнопки отображается в окне редактора. Линейки ScrollBar меняют размер Image в диапазоне 50х50 .. 150х150. Кнопка Close заканчивает программу.
На форме располагаются компоненты: таблица StringGrid с исходным размером 6х6, в первую ячейку которого занесено название группы; метка для отображения координат текущей ячейки; список ListBox, меняющий размер таблицы (варианты: 5х4, 5х6, 6х6, 7х6, 5х7) и кнопка Close. Нажатие клавиш , , , на клавиатуре приводит к перемещению в указанном направлении названия группы. Редактор позволяет ввести новые координаты ячейки в указанном формате и диапазоне с клавиатуры, а нажатие клавиши Enter приводи к перемещению названия группы в новое место. Остальные ячейки таблицы при этом очищаются.
На форме располагаются: семь кнопок SpeedButton с подписями-днями недели; линейка ScrollBar, размеченная днями недели; кнопка Close; флажок CheckBox и редактор MaskEdit. Перемещение вдоль линейки приводит к нажатию соответствующей кнопки и отображению текущего дня недели в редакторе MaskEdit, а флажок задает режим отображения: заглавными или прописными буквами. Кнопка Close заканчивает программу.
На форме располагаются: кнопка SpeedButton, кнопка Close, редакторы MaskEdit и Memo, контейнер Image. В редакторе Memo содержится 10 Фамилий И.О. В редактор MaskEdit разрешено вводить текст только по такому же формату. Если введенная фамилия совпадает с одной из фамилий в Memo, в Image отображается изображение данного человека. В противном случае фон Image становится прозрачным, т.е. его не видно. Кнопка Close заканчивает программу.
На форме располагаются: таблица StringGrid 5x5; главное меню с четырьмя опциями , , , ; кнопка SpeedButton; редактор MaskEdit и кнопка Close. Главное меню меняет координаты активной ячейки, которые отображаются на заголовке формы. При достижении границы таблицы соответствующая опция меню дезактивируется и становится рабочей при отходе от границы. В текущую ячейку можно занести через редактор MaskEdit дату в формате 01/07/2005 или 01/июл/05. Вид формата меняется кнопкой SpeedButton. Кнопка Close заканчивает программу.
На форме располагаются: таблица StringGrid 3x4 с исходным размером ячеек 30х40; две линейки ScrollBar для изменения размеров ячеек в диапазоне 20х30 .. 40х50; два компонента ListBox для смены текущей ячейки, координаты которой отображаются на метке. В ячейки таблицы занесены слова, которые также отображаются на метке после координат. При уменьшении размеров ячеек до значений 30 или 40 разделительные линии в сетке исчезают. Кнопка Close заканчивает программу.
На форме располагаются: таблица StringGrid 4x7, в каждой строке которой свой набор элементов: "Цветы", "Деревья", "Реки", "Города"; четыре набора главных меню, соответствующие строкам таблицы; две линейки ScrollBar для изменения текущей ячейки таблицы; кнопка Close. Изменение номера строки делает активным соответствующее ей меню, а изменение номера столбца дезактивирует соответствующую ему опцию меню. Кнопка Close заканчивает программу.
На форме располагаются: главное меню с шестью опциями-названиями животных, контейнер Image, кнопка Close и радионабор для выбора животного. Выбор осуществляется мышью или клавишами клавиатуры (, или , ). Выбранное животное отображается на элементе Image, а соответствующая ему опция в меню становится невидимой. Кнопка Close заканчивает программу.
На форме располагаются: таблица StringGrid с календарем на текущий месяц, в котором названия столбцов соответствуют дням недели; редактор MaskEdit, используемый для ввода числа; группа из семи кнопок SpeedButton, размеченная днями недели. Ввод дня в редактор и запуск контекстным меню приводят к нажатию кнопки, соответствующей выбранному дню недели. Этот же день дублируется в заголовке формы. Кнопка Close заканчивает программу.
На форме располагаются компоненты: таблица StringGrid размером 6х6, два списка ListBox для выбора строки и столбца таблицы, три флажка CheckBox. В ячейки таблицы можно в произвольном порядке заносить только текст, только число, смешанную информацию. Посредством клавиш , , , клавиатуры можно перемещаться только по выбранным строке и столбцу. При этом активизируется CheckBox, соответствующий текущей информации в ячейке. Кнопка Close заканчивает программу.
На форме располагаются компоненты: таблица StringGrid размером 6х7, две линейки ScrollBar, пять кнопок SpeedButton, главное меню на шесть опций и кнопка Close. Столбцы таблицы поименованы названия факультетов, а строки - номерами курсов. Главное меню предназначено для выбора факультета, а кнопкой SpeedButton задается курс. Одна линейка позволяет менять высоту ячеек в диапазоне 15 .. 25 пикселей, а другая - ширину в диапазоне 30 .. 50. При высоте меньше 20 и/или ширине меньше 40 пикселей разделительные линии в таблице исчезают. Выбор курса и факультета приводит к отображению в заданной ячейке соответствующей группы. Кнопка Close заканчивает программу.
На форме располагаются: таблица StringGrid с исходным размером 5х5, два радионабора для выбора текущей ячейки, компонент Image, редактор Memo. Все ячейки таблицы заполнены названиями различных предметов (птиц, рыб, животных и т.п.). Компонент Image имеет размер ячейки и перемещается синхронно активной ячейке. При на нем отображается изображение текущего предмета, а название предмета дублируется в редакторе Memo. Кнопка Close заканчивает программу.
На форме располагается таблица StringGrid размером 6х7. Столбцы таблицы поименованы названия факультетов, а строки - номерами курсов. Таблица заполнена реальными названиями групп. Редактор MaskEdit позволяет вводить только название группы. Если оно совпадает с существующим в таблице названием, на элементе Image появляется изображение декана данного факультета, а название данного факультета отображается в главном меню. Кнопка Close заканчивает программу.
На форме располагаются: таблица StringGrid 7х1, в которую занесены дни недели, редактор Edit, флажок CheckBox, кнопка Close. Стрелками клавиатуры и по дням недели перемещается курсор. При этом в редакторе Edit отображается текущий день недели. Перемещение вверх устанавливает флажок, вниз – сбрасывает флажок. Кнопка Close заканчивает программу.
На форме располагаются: таблица StringGrid 2х12, в первую строку которой занесены названия месяцев; компонент Image и кнопка Close. В проект введены три контекстных меню: для формы, таблицы и Image. Контекстное меню формы меняет цвет фона (6 цветов), таблицы - приводит к отображению во второй строчке количества дней в выбранном месяце, Image - меняет рисунок на компоненте (5 рисунков). При этом в заголовке формы указывается, какого компонента меню активизировалось. Кнопка Close заканчивает программу.
На форме располагаются компоненты: две таблицы StringGrid, четыре радиокнопки в виде набора, контекстное меню для формы и две кнопки (с надписями «Очистить» и «Закрыть»). В ячейки левой таблицы заносятся: дробные числа, текст или алфавитно-цифровая информация. В одноименную ячейку правой таблицы заносятся соответственно: результат вычисления тригонометрической функции, длина текста или символ "Х". Функция: sin, cos, tg или ctg, - выбирается с помощью радионабора. Запуск на вычисление производится с помощью контекстного меню. Очистка окна аргумента производится кнопкой. Вторая кнопка заканчивает программу.
На форме располагаются компоненты: две таблицы StringGrid по четыре строки с общим числом столбцов 8; линейка ScrollBar с диапазоном изменения от 2 до 7;
слева от левой таблицы, напротив каждой строки, четыре редактора MaskEdit. Первый редактор позволяет вводить номера групп, второй - номера машин, третий - даты по формату дд/мм/гг, четвертый - номера телефонов по формату ##-##-##. При нажатии Enter информация заносится в текущую ячейку строки со сдвигом вправо по кольцу. Текущий номер готовой для ввода строки отображается справа от правой таблицы. Исходно в каждой таблице по 4 столбца. При перемещении ползунка линейки ScrollBar его положении показывает текущее количество столбцов в левой таблице n, а правой - остальные 8 - n. Столбцы перемещаются между таблицами вместе со содержимым.
На форме располагаются компоненты: таблица StringGrid размером 3х3, 8 кнопок SpeedButton по периметру таблицы и радионабор на два положения. Кнопки перемещают по периметру таблицы символ '*'. При этом возможно нажатие только следующей кнопки. А направление перемещения задается радионабором.
На форме располагается таблица StringGrid размером 5х5 с контекстным меню. В ячейки таблицы можно заносить только положительные двузначные числа. Контекстное меню запускает сравнение суммы элементов над и под главной диагональю (на главную диагональ заносить информацию нельзя). Если сумма над главной диагональю больше, то над таблицей появляется элемент Image с размером стороны, равной сумме. На Image изображена рыба. В противном Image случае появляется внизу таблицы с рисунком птицы.
На форме располагаются компоненты: таблица StringGrid 7х7; главное меню, задающее направление перемещения; четыре линейки ScrollBar на каждую сторону таблицы. Линейки задают перемещение по периметру таблицы меняющегося символа английского алфавита (по часовой стрелке от a до z, и наоборот). При этом видима только одна линейка, а при достижении угла появляется следующая. Окно программы закрывается контекстным меню.
На форме располагается главное меню на четыре опции. Три первых (птицы, рыбы, звери) из них поочередно активизируют свои компоненты Image. К каждому такому компоненты привязано контекстное меню для выбора отображаемого на Image рисунка (по 6 экземпляров). При активизации одного из Image предыдущий активный становится невидимым. Название отображаемого объекта указывается на метке внизу формы. Опция «Закрытие окна» заканчивает программу.
На форме располагаются две таблица StringGrid 3х4 и главное меню для выбора из них активной. В левую таблицу можно вводить только текст, а в правую - отрицательные и положительные вещественные числа. При попытке неправильного ввода внизу соответствующей таблицы загорается красная лампочка (элемент Image). Активная таблица индицируется радиокнопкой. Кнопка SpeedButton заканчивает работу программы.
На форме располагаются шесть элементов Image с разными рисунками. У каждого такого элемента есть контекстное меню, с помощью которого элемент скрывается. При этом ранее невидимый элемент показывается на форме. Главное меню на две опции позволяет менять прозрачность фона невидимого в данный момент Image. Кнопка Close заканчивает программу.
На форме располагается таблица StringGrid с 3 строками. Число столбцов в диапазоне 3 .. 7 задается линейкой ScrollBar. Слева от таблицы радиогруппа задает активную строку, в которую можно вводить информацию. При этом в 1-ю строку можно вводить только целые числа, вторую - только текст, третью - даты по формату дд-мм-гг. Контекстное меню формы закрывает ее.
На форме располагаются: таблица StringGrid с исходным размером 4x4, кнопка Close, редактор Edit, две линейки ScrollBar, используемые для задания нового размера таблицы со значениям в диапазоне от 2х2 до 7х7, и две команды главного меню с аналогичными функциями. Задание новой размерности приводят к ее отображению в редакторе Edit. Если новый размер задан линейками прокрутки, то толщина разделительных линий сетки равна 0, в противном случае она составляет 1 пиксель. Кнопка Close заканчивает программу.
На форме располагаются: редактор Memo, метка Label, кнопка Close, редактор MaskEdit и две линейки ScrollBar, используемые для задания нового размера редактора Memo в диапазоне от 150х200 до 400х500. Задание новой размерности приводят к ее отображению на метке. Если размер редактора меньше 200х300, то в нем копируются только заглавные буквы, введенные в редакторе MaskEdit, в противном случае любой текст. Кнопка Close заканчивает программу.
На форме располагаются компоненты: редакторы MaskEdit и Memo, Label, радионабор из двух кнопок, кнопки BitBtn вида Yes и Close. При запуске программы курсор находится в редакторе MaskEdit. В него вводится строка, содержащая только цифры или только буквы. Вид фильтра определяется радионабором. При нажатии кнопки Yes она копируется в Memo или на Label. Приемник копирования выбирается с помощью контекстного меню. Кнопка Close заканчивает программу.
На форме располагаются: таблица StringGrid 5x5; контекстное меню таблицы с четырьмя опциями , , , ; кнопка SpeedButton; редактор MaskEdit и кнопка Close. Контекстное меню меняет координаты активной ячейки, которые отображаются в данной ячейке. При достижении границы таблицы соответствующая опция меню дезактивируется и становится рабочей при отходе от границы. В текущую ячейку можно занести через редактор MaskEdit дату в формате 01/07/2005 или 01/июл/05. Вид формата меняется кнопкой SpeedButton. Кнопка Close заканчивает программу.
На форме располагаются: таблица StringGrid 2х12, в первую строку которой занесены названия месяцев; компонент Image, радионабор и кнопка Close. В проект введены три главных меню: для формы, таблицы и Image. Контекстное меню формы меняет цвет фона (6 цветов), таблицы - приводит к отображению во второй строчке количества дней в выбранном месяце, Image - меняет рисунок на компоненте (5 рисунков). Текущее главное меню задается радионабором. Кнопка Close заканчивает программу.
II. Результат разработки продемонстрировать преподавателю.
Содержание отчета:
1) Задание на выполнение лабораторной работы;
2) Структура проекта;
3) Листинг программы.
Контрольные вопросы
1) Может ли редактор MaskEdit работать как редактор Edit?
2) Почему синтез графики на компоненте Image предпочтительнее данного процесса непосредственно на пространстве формы?
3) Как заносятся значения в ячейки таблицы StringGrid?
4) Какое минимальное значение кнопок должно быть в группе на основе SpeedButton?
5) Как заносится графика на кнопки BitBtn?
Лабораторная работа № 4