close

Вход

Забыли?

вход по аккаунту

?

Otchet (8)

код для вставкиСкачать
МИНОБРНАУКИ РОССИИФедеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
"Московский государственный технический университет радиотехники,
электроники и автоматики"
МГТУ МИРЭА
Факультет информационных технологий (ИТ)Кафедра Корпоративных информационных систем (КИС)
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 2
По теме "Основные компоненты библиотеки VCL (Библиотека Визуальных Компонентов, Visual Components Library)"
Выполнил студент группы ИСБ-2-13
Аштаев.А.Д.
Принял Ассистент кафедры КИС Мирзоян Д. И.
Лабораторные работы выполнены"13" сентября 2013 г.
"Зачтено"
"__"_______201___ г.
Москва 2013
План
1. Задание.
2. Теоретическая часть.
3. Алгоритм решения задачи.
4. Скриншот.
5. Код.
Задание:
1. Создать приложение, отображающее движущийся вдоль края окна текст. Текст должен двигаться плавно, не выходя за границы отображаемой области окна (за рамку), и не отрываясь от края окна при изменении его размеров. Кроме того, текст должен плавно менять цвет в соответствии с вариантом. Двигаться текст должен по часовой стрелке (От левого верхнего угла к правому верхнему, от правого верхнего к правому нижнему, от правого нижнего к левому нижнему, от левого нижнего к левому верхнему).
2. Добавить в приложение еще одну форму, поместить на форму компоненты и организовать их взаимодействие в соответствии с индивидуальным заданием.
Теоретическая часть
Библиотека визуальных компонентов (Visual Component Library, сокращенно - VCL) содержит большое количество классов, предназначенных для быстрой разработки приложений. Библиотека написана на Object Pascal и непосредственно связана с интегрированной средой разработки приложений Delphi. Несмотря на название, в VCL содержатся главным образом невизуальные компоненты, однако имеются и визуальные, а также другие классы, начиная с абстрактного класса TObject. При этом все компоненты являются классами, но не все классы являются компонентами.
В Delphi 7 также имеется возможность использовать библиотеку CLX (межплатформенный вариант библиотеки VCL) для разработки приложений под Windows и Linux.
Все классы VCL расположены на определенном уровне иерархии и образуют дерево (иерархию) классов. Знание происхождения объекта оказывает значительную помощь при его изучении, т. к. потомок наследует все элементы объекта-родителя. Так, если свойство caption принадлежит классу TControl, то это свойство будет и у его потомков, например, у классов TButton и TCheckBox, и у компонентов- кнопки Button и флажка CheckBox соответственно.
Кроме иерархии классов, большим подспорьем в изучении системы программирования являются исходные тексты модулей, которые находятся в каталоге source главного каталога Delphi.
Класс TObject - общий предок всех классов Object Pascal - находится в корне иерархии. Этот класс является абстрактным и реализует наиболее общие для всех классов-потомков методы, важнейшими из которых являются:
* Create (создание объекта);
* Destroy (удаление объекта);
* Free (удаление объекта, созданного методом create, при этом вызывается и метод Destroy).
Большинство этих методов переопределяются в классах-потомках. Дадим краткую характеристику важнейшим классам-потомкам TPersistent, TComponent и TControl, к которым относится большинство общих свойств, методов и событий и которые, в свою очередь, также порождают множество классов.
Класс TPersistent является абстрактным классом для тех объектов, свойства которых загружаются из потока и сохраняются в потоке. Механизм потоков используется для работы с памятью (обычно дисковой или оперативной). В дополнение к методам класса TObject класс TPersistent имеет метод Assign, позволяющий передавать поля и свойства одного объекта другому.
Класс TComponent является базовым для всех компонентов и в дополнение к методам своих предков предоставляет средства, благодаря которым компоненты способны владеть другими компонентами. В результате при помещении в форму любой компонент будет принадлежать другому компоненту (чаще всего форме). При создании компонента он обеспечивает автоматическое создание всех принадлежащих ему компонентов, а при удалении этого компонента все принадлежащие ему компоненты также автоматически удаляются.
Основные свойства TComponent.
* Components (список принадлежащих компонентов);
* Сomponentcount (число принадлежащих компонентов);
* Component index (номер компонента в списке принадлежащих компонентов);
* Сomponentstate (состояние текущего компонента);
* Name (имя компонента);
* Owner (владелец компонента);
* Tag (целое значение, хранимое вместе с компонентом).
Основные методы класса TComponent:
* DestroyComponents (разрушает все принадлежащие компоненты);
* Destroying (уведомляет принадлежащий компонент о его разрушении);
* FindComponent (находит компонент в списке Components).
От класса TComponent происходят визуальные и невизуальные компоненты. Многие невизуальные компоненты порождены непосредственно от класса TComponent, например, таймер (Timer).
Компонент Timer позволяет реализовать выполнение действий через определенные интервалы времени. Для этого используется событие onTimer типа TNotifyEvent, генерируемое по истечении заданного интервала времени. Интервал времени в миллисекундах задается свойством Interval типа Cardinal и по умолчанию равен 1000, что соответствует тиканью таймера через 1 секунду. Если установить интервал равным нулю, то таймер остановится и не будет генерировать события onTimer. Остановить таймер также можно, присвоив значение False свойству Enabled.
Если система занята выполнением более важных задач, чем отслеживание хода таймера, то интервал между соседними тиканьями таймера может увеличиваться. Это происходит, например, при считывании с диска больших файлов или при выполнении длинного цикла.
Класс TControl является базовым классом для визуальных компонентов (элементов управления) и обеспечивает основные средства для их функционирования, в том числе прорисовку на экране. Все визуальные компоненты делятся на оконные и графические, происходящие, соответственно, от классовTWinControl и TGraphicControl.
Таковы наиболее общие классы библиотеки визуальных компонентов.
Алгоритм решения задачи 1.
1. Создать новый проект в Lazarus.
2. Разместить на форме компонент TLabel из палитры "Standart", и поместить его в точку с координатами (0; 0) (левый верхний угол). 3. Разместить компонент TTimer с палитры компонентов "System" в произвольном месте формы.
4. Задать свойство "Enabled" равным "true", а свойство "Interval" равным 40 5. Задать поведение компонентов в соответствии с заданием
6. Записать условия перехода, с помощью оператора. 7. Изменим координаты метки, чтобы обеспечить движение объекта.
8. Зададим цвета для переменной
9. Разделим текущую координату на длину возможного изменения
Алгоритм решения задачи 2
1. Добавим флаговую кномку, с подписью "Движение включено" и положением по-умолчанию "отмечено".
2. Создаем многострочное поле ввода, без текста
3. Создаем кнопку с подписью "Добавить строку".
4. Создаем кнопку с подписью "Удалить строку".
5. Создаем метку, отображающая номер строки в поле ввода, с поясняющей надписью и содержанием.
Скриншот
Unit 1 Unit 2
Код
unit Unit1
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Label1: TLabel;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
Direction: (tdRight, tdDown, tdLeft, tdUp);
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Timer1Timer (Sender: TObject);
begin
case Direction of
tdRight: Label1.Left := Label1.Left+10;
tdDown : Label1.Top := Label1.Top+10;
tdLeft : Label1.Left := Label1.Left-10;
tdUp : Label1.Top := Label1.Top-10;
end;
if Label1.Left > ClientWidth-Label1.Width then
begin
Direction := tdDown;
Label1.Left := ClientWidth-Label1.Width;
Label1.Anchors := [akTop, akRight];
end;
if Label1.Top > ClientHeight-Label1.Height then
begin
Direction := tdLeft;
Label1.Top:= ClientHeight-Label1.Height;
Label1.Anchors := [akBottom, akRight];
end;
if Label1.Left < 0 then
begin
Direction := tdUp;
Label1.Left:= 0;
Label1.Anchors := [akLeft, akTop];
end;
if Label1.Top < 0 then
begin
Direction := tdRight;
Label1.Top:= 0;
Label1.Anchors := [akTop, akLeft];
end;
case Direction of
tdRight: Label1.Font.Color := ($FF-Label1.Left*$FF div (ClientWidth-Label1.Width))*$000100+
(Label1.Left*$FF div (ClientWidth-Label1.Width))*$010000;
tdDown : Label1.Font.Color := (Label1.Top*$FF div (ClientWidth-Label1.Width))*$01+$FF0000;
tdLeft: Label1.Font.Color := ((Label1.Left*$FF div (ClientWidth-Label1.Width))*$010001)+
($FF-Label1.Left*$FF div (ClientWidth-Label1.Width))*$000101;
tdUp:label1.font.color := RgbToColor ((Label1.top*$FF div (Clientheight-label1.height)),255,0); end;
end;
end.
Unit 2
unit Unit4;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm4 }
TForm4 = class(TForm)
Button1: TButton;
Button2: TButton;
CheckBox1: TCheckBox;
ComboBox1: TComboBox;
GroupBox1: TGroupBox;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure CheckBox1Change(Sender: TObject);
procedure GroupBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ private declarations }
public
{ public declarations }
end;
var
Form4: TForm4;
index: integer;
implementation
uses
unit1;
{$R *.lfm}
{ TForm4 }
procedure TForm4.CheckBox1Change(Sender: TObject);
begin
if checkbox1.checked = true then
begin
form1.Timer1.Enabled := True;
end;
if checkbox1.checked = false then
begin
form1.Timer1.Enabled := False;
end;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
ComboBox1.Items.Add(ComboBox1.Text);
ComboBox1.Caption:=' ';
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
if ComboBox1.ItemIndex = -1 then
begin
ShowMessage('Error');
end
else
begin
ComboBox1.Items.Delete(ComboBox1.ItemIndex);
end;
end;
procedure TForm4.GroupBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
index:=combobox1.ItemIndex+1;
if index >0
then Label1.caption:='Выбранный элемент:'+inttostr(index)+'.'+ComboBox1.Text
else Label1.caption:='Выбранный элемент:Нет.';
end;
end.
Документ
Категория
Рефераты
Просмотров
154
Размер файла
70 Кб
Теги
otchet
1/--страниц
Пожаловаться на содержимое документа