
- •Часть 2
- •Оглавление
- •1. Структурный подход к программированию
- •1.1. Цели структурного программирования
- •1.2. Основные принципы структурного подхода
- •1.3. Спецификация программ
- •1.4. Метод пошаговой детализации
- •2. Предыстория объектно-ориентированного программирования
- •2.1. Введение в объектно-ориентированное программирование
- •2.2. Тип Объекты
- •2.3. Основные понятия ооп. Инкапсуляция. Наследование
- •X, y : integer; {координаты позиции}
- •XX,yy:array [1..1000] of integer;
- •2.4. Совместимость объектных типов по присваиванию
- •2.5. Описание типа-потомка
- •2.6. Полиморфизм
- •2.7. Виртуальные методы. Конструкторы и деструкторы
- •2.7.1. Правила работы с виртуальными методами
- •3. Типы данных и операторы языка object pascal в delphi
- •3.1. Предопределенные типы данных
- •3.1.1 Вещественные типы
- •3.1.2. Длинные строки
- •3.2. Структурированные типы
- •3.2.1. Множества
- •Var MySet: set of 'a'..'z';
- •3.2.2. Массивы
- •Var FlexArray: array of Real;
- •Var Ints: array of array of Integer;
- •3.2.3. Записи
- •Var Record1,Record2:tDateRec;
- •3.2.4. Указатели
- •I: Integer;
- •V1,v2,v3,v4,v5:Variant;
- •I:Integer;
- •3.3. Типы данных, специфичные для Windows
- •3.3.1. Приведение и преобразование типов
- •3.4. Операторы языка Паскаль
- •I:Integer;
- •I:Integer;
- •3.4.1. Элементы управления редактированием
- •3.5. Процедуры и функции библиотеки vcl
- •4. Реализация ооп на языке pascal
- •V: Real;
- •Наследование
- •Virtual;
- •Конструкторы и деструкторы
- •Перекрытие методов
- •5. Программирование в среде delphi
- •5.1. Основные элементы
- •5.2. Реализация объектно-ориентированного программирования
- •5.3. Разработка интерфейса приложения
- •5.3.1. Создание простейшего Windows-приложения
- •5.3.2. Создание Windows-приложения с метками и кнопками
- •Объект Свойство Значение
- •6.1.3. Меню Edit
- •6.1.4. Меню Search
- •6.1.5. Меню View
- •6.1.6. Меню Run
- •6.1.7. Меню Component
- •6.1.8. Меню Tools
- •6.1.9. Полоска кнопок быстрого доступа SpeedBar
- •6.1.10. Локальные меню. SpeedMenu
- •6.2. Работа с формами
- •6.2.1. Палитра компонентов
- •6.2.2. Object Inspector
- •6.2.3. Написание кода
- •6.2.4. Компиляция проекта
- •6.2.5. Интегрированный отладчик
- •6.2.6. Файлы, создаваемые системой
- •7. Структура delphi-программ
- •7.1. Разработка проекта Dialog
- •7.2. Процедуры вызова диалоговых окон
- •7.3. Преобразования типов
- •Var factW,optW,Rost,Delta:integer;
- •Var factW,optW,Rost,Delta:real;
- •7.4. Простейшие компоненты
- •7.4.1. Группы радиокнопок - компоненты RadioGroup, RadioButton, GroupBox
- •7.4.2. Компоненты выбора из списков - ListBox, ComboBox
- •7.4.3. Многострочные окна редактирования Memo и Richedi
- •7.4.4. Графические объекты
- •If OpenDialog1.Execute
- •Image1.Picture.LoadFromFile
- •7.4.5. Канва и пиксели
- •X, y :real; // координаты функции
- •7.4.6. Воспроизведение немых видео клипов – компонент Animate
- •7.4.7. Установка и настройка приложения: работа с файлами *.Ini
- •IniFile.Free;
- •Упражнения
- •8. Репозиторий объектов и эксперты
- •8.1. Страницы репозитория объектов
- •8.1.1. Страница New
- •8.1.2. Страница Forms
- •8.1.3. Страница Dialogs
- •8.1.4. Страница Data Modules
- •8.1.5. Страница Projects
- •8.2. Эксперты Delphi
- •8.2.1. Application Expert
- •8.2.2. Dialog Box Expert
- •9. Классы и модули
- •9.1. Классы и сокрытие информации
- •9.2. Классы и модули
- •9.3. Модули и область видимости
- •9.4. Модули и программы
- •9.5. Информация о типе на этапе выполнения
- •If MyAnimal is Dog then …
- •If MyAnimal is Dog
- •If MyAnimal is Dog then
- •10. Использование компонентов
- •10.1. Буксировка из одного компонента в другой
- •10.2. Обработка исключений
- •10.3. Восприятие ввода для пользователя
- •Val( Edit1.Text,Number,Code);
- •Val((Sender as tEdit).Text,Number,Code);
- •11.2. Различные роли элементов меню
- •11.3. Редактирование меню с помощью Menu Designer
- •If OpenDialog1.Execute
- •If SaveDialog1.Execute
- •Procedure tForm1.ViewEdit1Click(Sender:tObject); begin
- •If Panel1.Visible
- •If Buttons1.Enabled
- •12. Получение «ввода от мыши» и рисование в форме
- •12.1. События, связанные с мышью
- •12.2. Рисование в форме
- •If ssShift in Shift
- •If Circle then Canvas.Ellipse(Center.X-Radius.X,Center.Y-
- •Else Canvas.Rectangle(Center.X-Radius.X,Center.Y-
- •12.3. Черчение и рисование в системе Windows
- •13. Инструментальная линейка и строка состояния
- •13.1. Построение инструментальной линейки
- •Procedure tForm1.SpeedButton1Click(Sender:tObject); begin
- •If SpeedButton1.Down
- •13.2. Добавление всплывающих подсказок в линейку
- •13.3. Комбинированный список в инструментальной линейке
- •13.4. Построение строки состояния
- •14.1. Добавление второй формы в программу
- •14.2. Создание диалоговой панели
- •Задание № 1
- •Procedure tForn1.BitBtnClick(Sender:tObject); begin PageControl1.SelectNextPage(true);
- •Do ListBox1.Items.Add(PageControl1.Page[I].Caption);
- •14.3.1. Блокнот с набором ярлыков
- •If FontDialog1.Execute
- •15.2. Жизненный цикл программного средства
- •15.3. Понятие качества программного средства
- •15.4. Обеспечение надежности основной мотив разработки программных средств
- •15.4.1. Методы борьбы со сложностью
- •15.4.2. Обеспечение точности перевода
- •15.4.3. Преодоление барьера между пользователем и разработчиком
- •15.4.4. Контроль принимаемых решений
- •Литература
- •Часть 2. Объектно-ориентированное программирование
14.1. Добавление второй формы в программу
Для добавления второй формы можно нажать кнопку New Form или, используя команду File -New, переместиться на страницу Forms или Dialogs и выбрать один из доступных шаблонов формы. Если у вас в проекте две формы, используйте кнопку Select Form или Select Unit инструментальной линейки, чтобы управлять формами. Вы также можете выбрать, какая форма является основной и какие формы нужно создать автоматически при запуске, используя страницу Forms диалоговой панели Project Options. Чтобы компилировать код первой формы, надо включить модуль, содержащий вторую форму (Unit2), с помощью оператора uses в список модулей в начале кода. Или можно выбрать первую форму и выполнить команду File - Use Unit. Чтобы закрыть вторую форму, вы можете использовать ее системное меню или нажать кнопку Close, помещенную в форму. При этом Delphi не закрывает вторую форму, а лишь скрывает ее, поэтому всегда есть возможность вывести на экран вторую форму.
14.2. Создание диалоговой панели
Чтобы построить диалоговую панель вместо формы, выберите значение bsDialog для свойства BorderStyle формы. После этого форму можно вывести на экран как модальное или немодальное окно, используя Show или ShowModal. Модальные диалоговые панели распространены больше, чем немодальные. Модальных форм следует избегать, так как пользователь не захочет иметь с ними дело. Вот один из подходов использования диалоговой панели:
устанавливать начальные значения, каждый раз когда вы исполняете диалоговую панель;
показывать диалоговую панель;
если была нажата кнопка OK, скопировать новые значения обратно в форму.
Задание № 1
Подготовить две формы, в каждую из которых поместить по кнопке. В первой форме кнопка используется, чтобы показать второе окно, во второй форме – чтобы себя закрыть. Чтобы выполнить вторую форму, запишите код:
procedure TForm1.Button1Click(Sender:TObject);
begin
Form2.Show;
end;
Создать форму, которая имеет две кнопки, используемые для создания модальной и немодальной форм. Как только вы создаете две новые формы ModalForm и ModalessForm, можно написать следующий метод, соответствующий событию OnClick одной из двух кнопок:
procedure TForm1.ModalButtonClick(Sender:TObject);
var
Modal:TModalForm;
begin
Modal:=TModalForm.Create Application);
Modal.ShowModal;
Modal.Free;
end;
Код для другой кнопки аналогичен, с той лишь разницей, что используется функция Show. Запишите его самостоятельно.
В форму поместить две надписи и кнопку. При нажатии кнопки должна появляться диалоговая панель с двумя растровыми кнопками 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;
14.3. Построение блокнотов
Компоненты PageControl, TabControl (TabSet) и TabSheet применяют для обработки страниц и ярлыков. TabSheet используется внутри компонента PageControl. Компонент TabControl (TabSet) используется для построения автономных ярлычков (не связанных со страницами). С помощью компонента PageControl можно построить приложение или диалоговую панель, используя понятие многостраничности или блокнота. Для добавления новых страниц (табличных листов) используется локальное меню компонента PageControl. Каждый объект TabSheet имеет собственный заголовок, который выводится на экран как ярлычок. Переключение между страницами на этапе проектирования можно производить с помощью локального меню компонента PageControl или щелчком на ярлычке. Если вы поместите компонет на странице блокнота, то он будет доступен только на этой странице. Чтобы применить один компонент для всех страниц, его необходимо поместить в форму вне компонента PageControl (или до выравнивания его с областью клиента) и затем переместить его на передний план, вызвав команду Bring to Front из локального меню формы. Допустим, что мы поместили в форму две кнопки, которые позволяют передвигаться по страницам: Next, Previous, которые представляют альтернативу использования ярлычков. Код, связанный с одной из кнопок: