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

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



НазваниеЛабораторная работа 08
Дата конвертации30.06.2012
Размер62.72 Kb.
ТипЛабораторная работа
1. /OOP/Лабораторная работа ь00-Введение.doc
2. /OOP/Лабораторная работа ь01-Calc&Type.doc
3. /OOP/Лабораторная работа ь02-Drag&Except.doc
4. /OOP/Лабораторная работа ь03-Font&Phrase.doc
5. /OOP/Лабораторная работа ь04-Menu.doc
6. /OOP/Лабораторная работа ь05-Canvas.doc
7. /OOP/Лабораторная работа ь06-Animation.doc
8. /OOP/Лабораторная работа ь07-Hint&Format.doc
9. /OOP/Лабораторная работа ь08-Notepad&BMP.doc
10. /OOP/Лабораторная работа ь09-StringGrid.doc
11. /OOP/Лабораторная работа ь10-MediaPlayer.doc
12. /OOP/Лабораторная работа ь11-Shape.doc
13. /OOP/Лабораторная работа ь12-Events.doc
14. /OOP/Лабораторная работа ь13-Finally&Except.doc
15. /OOP/Лабораторная работа ь14-Animal.doc
16. /OOP/Лабораторная работа ь15-MyButton.doc
17. /OOP/Темы курсовых работ по курсу ООП.doc
Введение
Лабораторная работа №01
Лабораторная работа №02
Лабораторная работа №03
Лабораторная работа №04
Лабораторная работа №05
Лабораторная работа №06
Лабораторная работа №07
Лабораторная работа 08
Лабораторная работа №09
Лабораторная работа №10
Свойства в Delphi
Лабораторная работа №12 События в Delphi
Chapter 12
Лабораторная работа №14
Лабораторная работа №15
Кнопка (TButton)

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

Приложение с несколькими формами. Многостраничные формы.


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

Диалоговые панели в Delphi основаны на формах. С диалоговой панелью пользователь обычно связывает понятие модального окна. Модальное окно – это такое окно, которое получает фокус и должно быть закрыто прежде, чем пользователь может перейти обратно к основному окну. Это верно для панелей сообщения и диалоговых панелей. В системе Delphi можно также иметь немодальные диалоговые панели и модальные формы. Мы должны учитывать два момента:

  1. рамки формы и пользовательский интерфейс определяют, выглядит ли эта форма как диалоговая панель

  2. использование двух функций – Show и ShowModal для вывода на экран второй формы определяет поведение последней (немодальная или модальная).

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

Добавление второй формы в программу


Для добавления второй формы можно нажать кнопку New Form или использовать команду File/New, переместиться на страницу Forms или Dialogs и выбрать один из доступных шаблонов формы. Если у вас в проекте две формы, используйте кнопку Select Form или Select Unit инструментальной линейки, чтобы управлять формами. Вы также можете выбрать, какая форма является основной и какие формы нужно создать автоматически при запуске, используя страницу Forms диалоговой панели Project Options. Чтобы компилировать код первой формы, надо включить модуль, содержащий вторую форму (Unit2), с помощью оператора uses в список модулей в начале кода. Или можно выбрать первую форму и выполнить команду File/Use Unit. Чтобы закрыть вторую форму, вы можете использовать ее системное меню или нажать кнопку Close, помещенную в форму. При этом Delphi не закрывает вторую форму, а лишь скрывает ее, поэтому всегда есть возможность вывести на экран вторую форму.

Создание диалоговой панели


Чтобы построить диалоговую панель вместо формы, выберите значение bsDialog для свойства BorderStyle формы. После этого форму можно вывести на экран как модальное или немодальное окно, используя Show или ShowModal. Модальные диалоговые панели распространены больше, чем немодальные. Модальных форм следует избегать, т.к. пользователь не захочет иметь с ними дело. Вот один из подходов использования диалоговой панели :

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

  2. Показывать диалоговую панель.

  3. Если была нажата кнопка OK, скопировать новые значения обратно в форму.

Задание № 1


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


procedure TForm1. Button1Click (Sender : TObject);

begin

Form2.Show;

end;


  1. Создадим форму, которая имеет две кнопки, используемые для создания модальной и немодальной форм. Как только вы создаете две новые формы ModalForm и ModalessForm, можно написать следующий метод, соответствующий событию OnClick одной из двух кнопок:


procedure TForm1. ModalButtonClick (Sender : TObject);

var

Modal : TModalForm;

begin

Modal := TModalForm. Create (Application) ;

Modal. ShowModal ;

Modal. Free ;

end;


Код для другой кнопки аналогичен, с той лишь разницей, что используется функция Show. Запишите его самостоятельно.


  1. В форму поместить две надписи и кнопку. При нажатии кнопки должна появляться диалоговая панель с двумя растровыми кнопками OK , Cancel и два чекбокса, которые позволяют показывать и скрывать надписи формы. Записать следующий код :


procedure TForm1. Button1Click (Sender : TObject) ;

var

old1, old2 : Boolean ;

begin

old1 := Form2. CheckBox1.Checked ;

old2 := Form2. CheckBox2.Checked ;

if ( Form2. ShowModal = mrOk ) then

begin

Label1. Visible := Form2. CheckBox1.Checked ;

Label2. Visible := Form2. CheckBox2.Checked ;

end

else

begin

Form2. CheckBox1.Checked := old1 ;

Form2. CheckBox2.Checked := old2 ;

end;

end;

Построение блокнотов


Компоненты PageControl, TabControl (TabSet) и TabSheet используются для обработки страниц и ярлычков. TabSheet используется внутри компонента PageControl. Компонент TabControl (TabSet) используется для построения автономных ярлычков (не связанных со страницами). С помощью компонента PageControl можно построить приложение или диалоговую панель, используя понятие многостраничности или блокнота. Для добавления новых страниц (табличных листов) используется локальное меню компонента PageControl. Каждый объект TabSheet имеет собственный заголовок, который выводится на экран как ярлычок. Переключение между страницами на этапе проектирования можно производить с помощью локального меню компонента PageControl или щелчком на ярлычке. Если вы поместите компонет на странице блокнота, то он будет доступен только на этой странице. Чтобы использовать один компонент для всех страниц, его необходимо поместить в форму вне компонента PageControl (или до выравнивания его с областью клиента) и затем переместить его на передний план, вызвав команду Bring to Front из локального меню формы. Допустим мы поместили в форму две кнопки, которые позволяют передвигаться по страницам : Next, Previous – которые представляют альтернативу использования ярлычков. Код, связанный с одной из кнопок :


procedure TForn1. BitBtnClick (Sender :TObject) ;

begin

PageControl1. SelectNextPage (true) ;

end ;


Другая кнопка вызывает ту же процедуру, передавая значение false в качестве параметра для выбора предыдущей страницы. Свойство SelectNextPage рассматривает последнюю страницу как единственную перед первой и перемещение происходит непосредственно между этими страницами. Существует третий метод, доступный для изменения страниц (после ярлычков и кнопок). Компонент список (ListBox) заполняется с помощью метода FormCreate путем копирования заголовка каждой страницы (свойство Page хранит список объектов TabSheet).


for I := 0 to PageControl1. PageCount –1 do

ListBox1. Items. Add ( PageControl1. Page [ I ]. Caption ;

Блокнот с набором ярлычков


Стандартный подход к построению блокнота с ярлычками в Delphi 1 использует два раздельных компонента NoteBook и TabSet. На этапе проектирования можно работать на страницах блокнота, изменяя значение его свойства PageIndex ; вы не можете щелкать на ярлысках, как с компонентами PageControl. Как только вы вводите новое значение для свойства PageIndex или ActivePage в Object Inspector, соответственно изменяется видимая страница блокнота. Можно также выбрать локальное меню блокнота, в котором имеются команды для перемещения к следующей и предыдущей странице.

Альтернативой использования PageControl, TabSet и NoteBook является использование компонента TabbedNoteBook.

Задание № 2


  1. Поместите в форму компонент NoteBook, а затем компонент TabSet и выровняйте последний с нижней частью формы (alButtom), а компонент NoteBook с клиентской областью (alClient). Присвойте названия страницам блокнота, выбирая свойство Pages и вводя некоторые значения в соответствующем редакторе. Подготовить ярлычки с помощью ввода некоторых строк для свойства Tabs.

  2. Чтобы соединить блокнот с множеством ярлычков нужно записать код для события OnChange компонента TabSet.


procedure TForm1. TabSet1Change (

Sender : TObject ; NewTab : Integer ; var AllowChange : Boolean ) ;

begin

NoteBook1. PageIndex := NewTab;

end ;


Вы можете активизировать страницу, используя также их названия (свойство ActivePage блокнота) вместо индекса (свойство PageIndex). Это работает, если только названия страниц совпадают с названиями ярлычков.


NoteBook1. ActivePage := TabSet1. Tabs [ NewTab ] ;

Задание № 3


  1. Поместите компонент TabbedNoteBook в форму. Создайте три страницы. Поместите кнопку Close, которая должна присутствовать на всех страницах.

  2. На первой странице блокнота поместите список (ListBox) с названиями страниц. Чтобы изменить страницы в блокноте с помощью ListBox написать следующий код :


procedure TForm1. ListBox1Click (Sender : TObject) ;

begin

TabbedNoteBook1.PageIndex := ListBox1. ItemIndex ;

end ;


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


if FontDialog1. Execute then TabbedNoteBook1. TabFont := FontDialog1. Font ;

Задание № 4


  1. В форму поместим компонент DriveComboBox и DirectoryListBox. На правой стороне формы поместить компонет Image и под ним TabSet.

  2. Когда пользователь выбирает новый каталог, ярлычки должны сразу вывести на экран имена файлов с растровыми изображениями в ярлычки каждый раз, когда изменяется выбор в списке каталога. Для этого поместите компонент FileListBox в форму и поместите его позади других компонентов или присвойте его свойству Visible значение False. Затем измените свойство Mask списка файлов на *.bmp. Для того чтобы связать компонент DirectoryListBox с компонентом FileListBox запишите в окне Object Inspectorдля свойства DirectoryListBox следующее имя компонента: FileListBox1. Теперь добавьте метод для обработки события OnChange списка каталога :

procedure TForm1. DirectoryListBox1Change (Sender : TObject) ;

begin

with FileListBox1 do

if Item. Count = 0 then

begin

TabSet1. Tabs. Clear ;

Image1. Visible := False ;

TabSet!. Tabs. Add ( ‘None’ ) ;

end

else

begin

Image1. Visible := True ;

TabSet1. Tabs := FileListBox1. Items ;

end;

end;

  1. Когда ярлычки выводят на экран имена файлов используется следующий код :


procedure TForm1.TabSet1Change (

Sender : TObject; NewTab : Integer ; var AllowChange : Boolean);

begin

if TabSet1. Tabs [NewTab] <> ‘None’ then TabSet1.Tabs [NewTab];

end;


  1. Напишите код для загрузки выбранного изображения в TImage.

  2. Сделайте возможным подгонку размера изображения под размер TImage.




Похожие:

Лабораторная работа 08 iconЛабораторная работа: создание мини-презентации «Памятники Кремля»
Лабораторная работа проводится в компьютерном классе, с подключением к сети Internet
Лабораторная работа 08 iconДокументы
1. /Lab1/Лабораторная работа 1.doc
2. /Lab2/Лабораторная...

Лабораторная работа 08 iconИ я забуду Покажи мне и я запомню, Дай мне действовать самому и я научусь. Китайская мудрость Тема: Лабораторная работа
Тема: «Лабораторная работа «Измерение работы и мощности тока в электрической лампочке»
Лабораторная работа 08 iconДокументы
1. /Nash/lab1/Лабораторная работа ь1.doc
2. /Nash/lab10/Лабораторная...

Лабораторная работа 08 iconЛабораторная работа №2 «Система безопасности Windows xp»
Лабораторная работа №2 «Система безопасности Windows xp» Цель работы: Изучить систему безопасности Windows xp
Лабораторная работа 08 iconЛабораторная работа «Работа в Windows c помощью основного меню. Использование технологии ole»
Запишите размер папки, выраженный в Мб (мегабайтах) в текстовый редактор блокнот
Лабораторная работа 08 iconЛабораторная работа «Работа с текстовыми фрагментами без помощи мыши»
Скопируйте последнее слово получившегося текста и вставьте его в начало текста один раз
Лабораторная работа 08 iconДокументы
1. /Базовые задачи на обработку массива.doc
2. /ЗадачиНаЛиниВетвление.doc
Лабораторная работа 08 iconДокументы
1. /laba/Лабораторная работа ь1.doc
2. /laba/Лабораторная...

Лабораторная работа 08 iconДокументы
1. /механизация/~$б работа ь4.doc
2. /механизация/~$бораторная...

Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©podelise.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы

Разработка сайта — Веб студия Адаманов