Автор работы: Пользователь скрыл имя, 23 Февраля 2011 в 07:41, лабораторная работа
. Цель работы
Ознакомление со средой визуального программирования Delphi и разра-
ботка в ней простейших приложений.
begin
Memo1.Lines.Clear;
end;
procedure TForm1.Center1Click(Sender: TObject);
begin
Center1.Checked := not Center1.Checked;
Image1.Center := Center1.Checked;
end;
procedure TForm1.Load2Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(
Center1.Enabled := true;
Stretch1.Enabled := true;
end;
end;
procedure TForm1.Enabled1Click(Sender: TObject);
begin
Enabled1.Checked := not Enabled1.Checked;
Memo1.Enabled := Enabled1.Checked;
end;
5. Добавьте в главное меню пункт:
♦ Lines: Add, (разделитель) - невидимый
6. Добавьте
методы:
procedure TForm1.Add1Click(Sender: TObject);
var
I : TMenuItem;
begin
I := TMenuItem.Create(Lines1);
I.Caption := Memo1.SelText;
I.OnClick := Put;
Lines1.Add(I);
N3.Visible := true;
end;
procedure TForm1.Put(Sender: TObject);
begin
Memo1.Text := Memo1.Text + (Sender as TMenuItem).Caption;
end;
36
7. Добавьте в меню Text пункт "Alignment: Left", циклически изме-
няющий свойство Memo1.Alignment и своё свойство Caption для вы-
равнивания по левому краю, по
центру и по правому краю.
Вариант
6
1.
На форме расположите три
компоненты ProgressBar и Shape, пиктограммы диалога ColorDialog
2. Создайте меню:
♦ Progress: More, Less - отключен
♦ Buttons: First – с галочкой, Second, Third
♦
Shaping: Color
Пример
формы – рис. 3.10
Рис. 3.10. Пример формы варианта 6
3.
Коды методов:
procedure TForm1.More1Click(Sender: TObject);
begin
ProgressBar1.Position := ProgressBar1.Position+10;
Progress1.Caption := 'Progress: ' + IntToStr(ProgressBar1.
'%';
More1.Enabled := ProgressBar1.Position<>100;
Less1.Enabled := ProgressBar1.Position<>0;
end;
procedure TForm1.First1Click(Sender: TObject);
begin
First1.Checked := true;
Second1.Checked := false;
Third1.Checked := false;
Button1.Enabled := true;
Button2.Enabled := false;
Button3.Enabled := false;
end;
procedure TForm1.Color1Click(Sender: TObject);
begin
if ColorDialog1.Execute then
Shape1.Brush.Color := ColorDialog1.Color;
end;
4. Код метода TForm1.Less1Click аналогичен коду метода
TForm1.More1Click
5. Коды методов TForm1.Second1Click и TForm1.Third1Click аналогич-
ны коду метода TForm1.First1Click
6. Добавьте в меню Shaping пункт, циклически изменяющий свойство
Shape1.Shape и отображающий эти изменения своим свойством Cap-
tion
6. Результаты работы
В результате выполнения
монстрировать преподавателю
формы и исходный код модуля.
ЛАБОРАТОРНАЯ РАБОТА №4
Классы и модули
1. Цель работы
Объектно – ориентированное
ботка
приложения, создающего и обрабатывающего
собственный класс.
2. Домашнее задание
Изучить раздел 3 конспекта лекций, описывающий объектно-
ориентированное программирование в Delphi.
Ознакомиться с описанием и заданием
на лабораторную работу.
3. Основные понятия и приемы
3.1. Классы и сокрытие информации
Класс может содержать сколько
угодно данных и любое
во
методов. Однако для
ориентированного подхода данные должны быть скрыты, или инкапсулиро-
ваны,
внутри использующего их
ния
доступа к внутреннему
новения
ошибочных ситуаций и
внутреннее
представление в будущих
различные
конструкции, подразумевающие
к переменным: классы и модули. С классами связаны некоторые специаль-
ные ключевые слова – спецификаторы доступа:
♦ private – элементы интерфейса класса видны только в пределах модуля, в
котором определен класс. Вне этого модуля private-элементы не видны и
недоступны. Если в одном модуле создано несколько классов, то все они
видят private-разделы друг друга.
♦ Раздел public не накладывает ограничений на область видимости пере-
численных в нем полей,
другом модуле программы.
♦ Раздел published не ограничивает область видимости, однако в нем пере-
числены свойства, которые должны быть доступны не только на этапе
исполнения, но и на этапе конструирования программы. Раздел published
используется при разработке
компонентов. Без объявления
ется объявленным как
ется в самом начале
первого объявленного раздела. В раздел published среда помещает описа-
ние вставляемых в форму
венные
элементы или удалять элементы, вставленные
средой.
♦ Раздел protected доступен только методам самого класса, а также любым
потомкам, независимо от того, находятся ли они в том же модуле или
нет.
Порядок следования разделов может быть любой, любой раздел
может быть пустым.
3.2. Классы и модули
Приложения Delphi интенсивно используют модули. За каждой
формой скрывается соответствующий ей модуль. Однако модули не обязаны
иметь соответствующие формы.
Модуль содержит раздел interface, где объявлено все, что доступно
для других модулей, и раздел implementation с реальным кодом. Наконец,
модуль может иметь два необязательных раздела: initialization с некоторым
кодом запуска, который выполняется при загрузке в память программы, ис-
пользующей данный модуль, и finalization, который выполняется при завер-
шении программы.
Предложение uses в начале раздела interface указывает к каким
другим модулям мы должны получить доступ из раздела interface текущего
модуля. Если же на другие модули необходимо сослаться из кода подпро-
грамм и методов, вы должны добавить новое предложение uses в начале
раздела implementation.
В интерфейсе модуля можно объявить несколько различных эле-
ментов, в том числе процедуры, функции, глобальные переменные и типы
данных. Также можно поместить в модуль класс. Delphi это делает автома-
тически при создании каждой формы. Чтобы создать новый не относящийся
к форме модуль, выберите команду File/New и отметьте на странице New
появившегося окна Object Repository элемент Unit.
3.3. Модули и область видимости
Область видимости
ции или типа данных) определяет ту часть кода, в которой доступен этот
идентификатор. Основное правило состоит в том, что идентификатор являет-
ся значимым только внутри его области видимости.
Если вы объявили
цедуры, вы не сможете использовать данную переменную вне этой процеду-
ры. Область
видимости идентификатора
чая вложенные блоки.
Если вы объявили
вы не можете применить его вне модуля, но можете использовать в любом
блоке и процедуре, определенных внутри модуля. Если вы объявили иден-
тификатор в интерфейсной части модуля, его область видимости распро-
страняется на любой другой модуль, где объявлен идентификатор. Любой
идентификатор,
объявленный в интерфейсе
все другие идентификаторы принято называть локальными.