Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 1.doc
Скачиваний:
33
Добавлен:
13.02.2015
Размер:
689.66 Кб
Скачать

Программа работы

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

  2. Создайте новый проект и сохраните все его файлы в папке с именем ‘…\Лабораторная работа № 2’.

  3. Перенесите на пустую форму компоненты Label, Button и Edit и разместите их так как показано на рис. Обратите внимание, что Delphi присваивает имена по умолчанию, которые можно увидеть в верхнем окне инспектора объектов.

Рис.2.2. Форма в процессе создания приложения

  1. Выделите на форме компонент Button1 – кнопку. Перейдите в инспектор объектов и измените ее свойство Caption на Пуск.

  2. Аналогичным образом, у компонента Edit1 удалите содержимое свойства Text, а у компонента Label1 содержимое свойства Caption.

  3. Выделите компонент Button1 на форме, перейдите в инспектор объектов, откройте в нем страницу событий, найдите событие кнопки OnClick и сделайте двойной щелчок по окну справа от имени этого события. Вы окажетесь в редакторе текста программы и увидите там текст:

procedure TForm1.Button1Click(Sender: TObject);

begin

end;

  1. Составьте программу, которая выводила бы надпись на метку Label1, получая ее из содержимого окна Edit1. И запишите обработчик нажатия кнопки.

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

  3. Создайте новый проект и сохраните все его файлы в папке с именем ‘…/Лабораторная работа № 2’.

  4. Перенесите на пустую форму компоненты Label, Button и Edit и разместите их так как показано на рис. 2.2. а). В обработчике кнопки Button1 запишите программу находящую действительные корни квадратного уравнения, если коэффициенты вводятся в окна редактирования Edit1, Edit2, Edit3, а корни уравнения выводятся в Edit4, Edit5.

  5. Модифицируйте обработчик таким образом, чтобы программа находила и комплексные корни.

  6. Запишите в тетрадь обработчик нажатия кнопки Button1.

а)

б)

Рис. 2.2. Расположение компонентов на форме а) в процессе разработки,

б) во время работы программы

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

  1. Объясните, как перенести компонент с палитры компонентов на форму.

  2. Охарактеризуйте компонент Label и опишите основные его свойства.

  3. Охарактеризуйте компонент Edit и опишите основные его свойства.

  4. Охарактеризуйте компонент Button и опишите основные его свойства.

  5. В каком случае возникает событие OnClick.

  6. Запишите название процедуры – обработчика нажатия на кнопку Button1.

  7. Перечислите функции преобразования числовых значений в строковые.

  8. Перечислите функции преобразования строковых данных в числовые.

  9. Чем отличаются компоненты Label и Edit.

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

ДИАЛОГОВЫЕ КОМПОНЕНТЫ СРЕДЫ C++ BUILDER

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

Теоретические сведения

Одним из окон редактирования многострочного текста является компонент Memo . В этом компоненте формат (шрифт, его атрибуты, выравнивание) одинаков для всего текста и определяется свойством Font. Свойство Align отвечает за выравнивание компонента по всей верхней, левой, правой, нижней и всей клиентской области. Для этого необходимо значение свойства установить соответственно в alTop, alLeft, alRight, alBottom или alClient. Свойство ScrollBars определяет наличие полос прокрутки в тексте. По умолчанию ScrollBars=ssNone, что означает их отсутствие. В этом случае пользователь может перемещаться по тексту только с помощью курсора. Этому свойству можно задать следующие значения ssHorisontal(горизонтальная полоса прокрутки), ssVertical(вертикальная полоса прокрутки) или ssBoth(обе полосы).

Основным свойством является Lines содержащее текст окна в виде списка строк и имеющее тип TStrings. Начальное значение текста можно установить в процессе проектирования, нажав на кнопку с многоточием около свойства Lines в окне инспектора объектов. Откроется окно редактирования списков строк, где можно вводить и редактировать текст.

Рассмотрим некоторые свойства компонента Memo для работы с текстом. CopyToClipboard – копирование выделенного фрагмента в буфер. CutToClipboard – перемещение выделенного фрагмента в буфер. PasteFromClipboard – вставка содержимого буфера. ClearSelection – удаление выделенного фрагмента. SelectAll – выделение всего текста. Свойство CanUndo – позволяет узнать, были ли изменения текста и можно ли их отменить, свойство только для чтения и имеет логический тип. Если это свойство вернуло положительный результат (CanUndo=true) тогда можно воспользоваться функцией Undo, чтобы отменить последнее действие.

Свойство Lines в свою очередь тоже имеет набор свойств, вот некоторые из них: LoadFromFile и SaveToFile – соответственно загрузка и сохранение содержимого окна Memo, Add – занесение новой строки в конец текста, Clear - для очистки текста в окне.

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

Основное свойство компонента – Items. Его заполнение происходит с помощью дизайнера меню, вызываемого двойным щелчком на компоненте MainMenu или нажатием кнопки с многоточием рядом со свойством Items в окне инспектора объектов. В результате откроется окно, в котором можно спроектировать все меню.

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

При выборе нового раздела вы увидите в инспекторе объектов множество свойств данного раздела, так как каждый элемент свойства Items, является объектом типа TMenuItems, обладающим своими свойствами, методами и событиями.

Свойство Caption обозначает надпись раздела. Для создания клавиш быстрого доступа к пунктам меню используется знак амперсанда – "&" следующим образом: если перед одним из символов надписи поместить символ "&", то символ, перед которым стоит знак амперсанда, отображается в надписи подчеркнутым (например: &ПУСК=ПУСК). Теперь к этому пункту можно получить доступ, нажав комбинацию Alt+<подчеркнутая буква>. Если в качестве значения Caption очередного раздела ввести символ минус "-", то вместо раздела в меню появится разделитель.

Свойство Name задает имя объекта, соответствующего раздела меню. Очень полезно давать этим объектам осмысленные имена, так как иначе вы скоро запутаетесь в ничего не говорящих именах типа N21. Куда понятнее имена MFile, MOpen и т.п.

Свойство ShortCut определяет клавиши быстрого доступа к разделу меню – "горячие клавиши", для определения такой клавиши надо открыть выпадающий список этого свойства и выбрать необходимую комбинацию.

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

WordWrap.Checked:= not WordWrap.Checked;

Для каждого из разделов могут быть установлены (во время проектирования или программно) свойства Enabled (доступен) и Visible (видимый). Если установить Enable = false, то раздел будет отображаться серой надписью и не будет реагировать на щелчок пользователя. Если же задать Visible = false, то раздел вообще не будет виден, а остальные разделы сомкнутся, заняв место невидимого. Эти свойства используются для того, чтобы изменять состав доступных пользователю разделов в зависимости от режима работы приложения.

Начиная с Delphi 4 предусмотрена возможность ввода в разделы меню изображений. За это ответственны свойства разделов BitMap и ImageIndex. Первое из них позволяет непосредственно ввести изображение в раздел, выбрав его из указанного вами файла. Второе позволяет указать индекс изображения, хранящегося во внешнем компоненте ImageList. Указание на этот компонент вы можете задать в свойстве Images компонента MainMenu. Индексы начинаются с 0. Если вы укажете индекс -1 (значение по умолчанию), изображения не будет.

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

Компонент ImageList (страница Win32) представляет собой набор изображений, на которые можно ссылаться по индексам, начинающимся с 0. Изображения могут быть загружены в процессе проектирования с помощью редактора списков изображений, он вызывается двойным щелчком на компоненте или выбором в контекстном меню команды Редактор ImageList….

В окне редактора вы можете добавить в список изображение, пользуясь кнопкой Add…, удалить изображение из списка кнопкой Delete, очистить весь список кнопкой Clear.

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

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

Разработчики ИСР Delphi позаботились о том, чтобы включить в библиотеку простые для использования компоненты, реализующие соответствующие диалоговые окна. Они размещены на странице Dialogs (см. рис 3.1.).

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

Рис 3.1. Палитра Dialogs

Основной метод, которым производится обращение к любому диалогу, - Execute. Эта функция открывает диалоговое окно, и если пользователь произвел в нем какой-то выбор, то функция возвращает true. При этом в свойствах компонента – диалога запоминается выбор пользователя, который можно прочитать и использовать в дальнейшем. Если же пользователь в диалоге нажал кнопку Отмена или клавишу Esc, то функция возвращает false. Поэтому стандартное обращение к диалогу имеет вид:

if <имя компонента-диалога>.Execute

then <операторы, использующие выбор пользователя>;

Компоненты OpenDialog - диалог "Открыть файл" и SaveDialog- диалог "Открыть файл как…", пожалуй используются чаще всего, в большинстве приложений. Все свойства этих компонентов одинаковы, только их смысл несколько различен для открытия и закрытия файлов. Основное свойство, в котором возвращается в виде строки выбранный пользователем файл, - FileName. Значение этого свойства можно задать и перед обращением к диалогу. Тогда оно появится в диалоге как значение по умолчанию в окне Имя файла.

Типы искомых файлов, появляющиеся в диалоге в выпадающем списке Тип файла, задаются свойством Filter. В процессе проектирования это свойство проще всего задать с помощью редактора фильтров, который вызывается нажатием кнопки с многоточием около имени этого свойства, в инспекторе объектов. При этом открывается окно редактора. В его левой части Имя фильтра вы записываете тот текст который увидит пользователь в выпадающем списке Тип файла диалога. А в правой части Фильтр записываются разделенные точками с запятой шаблоны фильтра. Например, для вывода только текстовых файлов используется шаблон *.txt, а для вывода всех типов файлов - *.*.

Свойство FilterIndex определяет номер фильтра, который будет по умолчанию показан пользователю в момент открытия диалога (начинается с 1). Свойство DefaultExt определяет значение расширения файла по умолчанию. Если значение не задано, то пользователю необходимо задавать полное имя файла с расширением. Title – задает заголовок диалогового окна.

Приведем пример обработчика открытия файла и загрузки его в окно Memo1:

if OpenDialog1.Execute

then Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

Обработчик команды "Сохранить как…" выглядит аналогично.

Компонент FontDialog вызывает диалоговое окно выбора атрибутов шрифта, в нем вы можете выбрать имя шрифта, его стиль (начертание), размер и другие атрибуты.

Основное свойство компонента Font типа TFont, в котором вы можете задать начальные установки атрибутов шрифта и в котором можно прочесть значения атрибутов, выбранные пользователем в процессе диалога. Примером использования данного компонента, может служить следующий обработчик – в котором пользователь может выбрать атрибуты шрифта окна Memo:

if FontDialog1.Execute

then Memo1.Font:=FontDialog1.Font;