.RU

Задачи курса: 1) Приобретение навыков работы в среде системы визуального программирования Delphi (версия не ниже 0). Создание простейших Приложений - страница 3



Каждый элемент меню является объектом класса TMenuItem. Свойства этого класса описаны в следующей таблице. Термин “родительская опция” означает опцию, выбор которой приводит к раскрытию подменю с данной опцией.

^ Таблица 21 Свойства TMenuItem

AutoCheck

Логическое свойство, которое определяет, будет или нет автоматически изменяться свойство Сhecked при выборе опции меню

AutoHotkeys

Определяет, будет ли следить программа за уникальностью клавиш быстрого выбора для подопций: maAutomatic – автоматически при создании подопции; maManual – с помощью вызова специального метода; maParent – по правилу, установленному для опции верхнего уровня

Bitmap

Содержит ссылку на связанное с опцией изображение. Это изображение (если оно есть) появляется слева от опции. Свойство игнорируется, если установлено свойство ImageIndex (см. ниже)

Break

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

Checked

Если свойство содержит True, рядом с опцией появляется галочка

Count

Содержит количество опций в подчиненном меню, связанном с данным элементом (только для чтения)

ImageIndex

Содержит индекс связанного с опцией изображения из компонента TImageList. Это изображение (если оно есть) появляется слева от опции. Если свойство имеет значение -1, с опцией не связано никакого изображения из TImageList

^ Items[Index: Integer]

Позволяет обратиться к любой опции подчиненного меню по ее индексу

Shortcut

Задает клавиши-акселераторы для быстрого выбора данной опции


В Delphi 4 (5 и 6) появилась возможность связывать с опциями меню небольшие изображения. Эти изображения можно задать либо свойством BitMap, либо свойством ImageIndex. В последнем случае предполагается, что для меню в целом определено свойство Images. Изображение показывается слева от опции. Например, на рисунке показан фрагмент главного меню Delphi с раскрытой опцией File. Как видим, опции Open, Оpen Project, Save и т. д. снабжены небольшими пиктограммами. Введение пиктограмм в меню повышает наглядность

Свойство ^ Break по умолчанию имеет значение mbNone. Два других возможных значения этого свойства используются для создания многоколончатых списков подменю. Значение mbBarBreak заканчивает предыдущую колонку и начинает новую. Эта опция меню будет открывать новую колонку, которая отделяется от предыдущей вертикальной чертой. Значение mbBreak также создает новую колонку, но не вставляет разделительную черту. Эти значения игнорируются в опциях самого первого уровня. В окне конструктора многоколончатое меню отображается как обычное.

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

Компоненты класса TPopupMenu используются для создания вспомогательных (локальных) меню, появляющихся после нажатия правой кнопки мыши. В отличие от главного меню, вспомогательное меню может быть создано для любого оконного компонента. Чтобы связать щелчок правой кнопкой мыши на компоненте с раскрытием вспомогательного меню, в свойство PоpupMеnu компонента необходимо поместить имя компонента-меню.

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

    1. Диалоговые компоненты

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

Рассмотрим компоненты TSaveDialog и TOpenDialog. Эти компоненты имеют идентичные свойства и поэтому рассматриваются вместе. Пример окна, которое реализует компонент TOpenDialog показан на рисунке.




^ Таблица 22 Свойства TSaveDialog и TOpenDialog

FileName

Содержит маршрут поиска и выбранный файл при успешном завершении диалога

Filter

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

InitialDir

Содержит имя начального каталога

DefaultExt

С помощью свойства DefaultExt формируется полное имя файла, если при ручном вводе пользователь не указал расширение. В этом случае к имени файла прибавляется разделительная точка и содержимое этого свойства.

Title

Содержит заголовок диалогового окна

Программа может использовать это свойство FileName для доступа к файлу с целью читать из него данные (TOpenDialog) или записывать в него (TSaveDialog), при этом пользователь может ввести произвольное имя и, следовательно, указать несуществующий файл. Для записи это не имеет значения, но при чтении отсутствие файла может привести к краху программы. Чтобы избежать этого, можно проверить существование файла глобальной функцией FileExists.

Свойство Filter можно устанавливать с помощью специального редактора на этапе конструирования формы или программно. Для доступа к редактору достаточно щелкнуть по кнопке в строке Filter окна Инспектора объектов. При программном вводе фильтры задаются одной длинной строкой, в которой символы “|” служат для разделения фильтров друг от друга, а также для разделения описания фильтруемых файлов от соответствующей маски выбора. Например, оператор

OpenDialog1.Filter := 'Текстовые файлы|*.txt| Файлы Паскаля|*.раs';

задает две маски для отбора файлов с расширениями раs и TXT.

Главным методом компонентов TSaveDialog и TOpenDialog является функция Execute, которая показывает окно диалога и возвращает значение True, если диалог успешно завершен, т.е. пользователь ввел подходящее имя файла и нажал кнопку Сохранить/ Открыть. В противном случае, функция Execute возвращает значение False.

В диалоговом окне для ручного ввода имени файла предусмотрен элемент TEdit, который при желании можно заменить на TCоmbовох. Для этого необходимо свойству FileEditStyle придать значение fsComboBox вместо умалчиваемого fsEdit. Если выбран комбинированный список, с ним можно связать протокол выбора имен. Для этого используется свойство HistoryList, содержимое которого будет появляться в выпадающем списке. Этот список не пополняется автоматически, поэтому за его содержимым должна следить программа. Например:

if OpenDialog1.Execute then

begin

HistoryList.Add(OpenDialog1.FileName);

end;

Настройка диалога может варьироваться с помощью сложного свойства Options. Логические подсвойства этого свойства имеют следующий смысл.

^ Таблица 23 Значения свойства Options

ofReadOnly

Устанавливает переключатель ^ Только для чтения

ofOverwritePrompt

Требует согласия пользователя при записи в существующий файл

ofHideReadOnly

Прячет переключатель ^ Только для чтения

оfNoChangeDir

Запрещает смену каталога

ofShowHelp

Включает в окно кнопку Help

ofNoValidate

Запрещает автоматическую проверку правильности набираемых в имени файла символов

оfAllowMultiSelect

Разрешает множественный выбор файлов

ofExtensionDifferent

При завершении диалога наличие этого значения в свойстве Оptions говорит о том, что пользователь ввел расширение, отличающееся от умалчиваемого

ofPathMustExist

Разрешает указывать файлы только из существующих каталогов

ofFileMustExist

Разрешает указывать только существующие файлы

ofCreatePrompt

Требует подтверждения для создания несуществующего файла

ofShareAware

Разрешает выбирать файлы, используемые другими параллельно выполняемыми программами

оfNoReadOnlyReturn

Запрещает выбор файлов, имеющих атрибут ^ Только для чтения

ofNoTestFileCreate

Запрещает проверку доступности сетевого или локального диска

оfNoNetworkButton

Запрещает вставку кнопки для создания сетевого диска

ofNoLongNames

Запрещает использование длинных имен файлов

ofOldStyleDialog

Создает диалог в стиле Windows 3-х

Приведем пример обработчика нажатия пункта Open главного меню формы. При этом файл с выбранным именем (с помощью диалога TOpenDialog) загружается в многострочный редактор TMemo.

procedure TForm1.Open1Click(Sender: TObject);

begin

If OpenDialog1.Execute then

If FileExists(OpenDialog1.FileName)

then

Memo1.Lines.LoadFromFile(

OpenDialog1.FileName)

end;



    1. Таблица строк

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

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

^ Таблица 24Свойства компонента TStringGrid

BorderStyle

Определяет рамку компонента: bsNone – нет рамки; bsSingle – рамка толщиной 1 пиксель

^ Cells[ACol, ARow]

Определяет содержимое ячейки с табличными координатами (ACol, ARow)

Col

Содержит номер столбца сфокусированной ячейки

ColCount

Содержит количество столбцов таблицы

^ Cols[Index: Integer]

Содержит все строки колонки с индексом Index

ColWidths[Index: Longint]

Содержит ширину столбца с индексом Index

EditorMode

Логическое свойство, которое разрешает/запрещает редактирование ячеек. Игнорируется, если свойство ^ Options включает goAlwayseShowEditor или не включает goEditing

FixedColor

Определяет цвет фиксированной зоны

FixedCols

Определяет количество столбцов фиксированной зоны

FixedRows

Определяет количество рядов фиксированной зоны

GridHeight

Содержит высоту таблицы

GridWidth

Содержит ширину таблицы

Options

Содержит параметры таблицы

Row

Содержит номер ряда сфокусированной ячейки

RowCount

Содержит количество рядов таблицы

^ Rows[Index: Integer]

Содержит все строки ряда с индексом Index

ScrollBars

Определяет полосы прокрутки: ssNone – нет полос; ssHorizontal – в таблицу вставляется горизонтальная полоса; ssVertical – вставляется вертикальная полоса; ssBoth – вставляются обе полосы

В следующем примере компонент TStringGrid используется для показа значений функции с заданным шагом и на заданном отрезке (границы вводятся с клавиатуры в компоненты TEdit). Для TStringGrid в Инспекторе объектов необходимо установит свойства:

ColCount=2

RowCount=2

FixedCols=0

FixedRows=1


При создании формы происходит заполнение заголовка (фиксированной части) таблицы.




procedure TForm1.FormCreate(Sender: TObject);

begin

with StringGrid1 do

begin Cells[0,0]:='x';

Cells[1,0]:='sin x';

end;

При нажатии кнопки таблица заполняется значениями функции.


procedure TForm1.Button1Click(Sender: TObject);

var y:real;

i:integer;

begin

y:=strtofloat(Edit1.text);

i:=1;

while y<=strtofloat(Edit2.text) do

begin

with StringGrid1 do

begin

cells[0,i]:=floattostr(y);

cells[1,i]:=floattostr(sin(y));

RowCount:=RowCount+1;

end;

y:=y+0.25; i:=i+1;

end;

end;

    1. Переключатели

Переключатели используется для того, чтобы пользователь мог указать свое решение типа ^ Да/Нет или Да/Нет/Не совсем. Различают независимые и зависимые переключатели. В составе диалогового окна может быть несколько переключателей. Если состояние любого из них не зависит от состояния остальных, то такие переключатели называются независимыми, в противном случае – зависимыми. На закладке Standart имеются визуальные компоненты-переключатели: TCheckBox (независимый переключатель) и TRadioButton (зависимый переключатель).

^ Таблица 25Свойства компонента TCheckBox.

Alignment

Определяет положение текста: taLeftJustify – с левой стороны компонента; taRightJustify – с правой стороны

AllowGrayed

Логическое свойство, которое разрешает/запрещает использование состояния cbGrayed (Не совсем)

Caption

Содержит связанный с компонентом текст

Checked

Логическое свойство, которое содержит выбор пользователя типа Да/Нет. Состояния cbUnchecked и cbGrayed отражаются как False

State

Содержит состояние компонента: cbUnchecked – нет; cbChecked – да; cbGrayed – не совсем


Типичное использование компонента:

if CheckBox1.Checked then ShowMessage(‘Yes’)

else ShowMessage(‘No’)

Или:

case CheckBox1.State of

cbChecked : ShowMessage(‘Yes’);

cbUnchecked: ShowMessage(‘No’);

cbGrayed : ShowMessage(‘Not sure’);

end;

Свойство Color компонента фактически игнорируется, а свойства Height и Width определяют размеры прямоугольника, в котором выводится связанный с переключателем текст, и не влияют на размеры прямоугольного окошка. Сам текст указывается в свойстве Caption.

В отличие от TCheckBox компонент TRadioButton представляет собой зависимые переключатель, предназначенные для выбора одного из нескольких взаимоисключающих решений. На форму необходимо поместить по меньшей мере два таких компонента. Они могут иметь только два состояния, определяемых свойством Сhecked. Если в одном компоненте это свойство принимает значение True, во всех других компонентах, расположенных в том же контейнере, свойства Сhecked принимают значения False. Например, так выглядит стандартное завершение сеанса работы в Windows.




Как и в TCheckBox, программист не может изменять размеры и цвет круглого окошка компонента. Для компонентов TCheckBox и TRadioButton определено событие OnClick, которое генерируется в момент щелчка мыши по компоненту.

Компонент класса TRadioGroup представляет собой специальный контейнер с заголовком, предназначенный для размещения зависимых переключателей класса TRadioButton.

^ Таблица 26Свойства компонента TRadioButton


После размещения на форме компонент пуст. Чтобы создать в нем хотя бы один переключатель, следует раскрыть редактор списка ^ Items и ввести хотя бы одну строку: строки Items используются как поясняющие надписи справа от переключателей, а их количество определяет количество переключателей в группе. После создания компонента его свойство ItemIndex по умолчанию имеет значение -1, т.е. ни один переключатель в группе не выбран. Если в момент появления компонента на экране в каком-то переключателе выбор уже должен быть установлен, необходимо на этапе конструирования с помощью Инспектора объектов или программно (например, в обработчике OnActivate формы) установить в свойство ItemIndex номер соответствующего переключателя (нумерация начинается с 0). Это же свойство позволяет программе проанализировать выбор пользователя.

^ Таблица 27Свойства компонента TRadioButton



Columns

Определяет количество столбцов переключателей

Itemlndex

Содержит индекс выбранного переключателя

Items

Содержит список строк с заголовками элементов. Добавление/удаление элементов достигается добавлением/удалением строк списка Items.
Рассмотрим следующий пример. На форме размещен компонент TRadioGroup с двумя опциями, которые определяют положение полос прокрутки на компоненте Memo. Формирование опций компонента происходит во время создания формы.


procedure TForm1.FormCreate(Sender: TObject);

begin

RadioGroup1.Items.Add(' Вертикальная');

RadioGroup1.Items.Add(' Горизонтальная');

RadioGroup1.ItemIndex := 2;

end;


procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

if RadioGroup1.Items[RadioGroup1.ItemIndex] = ' Вертикальная' then

Memo1.ScrollBars:= ssVertical;

if RadioGroup1.Items[RadioGroup1.ItemIndex] = ' Горизонтальная' then

Memo1.ScrollBars:= ssHorizontal;

end;

Или

case RadioGroup1.ItemIndex of

0: Memo1.ScrollBars:= sbVertical;

1: Memo1.ScrollBars:= sbHorizontal;

else

..... //Не выбран ни один переключатель

end;


Подобно тому как TRadioGroup группирует зависимые переключатели, TСheckListBox группирует независимые переключатели, позволяя обратиться к любому из них по индексу. Чтобы вставить в компонент группу независимых переключателей, следует раскрыть редактор его свойства Items и ввести одну или несколько текстовых строк – каждая строка будет соответствовать поясняющей надписи справа от переключателя.

^ Таблица 28Свойства компонента TСheckListBox

AllowGrayed

Логическое свойство, которое разрешает/запрещает использовать в переключателях третье состояние cbGrayed

BorderStyle

Определяет тип рамки, очерчивающей компонент: bsNone – нет рамки; bsSingle – рамка толщиной в 1 пиксель

Checked[Index:Integer]

Содержит выбор пользователя типа ^ Да/Нет для переключателя с индексом Index. Состояния cbUnchecked и cbGrayed отражаются как False

Columns

Определяет количество колонок опций

Flat

Логическое свойство, которое разрешает/запрещает трехмерную прорисовку окошек выбора

^ Header[Index: Integer]

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

ItemЕnabled[Index:Integer]

Разрешает/запрещает выбор опции с индексом Index

ItemIndex

Содержит индекс выбранной опции (индексация опций начинается с нуля)

Items

Содержит опции компонента

MultiSelect

Если содержит True, пользователь может выбирать несколько опций

SelCount

Содержит количество выбранных опций компонента, если свойство MultiSelect содержит True

^ Selected[Index: Integer]

Содержит True, если опция с индексом Index выбрана

Sorted;

Логическое свойство, разрешающее сортировку по алфавиту надписей на переключателях

^ State[Index: Integer]

Содержит состояние переключателя с индексом Index: cbUnchecked – нет; cbChecked – да; cbGrayed – не совсем


Для компонента определено событие OnClickCheck, которое наступает при изменении состояния любого переключателя.


procedure TForm1.FormCreate(Sender: TObject);

begin

CheckListBox1.Items.Add('Выравнивание');

CheckListBox1.Items.Add('Цвет');

CheckListBox1.ItemIndex := 2;

end;


procedure TForm1.CheckListBox1Click(Sender: TObject);

begin

if CheckListBox1.Checked[0]

then Memo1.Alignment:= taCenter

else Memo1.Alignment:= taLeftJustify;

if CheckListBox1.Checked[1]

then Memo1.Color:= clAqua

else Memo1.Color:=clBlue;

end;

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

  1. Как вызвать Дизайнер Меню?

  2. Как создать подменю?

  3. Каким образом можно поместить иконки для пунктов меню?

  4. Как установить быстрые клавиши для пунктов меню?

  5. На что влияет свойство Break пункта меню?

  6. Какие компоненты используются для организации диалога при сохранении и открытии файлов?

  7. Какой метод активизирует диалоговые компоненты?

  8. Что такое контекстное меню?

  9. Что представляет собой компонент TStringGrid?

  10. Чем отличаются компоненты TRadioButtom и TRadioGroup?

  11. Для чего используется компонент TCheckBox?

  12. Какие компоненты реализуют списки выбора?

  13. Какие виды кнопок имеются среди визуальных компонентов?




    Лабораторная работа 1

Тема: Первое приложение на DELPHI

Цель работы: Ознакомиться с основными приемами работы в среде DELPHI


Порядок выполнения работы:

  1. Запустите Delphi. (Пуск/ Программы/Borland Delphi 5)

  2. Выберите в Палитре компонентов закладку Standard.

  3. Перенесите с Палитры компонентов на форму компоненты TLabel и TButton. Для этого поочередно подводите курсор мыши к компонентам, читая подсказки, до тех пор, пока не появится Label. Выберете его, нажав левую кнопку мыши, а затем переместите указатель на форму и нажмите еще раз на кнопку мыши. Помещенный на форму компонент будет иметь имя Label1.

  4. Проделайте то же самое, только с компонентом TButton .

  5. Напишите обработчик события Button1Click. Для этого выберите на форме Button1 и щелкните на него дважды. Вы окажетесь в окне редактирования. Приведите обработчик события нажатия кнопки к следующему виду:

procedure TForm1.Button1Click(Sender: TObject);

begin

Label1.Caption:='Здравствуй, мир!';

end;

При нажатии на кнопку вызывается обработчик события Form1.Button1Click(Sender: TObject), в котором мы меняем свойство Caption у объекта Label1.


  1. Создайте новый каталог с именем MyProject. Для этого выполните команду главного меню File \ Open file и с помощью пиктограммы «Новый каталог» создайте новый каталог. Сохраните проект в созданном каталоге, выбрав пункт в главном меню File\ Save. При этом предлагается сохранить два файла (с расширением pas и prj).

  2. Запустите на выполнение созданное Приложение. Для этого выберете в главном меню пункт Run\ Run, или нажмите клавишу F9.

  3. Нажмите на кнопку в запущенном Приложении и посмотрите, что из этого получилось. Закройте Приложение.

  4. Поместите на форму компонент TEdit.(см. п.3) и TButton.

  5. Приведите обработчик события нажатия кнопки Button2 к следующему виду (вызов обработчика см. в п.5): (Переключение между формой, инспектором объектов и окном редактирования - F12).

procedure TForm1.Button2Click(Sender: TObject);

begin

Label1.Caption:=Edit1.Text;

end;

  1. Измените свойство Edit1.Text на “Привет, студент!!!”. Для этого выберете на форме объект Edit1. Перейдите в Object Inspector, в закладке Properties найдите свойство Text и замените его.

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

  3. Добавьте компоненты TLabel и TButton. Установите свойство объекта Label2.Caption равным 1 (см. п.3).

  4. Приведите обработчик события нажатия кнопки Button3 к следующему виду: (см. п.5)

procedure TForm1.Button3Click(Sender: TObject);

Var i:Integer;

Begin

i:= StrToInt (Label2.Caption);

Label2.Caption:= IntToStr (i+1);

end;

{IntToStr, StrToInt – функции, преобразующие целый тип в строковый и строковый в целый соответственно}

  1. Разместите на форме все кнопки вертикально, друг под другом. Выделите все кнопки и выровняйте их размеры и положение с помощью команд Edit\Size и Edit\Align.

  2. Сохраните и запустите приложение из среды. Проверьте работоспособность всех кнопок формы.

  3. Показать в окне Open все файлы проекта MyProject. Сформировать для файла Project1.exe ярлык. Для этого вызвать контекстное меню для файла Project1.exe и выбрать пункт «Создать ярлык». В списке файлов проектов появится файл Ярлык для Project1.exe. Скопировать его на рабочий столWindows с помощью контекстного меню ярлыка или «перетаскиванием» его на стол.

  4. Сверните систему Delphi. Запустите приложение с помощью ярлыка. Закройте приложение, удалите ярлык приложения, вернитесь в среду Delphi.




    ^ ЛАБОРАТОРНАЯ РАБОТА 2

Тема: Определение нажатой клавиши и нажатого символа.


Цель работы: Ознакомиться с основными клавиатурными событиями визуальных компонентов.


Порядок выполнения работы:

  1. Разместите на форме 6 объектов типа Label и одну кнопку с растровым изображением (компонент BitBtn на закладке Additional палитры компонентов). Установите у кнопки свойство Kind равным bkClose.




  1. При создании одинаковых по размеру объектов пользуйтесь буфером обмена или командой EditSize. Для выравнивания положения объектов на форме используйте команду EditAlign

  2. Для всех объектов типа Label установить свойство AutoSize равным False, свойство Aligment – taCenter. Для меток слева установите нужные свойства Caption, Font. Для меток справа удалите свойство Caption, измените свойство Font по своему усмотрению.

  3. Для всех объектов типа ТLabel оформите границы, используя такие декоративные элементы, как фаски (компонент ТBevel на закладке палитры компонентов Additional). У объектов типа ТBevel установите значения свойств Shape и Style.

  4. Обработка клавиатуры осуществляется путем создания обработчиков событий: ^ OnKeyDown, OnKeyPress, OnKeyUp. Для того, чтобы события клавиатуры принимал не компонент формы, обладающий в данный момент фокусом ввода, а сама форма, используйте свойство формы KeyPreview.

  5. В процедуре обработки события формы OnKeyDown необходимо выполнить следующие действия. Показать значение переменной Key (код виртуальной клавиши) в качестве нажатой клавиши. Для преобразования кода в строковую переменную используйте функцию IntToStr. Проверить были ли нажаты клавиши Shift, Alt, Ctrl (принадлежат ли элементы ssShift, ssAlt, ssCtrl множеству Shift, которое передаётся процедуре в качестве параметра). Создать строку из комбинации нажатых клавиш (например, Shift+Alt+Ctrl, если были нажаты все три клавиши) и поместить её на форму в соответствующее место.

  6. Например, для проверки нажатия клавиши Alt можно использовать следующий код

if ssAlt in Shift then Label6.Caption:=’Alt’;

  1. Процедура обработки события OnKeyPress получает значение параметра Key, равное символу ASCII. Для отображения символа в объекте Label2 используйте

Label2.Caption:=Key


  1. В процедуру обработки события формы OnKeyUp добавьте операторы очистки заголовков объектов типа Label из среднего столбца. Например, Label2.Caption:=’’.




    ^ ЛАБОРАТОРНАЯ РАБОТА 3

Тема: Создание главного меню

Цель работы: Научится использовать в приложении главное меню.

Порядок выполнения работы:

  1. Поместите на форму компонент MainMenu (закладка Standart на Палитре компонентов). Вызовите Дизайнер Меню, дважды щелкнув мышкой по компоненту на форме. Затем создайте меню как показано на рисунке.Для создания подменю можно воспользоваться командой Create SubMenu в контекстном меню, которое вызывается правой кнопкой мыши. После разработки закройте Дизайнер Меню. В верхней части формы теперь можно видеть разработанное меню.

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

procedure TForm1.N2Click(Sender: TObject);

var s:string;

begin

s:=format('Width %d', [width]);

ShowMessage(s);

end;


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

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

  3. Поместите на форму компонент ImageList (закладка Win32 на Палитре компонентов). Дважды щелкнув на компонент, можно вызвать редактор этого компонента. Используйте кнопку Add, чтобы добавить иконки (файлы с расширением ico). Можно использовать любые готовые иконки либо создать их самостоятельно. Для этого нужно вызвать редактор изображений (пункт главного меню Tools/ Image Editor). Далее создайте новое изображение File/ New/ Icon file ( .ico). Нарисуйте икону, используя различные цвета и инструменты на панели. Сохраните иконку в свою директорию. Рекомендуется добавить в ImageList 5-6 различных иконок.

  4. Выделите компонент MainMenu1 и установите свойство Images равным ImageList1. После этого для каждого пункта меню установите свойство ImageIndex, выбрав из списка нужную иконку. Меню может выглядеть так.

  5. Для каждого из пунктов меню ^ Размеры установите свойство Break равным mbBarBreak. Запустите приложение, проверьте его работу.


Необходимая информация.

Диалоговые окна используются для вывода какой-либо информации или для запросов.


procedure ShowMessage(const Msg: string);


Показывает на экране окно с сообщением Msg и с кнопкой ОК. Пример использования этой процедуры показан на рисунке.


ShowMessage('Hello!!!');


    ^ ЛАБОРАТОРНАЯ РАБОТА 4

Тема: Создание простейшего текстового редактора

Цель работы: Освоить использование основных диалоговых компонентов


Порядок выполнения работы:

  1. Поместите на форму компонент ТMainMenu. Структура меню должна иметь вид:





  1. Пункты меню About, Exit запрограммируйте следующим образом. При выборе пункта About появляется информационное окно с данными автора. Пункт Exit позволяет выйти из приложения.

  2. Запустите приложение. Проверьте работу приложения.

  3. vospitanie-i-obuchenie-v-drevnerusskom-gosudarstve-hi-xv-vv-chast-5.html
    vospitanie-i-obuchenie-v-kievskoj-rusi-i-russkom-gosudarstve.html
    vospitanie-i-shkola-v-rossii-s-drevnejshih-vremen-do-1917-goda.html
    vospitanie-kak-sfera-obshestvennoj-deyatelnosti.html
    vospitanie-razlichnih-kategorij-deviantnogo-povedeniya-chast-3.html
    vospitanie-scenicheskoj-svobodi-uchebnoe-posobie-obobshaet-opit-raboti-so-studentami-po-akterskomu-i-rezhisserskomu.html
  4. write.bystrickaya.ru/glava-vi-sostoyaniya-progressa-ili-stagnacii-narodov-ne-zavisyat-ot-geograficheskogo-mesta-gde-oni-zhivut.html
  5. abstract.bystrickaya.ru/34-vnutriploshadochnie-seti-vodoprovoda-i-kanalizacii-prikaz-241-ot-06-maya-2011-goda-konkursnaya-dokumentaciya.html
  6. uchit.bystrickaya.ru/temi-zanyatij-vid-uchebnogo-zanyatiya-prodolzhitelnost-chas-mesto-provedeniya-fio-prepodavatelya-uchenaya-stepen-dolzhnost-i-mesto-raboti.html
  7. education.bystrickaya.ru/35-osobennosti-kalendarnogo-planirovaniyauchebnogo-processa-b-a-sazonov-bolonskij-process-aktualnie-voprosi.html
  8. esse.bystrickaya.ru/proshanie-s-zikinoj-foto-interfaks-httpwwwinterfaxru-03072009-novosti16.html
  9. grade.bystrickaya.ru/obraz-kak-otstranenie-avangard.html
  10. writing.bystrickaya.ru/avilov-viktor-vasilevich.html
  11. shkola.bystrickaya.ru/referat-tema-medicinskie-informacionnie-sistemi-klassifikaciya-i-perspektivi-vnedreniya.html
  12. esse.bystrickaya.ru/rabochaya-programma-po-discipline-programmnoe-obespechenie-setej-evm-dlya-specialnosti.html
  13. prepodavatel.bystrickaya.ru/statya-osnovnie-termini-primenyaemie-v-nastoyashem-kodekse.html
  14. uchenik.bystrickaya.ru/klassifikaciya-socialnih-tehnologij.html
  15. education.bystrickaya.ru/-20-gornorabochij-ochistnogo-zaboya-burilshik-shpurov-2-vagonetchik-vozdushno-kanatnoj-dorogi-3.html
  16. kolledzh.bystrickaya.ru/aleksej-stepanovich-homyakov-1804-1860-n-k-gavryushin-nauchnij-redaktor-a-d-chervyakov.html
  17. laboratornaya.bystrickaya.ru/rabochaya-programma-disciplini-anglijskaya-terminologiya-vichislitelnoj-tehniki-naimenovanie-disciplini.html
  18. crib.bystrickaya.ru/igra-v-volejbol-stala-ne-tolko-chisto-sportivnoj-no-i-proishodit-razvitie-volejbola-kak-igri-radi-otdiha-igra-v-volejbol-stala-sredstvom-organizacii-dosuga-podderzhaniya-zdorovya-i-vosstanovleniya-rabotosposobnosti.html
  19. writing.bystrickaya.ru/47-primechaniya-metodicheskie-ukazaniya-po-podgotovke-vipusknih-kvalifikacionnih-rabot-specialnost-300100-prikladnaya.html
  20. zadachi.bystrickaya.ru/muzika.html
  21. lecture.bystrickaya.ru/4-vosstanovite-iz-privedyonnih-nizhe-prilagatelnih-i-sushestvitelnih-nazvaniya-proizvedenij-russkoj-literaturi.html
  22. portfolio.bystrickaya.ru/organizaciya-i-razvitie-sluzhbi-skoroj-medicinskoj-pomoshi-v-gorodskom-okruge-tolyatti-uchastie-ssmp-v-realizacii-nacionalnogo-proekta-zdravoohranenie-podrobnee-v-razdele-departament-zdravoohraneniya-stranica-6.html
  23. kontrolnaya.bystrickaya.ru/rabochaya-tetrad-dlya-samostoyatelnoj-raboti-po-kursu-okruzhayushij-mirdlya-uchashihsya-12-raznovozrastnogo-klassa-komplekta.html
  24. books.bystrickaya.ru/doklad-aerosemochnie-metodi-obsledovaniya-lep-v-praktike-raboti-npp-geokosmos.html
  25. paragraph.bystrickaya.ru/lekciya-1-tairibi-krspe-smdkter-fiziologiyasi-pn-zhne-maizi-1-saat-lekciya-zhospari.html
  26. uchitel.bystrickaya.ru/rannie-vostochnie-perevodi-novogo-zaveta-stranica-6.html
  27. teacher.bystrickaya.ru/glava-pyatnadcataya-golova-v-bolote-alekseya-tolstogo-zolotoj-klyuchik-ili-priklyucheniya-buratino.html
  28. learn.bystrickaya.ru/glava-13-resursi-dostupnie-i-neobhodimie-dlya-upravleniya-himicheskimi-veshestvami.html
  29. education.bystrickaya.ru/26-ya-mezhdunarodnaya-olimpiada-po-programmirovaniyu.html
  30. university.bystrickaya.ru/glava-administracii-k-n-shmelev-informacionnij-byulleten-administracii-sankt-peterburga-16-667-3-maya-2010-g.html
  31. spur.bystrickaya.ru/metodicheskie-rekomendacii-po-vipolneniyu-kursovoj-raboti-po-discipline-finansi-denezhnoe-obrashenie-i-kredit.html
  32. teacher.bystrickaya.ru/gorodskoj-konkurs-professionalnogo-masterstva-pedagogov-obrazovatelnih-uchrezhdenij.html
  33. zadachi.bystrickaya.ru/obrobka-porosyat-krolikv-m-yasa-dikih-tvarin.html
  34. znaniya.bystrickaya.ru/razdel-pervij-istoricheskie-puti-idej-gumanizma-borzenko-i-m-kuvakin-v-a-kudishina-a-a-osnovi-sovremennogo-gumanizma.html
  35. uchitel.bystrickaya.ru/rabota-sekretarya-referenta-lichnogo-pomoshnika-rukovoditelya.html
  36. books.bystrickaya.ru/dezhe-kemen-robo-tov-i-paradoksi-vremeni-fantasticheskij-detektiv-i-yumoreski-vstrecha-s-inoplanetnim-razumom-takova.html
  37. tests.bystrickaya.ru/konferenciya-storon-konvencii-o-biologicheskom-raznoobrazii-stranica-14.html
  38. literatura.bystrickaya.ru/specificheskaya-mera-sn-trufanov-nauka-logiki-gegelya-v-dostupnom-izlozhenii.html
© bystrickaya.ru
Мобильный рефератник - для мобильных людей.