- •Часть 2
- •Оглавление
- •1. Структурный подход к программированию
- •1.1. Цели структурного программирования
- •1.2. Основные принципы структурного подхода
- •1.3. Спецификация программ
- •1.4. Метод пошаговой детализации
- •2. Предыстория объектно-ориентированного программирования
- •2.2. Тип Объекты
- •2.3. Основные понятия ооп. Инкапсуляция. Наследование
- •2.1. Введение в объектно-ориентированное программирование
- •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
- •9.1. Классы и сокрытие информации
- •8.2. Эксперты Delphi
- •8.2.1. Application Expert
- •8.2.2. Dialog Box Expert
- •9. Классы и модули
- •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. Объектно-ориентированное программирование
If OpenDialog1.Execute
then RichEdit1.Lines.LoadFromFile
OpenDialog1.FileName);
end;
procedure TForm1.SaveAs1Click(Sender:TObject);
begin
If SaveDialog1.Execute
then ichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
end;
Компоненты внутри панелей в действительности не используются. Однако вам необходимо воспользоваться двумя кнопками, чтобы скрыть или отобразить каждую из двух панелей вместе с управляющими элементами, которые в них содержатся. Те же действия можно выполнить с помощью двух команд меню: View - Edit Boxes и View - Check Boxes. Когда вы выбираете одну из этих команд меню или нажимаете одну из кнопок, происходит три разных действия. Во-первых, отображается или скрывается панель. Во-вторых, текст кнопки изменяется с Hide на Show и наоборот. В-третьих, рядом с соответствующим элементом меню появляется или исчезает галочка. Ниже приведен код одного из двух методов, который связан с событиями щелчка как команды меню, так и кнопки:
Procedure tForm1.ViewEdit1Click(Sender:tObject); begin
Panel1.Visible:= not Panel1.Visible;
ViewEdit1.Checked:= not ViewEdit1.Checked;
If Panel1.Visible
then Button1.Caption:=‘Hide’;
else Button1.Caption:= ‘Show’;
end;
Команды меню Buttons применяют другой подход. Для показа текущего состояния они используют не галочку, а изменение текста. Кроме того, они разрешают или запрещают соответствующую команду View и кнопку:
procedure TForm1.ButtonsFirst1Click(Sender:TObject);
begin
If Buttons1.Enabled
then begin
Buttons1.Enabled:= False;
ViewEdit1.Enabled:= False;
ButtonsFirst1.Caption:= ‘Enable &First’;
end
else begin
Buttons1.Enabled:= True;
ViewEdit1.Enabled:= True;
ButtonsFirst1.Caption:= ‘Disable &First’;
End;
end;
Команды меню Pulldowns должны скрывать выпадающее меню указанное в элементах, и показывать галочку для выбранного элемента. Запишите код для каждого элемента этого меню самостоятельно.
12. Получение «ввода от мыши» и рисование в форме
Когда пользователь нажимает одну из кнопок мыши, указатель которой находится над формой (или над компонентом), Windows посылает приложению несколько сообщений. Для написания кода, откликающегося на эти сообщения, Delphi определяет несколько событий. Основных событий два: OnMouseDown, которое происходит при нажатии одной из кнопок мыши, и OnMouseUp, которое происходит при освобождении кнопки.
Еще одно важное системное сообщение связано с перемещением мыши – сообщение OnMouseMove. Событие OnClick также доступно и в форме. Его основной смысл состоит в том, что левая кнопка мыши нажимается и отпускается над одним и тем же окном или компонентом. Однако в период между этими двумя действиями курсор может переместиться за пределы окна или компонента, причем левая кнопка мыши будет удерживаться нажатой. Если вы в определенной позиции нажмете кнопку мыши, а затем переместите мышь в другое место и отпустите кнопку, то щелчка не будет. В этом случае окно получает только сообщение о нажатии, несколько сообщений о перемещении и сообщение об освобождении.
