10225

Стандартные компоненты Delphi

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

Информатика, кибернетика и программирование

Лабораторная работа № 2 Стандартные компоненты Цель работы: изучить стандартные компоненты Delphi научиться использовать компоненты библиотеки VCL в windowsприложениях. В данной работе рассматриваются компоненты страницы Standard Палитры Компонент Delphi. В предыдущей работе...

Русский

2013-03-24

83.5 KB

24 чел.

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

Стандартные компоненты 

Цель работы: изучить стандартные компоненты Delphi, научиться использовать компоненты библиотеки VCL в windows-приложениях.

В данной работе рассматриваются компоненты страницы Standard Палитры Компонент Delphi. В предыдущей работе Вы познакомились в двумя стандартными компонентами TButton и TLabel. Теперь изучим все оставшиеся  компоненты.

На первой странице Палитры Компонент размещены стандартные объекты. Все эти объекты такая же часть Windows, как мышь или окно. Набор и порядок компонент на каждой странице являются конфигурируемыми. Можно добавить к имеющимся компонентам новые, изменить их количество и порядок.

Стандартные компоненты Delphi перечислены ниже с некоторыми комментариями по их применению.

· Курсор - не компонент, а пиктограмма для быстрой отмены выбора какого-либо объекта.

· TMainMenu позволяет поместить главное меню в программу. При помещении TMainMenu на форму это выглядит, как просто иконка. Иконки данного типа называют "невидимыми компонентом", поскольку они невидимы во время выполнения программы. Создание меню включает три шага:

1. помещение TMainMenu на форму,

2. вызов Дизайнера Меню через свойство Items в Инспекторе Объектов,

3. определение пунктов меню в Дизайнере Меню и написание в Редакторе процедур обработки событий.

Основные свойства и события компонентов TMainMenu:

 Items содержит массив разделов меню типа TMenuItem, обладающих своими свойствами, методами, событиями (Объекты TMenuItem характеризуют разделы меню. Создаются эти объекты Дизайнером Меню, который вызывается двойным щелчком на компоненте меню. Каждой команде меню соответствует свой объект TMenuItem);

 Caption обозначает надпись раздела

 Name - имя объекта раздела

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

Другой способ облегчения доступа к пунктам меню заключается в создании клавиш мнемонического доступа. Для этого перед какой-нибудь буквой названия пункта меню необходимо поставить символ &. Например E&xit.

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

 Break используется в длинных меню, чтобы разбить список разделов на несколько столбцов.   

 Checked, установленное в true, указывает, что в разделе меню будет отображаться маркер флажка, показывающий, что данный раздел выбран.

 RadioItem, установленное в true, определяет, что данный раздел должен работать в режиме радиокнопки совместно с другими разделами, имеющими то же значение свойства GroupIndex.

 Для каждого раздела могут быть установлены во время проектирования или программно во время выполнения свойства Enabled (доступен) и Visible (видимый).

 Начиная с Delphi 4 предусмотрена возможность ввода в разделы меню изображений. За это ответственны свойства разделов Bitmap и ImageIndex. Первое из них позволяет непосредственно ввести изображение в раздел, выбрав его из указанного файла. Второе позволяет указать индекс изображения, хранящегося во внешнем компоненте класса TImageList (Закладка Win32). Указание на этот компонент вы можете задать в свойстве Images компонента TMainMenu.

 Основное событие раздела меню - OnClick, возникающее при щелчке пользователя на разделе или при нажатии "горячих" клавиш и клавиш быстрого доступа.

Любой пункт меню может иметь вложенное меню, которое можно получить в Дизайнере Меню, выбрав соответствующий пункт меню и нажав Ctrl + .

· TPopupMenu позволяет создавать всплывающие меню. Этот тип меню появляется по щелчку правой кнопки мыши. Создание объекта TPopupMenu ничем не отличается от  разработки объектов класса TMainMenu.

· TLabel служит для отображения текста на экране. Для этого в свойство Caption нужно записать необходимый текст. Вы можете изменить шрифт и цвет текста, если дважды щелкнете на свойство Font в Инспекторе Объектов.

· TEdit - стандартный управляющий элемент Windows для ввода. Свойство Text может быть использовано для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы. Текст, не помещающийся по длине в окно, просто сдвигается, и пользователь может перемещаться по нему с помощью курсора. Свойство AutoSize позволяет автоматически подстраивать высоту (но не ширину) окна под размер текста.

Окно редактирования снабжено многими функциями, свойственными большинству редакторов. Например, в нем предусмотрены типичные комбинации "горячих" клавиш: Ctrl-C - копирование выделенного текста в буфер обмена Clipboard (команда Copy), Ctrl-X - вырезание выделенного текста в буфер Clipboard (команда Cut), Ctrl-V - вставка текста из буфера Clipboard в позицию курсора (команда Paste), Ctrl-Z - отмена последней команды редактирования.

Свойство AutoSelect определяет, будет ли автоматически выделяться весь текст при передаче фокуса в окно редактирования. Его имеет смысл задавать равным true в случаях, когда при переключении в данное окно пользователь будет скорее заменять текущий текст, чем исправлять его. Имеются также свойства только времени выполнения SelLength, SelStart, SelText, определяющие соответственно длину выделенного текста, позицию перед первым символом выделенного текста и сам выделенный текст.

· TMemo - иная форма TEdit. Подразумевает работу с большими текстами. Выполняет функции большинства редакторов, имеет "горячие" клавиши для быстрого редактирования. Формат всего текста одинаков и определяется свойством Font.

Свойство Lines, доступное как во время проектирования, так и во время выполнения, имеет множество свойств и методов типа TStrings, которые обычно используются для формирования и редактирования текста. Весь текст содержится в свойстве Text.

TMemo имеет ограничения на объем текста в 32Кб, это составляет 10-20 страниц.

· TButton позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. Поместив TButton на форму, Вы по двойному щелчку можете создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом (подчеркнуто то, что нужно написать вручную):

procedure TForm1.Button1Click(Sender: TObject);
begin
 
ShowMessage('Нажата кнопка!');
end;

В результате, в процессе работы программы после нажатия на кнопку возникнет дополнительное окно с надписью 'Нажата кнопка!'.

· TCheckBox отображает строку текста с маленьким окошком рядом. В окошке можно поставить отметку, которая означает, что что-то выбрано. Индикаторы с флажком TCheckBox используются в приложениях в основном для того, чтобы пользователь мог включать и выключать какие-то опции, или для индикации состояния. При каждом щелчке пользователя на индикаторе его состояние изменяется, проходя в общем случае последовательно через три значения: выделение (появление черной галочки), промежуточное (серое окно индикатора и серая галочка) и не выделенное (пустое окно индикатора). Этим трем состояниям соответствуют три значения свойства State: cbChecked, cbGrayed, cbUnchecked. Все три состояния допускаются только при значении другого свойства AllowGrayed равном true

. Если же AllowGrayed = false (значение по умолчанию), то допускается только два состояния: выделенное и не выделенное. И State, и AllowGrayed можно устанавливать во время проектирования или программно во время выполнения.

Промежуточное состояние обычно используется, если индикатор применяется для отображения какой-то характеристики объекта. Например, если индикатор призван показать, какой регистр использовался при написании некоторого фрагмента текста, то в случае, если весь текст написан в верхнем регистре, индикатор может принимать выделенное состояние, если в нижнем - не выделенное, а если использовались оба регистра - промежуточное.

Проверять состояние индикатора можно не только по значению State, но и по значению свойства Checked. Если Checked равно true, то индикатор выбран, т.е. State = cbChecked. Если Checked равно false, то State равно cbUnchecked или cbGrayed. Установка Checked в true во время проектирования или выполнения автоматически переключает State в cbChecked.

Надпись в индикаторе задается свойством Caption, а ее размещение по отношению к индикатору - свойством Alignment.

Основное событие индикатора - OnClick, наступающее при щелчке на компоненте. В обработчике этого события можно анализировать свойства Checked и State, которые уже приняли новое значение.

· TRadioButton позволяет выбрать только одну опцию из нескольких. При включении одной кнопки группы остальные кнопки автоматически выключаются. Объединение радиокнопок осуществляется обычно панелями: TGroupBox, TPanel и др. Радиокнопки, размещенные непосредственно на форме, также образуют группу. Имеется также компонент группы радиокнопок TRadioGroup, в который не надо переносить кнопки - они присутствуют там изначально и располагаются регулярными рядами. Отдельные компоненты TRadioButton, объединенные контейнерами, имеет смысл использовать только при необходимости нерегулярного размещения кнопок.

Свойство Caption компонента TRadioButton содержит надпись, появляющуюся около кнопки. Значение свойства Alignment определяет, с какой стороны от кнопки появится надпись: taLeftJustify - слева, taRightJustify - справа (это значение принято по умолчанию). Свойство Checked определяет, выбрана ли данная кнопка пользователем, или нет. Поскольку в начале выполнения приложения обычно надо, чтобы одна из кнопок группы была выбрана по умолчанию, ее свойство Checked надо установить в true в процессе проектирования.

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

Отличие TListBox от схожего по функциям компонента TComboBox заключается в следующем:

- TComboBox разрешает пользователю редактировать список, а TListBox не разрешает;

- в TComboBox список может быть развернут или свернут, а в TListBox он всегда развернут;

- TListBox может допускать множественный выбор, а в TComboBox пользователь всегда должен выбрать только один элемент.

Основное свойство компонента, содержащее список строк, - Items, имеющее тип TStrings. Заполнить его во время проектирования можно, нажав кнопку с многоточием около этого свойства в окне Инспектора Объектов. Во время выполнения работать с этим свойством можно, пользуясь свойствами и методами класса TStrings - Clear, Add и другими.

В компоненте TListBox имеется свойство MultiSelect, разрешающее пользователю множественный выбор в списке. Если MultiSelect = false (значение по умолчанию), то пользователь может выбрать только один элемент списка. В этом случае можно узнать индекс выбранной строки из свойства ItemIndex, доступного только во время выполнения. Если ни одна строка не выбрана, то ItemIndex = -1. Начальное значение ItemIndex невозможно задать во время проектирования. По умолчанию ItemIndex = -1. Это означает, что ни один элемент списка не выбран. Если вы хотите задать этому свойству какое-то другое значение, т.е. установить выбор по умолчанию, который будет показан в момент начала работы приложения, то сделать это можно, например, в обработчике события OnCreate формы, введя в него оператор вида

ListBox1.ItemIndex:=0;

Если допускается множественный выбор (MultiSelect = true), то значение ItemIndex соответствует тому элементу списка, который находится в фокусе. При множественном выборе проверить, выбран ли данный элемент, можно проверив свойство Selected[Index: Integer] типа Boolean.

На способ множественного выбора при MultiSelect = true влияет еще свойство ExtendedSelect. Если ExtendedSelect = true, то пользователь может выделить интервал элементов, выделив один из них, затем нажав клавишу Shift  и переведя курсор к другому элементу. Выделить не прилегающие друг к другу элементы пользователь может, если будет удерживать во время выбора нажатой клавишу Ctrl. Если же ExtendedSelect = false, то клавиши Shift и Ctrl при выборе не работают.

Свойство Columns определяет число столбцов, в которых будет отображаться список, если он не помещается целиком в окне компонента ListBox.

Свойство Sorted позволяет упорядочить список по алфавиту. При Sorted = true новые строки в список добавляются не в конец, а по алфавиту.

Свойство Style, установленное в lbStandard (значение по умолчанию) соответствует списку строк. Другие значения Style позволяют отображать в списке не только текст, но и изображения.

Имеется еще один компонент, очень похожий на TListBox - это список с индикаторами TCheckListBox. Выглядит он так же, как TListBox, но около каждой строки имеется индикатор, который пользователь может переключать.

· TComboBox во многом напоминает ListBox, за исключением того, что позволяет водить информацию в маленьком поле ввода сверху ListBox. Стиль изображения списка определяется свойством Style: csDropDown - выпадающий список со строками одинаковой высоты и с окном редактирования, позволяющим пользователю вводить или редактировать текст; csSimple - развернутый список со строками одинаковой высоты и с окном редактирования, позволяющим пользователю вводить или редактировать текст; csDropDownList - выпадающий список со строками одинаковой высоты, не содержащий окна редактирования. Свойство MaxLength определяет максимальное число символов, которые пользователь может ввести в окно редактирования. Если MaxLength = 0, то число вводимых символов не ограничено. Текст выбранной или написанной пользователем строки находится в свойстве Text. Индекс выбранной строки можно узнать из свойства ItemIndex.

Основное событие компонента - OnChange наступает при изменении текста в окне редактирования в результате прямого редактирования текста или в результате выбора из списка.

· TScrollbar - полоса прокрутки, появляется автоматически в объектах редактирования, ListBox’ах при необходимости прокрутки текста для просмотра. Основное свойства TScrollBar - Position. Оно отражает положение бегунка. Это свойство можно задавать во время проектирования или программно во время выполнения. Свойство Position - целое, значение которого может изменяться в пределах, задаваемых свойствами Min и Max. По умолчанию Min

= 0, Max = 100, так что Position может принимать значения - от 0 до 100. Если задать большее или меньшее значение Max, соответственно увеличится или уменьшится количество возможных значений Position в диапазоне Min - Max.Свойство Kind, определяет горизонтальное или вертикальное расположение полосы и принимает соответственно значения sbHorizontal или sbVertical.

Имеются два свойства - SmallChange и LargeChange, определяющих соответственно "малый" сдвиг при щелчке на кнопке в конце полосы или нажатии клавиши со стрелкой, и "большой" сдвиг при перемещении на страницу щелчком рядом с бегунком или нажатием клавиш PageUp или PageDown.

Событие, соответствующее перемещению пользователем бегунка полосы прокрутки - OnScroll. В процедуру обработчика этого события передается по ссылке параметр ScrollPos - позиция бегунка, которую можно читать, но можно и изменять, и передается параметр ScrollCode, характеризующий вид перемещения бегунка. Этот параметр может иметь значения:

scLineUp, scLineDown - "Малый" сдвиг: перемещение соответственно вверх или налево и вниз или вправо после нажатия кнопки полосы прокрутки или клавиши со стрелкой;

scPageUp, scPageDown - "Большой" сдвиг: перемещение на страницу щелчком рядом с бегунком или нажатием клавиш PageUp или PageDown;

scPosition - Пользователь переместил и освободил бегунок;

scTrack - Пользователь перемещает бегунок;

scTop, scBottom - Бегунок перемещен соответственно в крайнюю верхнюю или левую позицию и в крайнюю нижнюю или правую позицию;

scEndScroll - Окончание перемещения.

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

· TGroupBox - панель-контейнер с рамкой и надписью, объединяющий группу связанных органов управления.

· TPanel - управляющий элемент, похожий на TGroupBox, используется в декоративных целях. Чтобы использовать TPanel, просто поместите его на форму и затем положите другие компоненты на него. Теперь при перемещении TPanel будут передвигаться и эти компоненты. TPanel используется также для создания линейки инструментов и окна статуса.

· TScrollBox представляет место на форме, которое можно скроллировать в вертикальном и горизонтальном направлениях. Пока Вы в явном виде не отключите эту возможность (свойство AutoScroll), форма сама по себе действует так же. Однако, могут быть случаи, когда понадобится прокручивать только часть формы. В таких случаях используется TScrollBox.

Если Вам нужна дополнительная информация, то выберите на Палитре объект и нажмите клавишу F1 - появится Справочник с полным описанием данного объекта.

Задания на разработку:

1. Создайте приложение, которое при нажатии на кнопку TButton выводит дополнительное диалоговое окно с надписью 'Hello World!'.

2. Создайте приложение, в котором информация вводится в компонент класса TEdit и по нажатию на кнопку TButton передается в компонент класса TLabel.

3. Создайте приложение с главным меню (компонент класса TMainMenu). Для некоторых пунктов меню добавьте изображение. Для этого в компонент класса TImageList загрузите рисунки из C:\Program Files\Common Files\Borland Shared\Images\Buttons и свяжите их с компонентом TMainMenu. Результат сравните с примером, который находится в каталоге с лабораторной работой \Example1.

4. Создайте приложение, в котором с каждым компонентом (TMemo, TPanel, TListBox), размещенном на окне, связано контекстно-зависимое меню (TPopupMenu). Результат сравните с примером, который находится в каталоге \Example2.

5. Создайте приложение, в котором используется радиогруппа из TRadioButton и TPanel. При выборе каждого пункта радиогруппы, ее название должно заноситься компонент класса TMemo (Этот же пример проделайте с компонентом класса TRadioGroup). Результат сравните с примером, который находится в каталоге \Example3.

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

  1.  Что понимается в Object Pascal под объектом и классом?
  2.   Какой компонент называется визуальным?
  3.  Каково предназначение компонентов класса TMainMenu?
  4.  Когда в приложении используют компоненты класса TPopupMenu?
  5.  Перечислите и опишите Вами изученные компоненты, предназначенные для ввода информации.
  6.  Как осуществляется работа с выделенным текстов в компоненте класса TEdit?
  7.  Какие объекты создаются на основе типа TSrings, как с ними работать?
  8.  Сходство и отличие компонентов TComboBox и TListBox?
  9.  В каких целях используется компонент TScrollBar?
  10.  Перечислите и опишите Вами изученные компоненты – контейнеры.


 

А также другие работы, которые могут Вас заинтересовать

56294. Сценарій новорічного свята для початкових класів „Казкова феєрія” 108.5 KB
  В чудеса не вірять діти Бо відомо всім давно Що чудес ніде не стріти Крім казок і крім кіно. ВЕДУЧИЙ: Діти а кого немає на нашій ялинці Діда Мороза. Діти кличуть. Відгадайте діти мої загадки: Крешуть лід ріжуть лід залишають дивний слід.
56295. Батько і мати – два сонця гарячих (Сценарій виховного заходу) 86 KB
  Цей виховний захід повинен спрямувати молоде покоління на ствердження в їхній свідомості почуття власної гідності вірності рідній Батьківщині свободі і тверезості дій у думках і вчинках.
56296. Сценарій вечора «Муза кохання» 129.5 KB
  Мета: познайомити учнів з історіями кохання видатних особистостей, зі зразками інтимної лірики; прищеплювати інтерес до поезії, розвивати любов до мистецтва слова; показати учням красу та складність людських почуттів;
56297. Сценарій новорічного свята для учнів 3-5 класів «У гостях у цариці Природи» 57 KB
  Мета: Виховувати любов та ціннісне ставлення до природи. Розвивати інтерес до поезії. Тренувати навички декламування та інсценізації. Залучати дітей до колективної творчої праці. Формувати естетичні уподобання.
56298. МЕТОДОЛОГІЧНЕ ЗАБЕЗПЕЧЕННЯ ПРОЦЕСУ НАУКОВОГО ДОСЛІДЖЕННЯ 15.92 KB
  Поняття «методика» - це сукупність прийомів, способів дослідження, порядок їх застосування та інтерпретації отриманих за їх допомогою результатів. Основними компонентами методики є: теоретична частина; досліджувані явища (предмети), субординація і координація звязку між ними; сукупність методів; порядок їх застосування; порядок і техніка узагальнення результатів дослідження.
56299. Сценарии праздников в начальной школе 336.5 KB
  Всем красавицам желаю доброго вечера А что ж ты меня Оксанка дома не встретила Я уж возле твоей хаты час целый ошиваюсь А ты как ни в чем не бывало с подружками гуляешь. Оксана Ойли велика беда А может я забыла О чем с тобой Вакула вчера говорила.
56300. Чотири пори року. Виховний захід 103 KB
  Святково прикрашений зал Заходять ведучі Вед 1 :Добрий день шановні гості. Сьогодні ми зібралися щоб згадати добрим словом рік який минає Вед 2: Згадати і подякувати кожній порі року за їх дарунки природі і людям Вед 1: А ще згадати як веселився і зустрічав весну літо осінь і зиму український народ багато років тому.
56301. Сценарій свята «День усіх закоханих» або «День святого Валентина» 936 KB
  Але у в’язниці між єпископом та дочкою тюремного наглядача зародилося кохання. І до останнього дня єпископ посилав дівчині невеличкі сердечка з написами палкого кохання та з підписом Твій Валентин...
56302. «Найрозумніший» Сценарій гри з географії для учнів восьмих класів 176 KB
  Роман Кош 1545м Найбільший кам’яновугільний басейн України. Донецький Корисні копалини на які багате Калуське родовище калійні солі Океан що має найбільший вплив на клімат України. Атлантичний Частина України на якій випадає найменше опадів.