Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otchet.docx
Скачиваний:
9
Добавлен:
26.03.2016
Размер:
486.32 Кб
Скачать

Министерство образования и науки РФ

Федеральное государственное автономное образовательное учреждение

высшего профессионального образования

«СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

Политехнический институт

Кафедра КТОМСП

Отчет по лабораторным работам по дисциплине:

«Программирование» 2 семестр

Преподаватель Головин М. П.

подпись

Студент группы МТ14-09Б 071402101 Захарин А. С.

подпись

Красноярск 2015

Содержание.

Лабораторная работа №1-3...........................................................................стр. 3.

Лабораторная работа №4..............................................................................стр. 7.

Лабораторная работа №6..............................................................................стр. 8.

Лабораторная работа №7..............................................................................стр.11.

Лабораторная работа №8..............................................................................стр.18.

Лабораторная работа №9..............................................................................стр.22.

Лабораторная работа №10............................................................................стр.25.

Используемая литература.............................................................................стр.27.

Лабораторная работа №1-3 Создание многооконного текстового редактора

Задание: Создать стандартный интерфейс MDI Windows-приложения «Текстовый редактор» создержащий меню, панель инструментов, строку состояния обеспечив следующую функциональность:

Открытие документа из файла, сохраниение документа в файле, удаление в буфер, вставка из буфера, курсивный шрифт, отображение позиции курсора + выравние текста(защита)

Интерфейс программы

Интерфейс приложения представлен на начальном этапе представлен на рисунке 1.1, а на конечном этапе представлен интерфейс с дочерним окном на рисунке 1.2.

Рисунок 1.1

Рисунок 1.2

Код программы

Исходный код материнской формы:

procedure TForm1.ACenterExecute(Sender: TObject);

begin

(ActiveMDIChild as tform2).RichEdit1.Paragraph.Alignment := taCenter;

end;

procedure TForm1.ACutExecute(Sender: TObject);

begin

(ActiveMDIChild as tform2).RichEdit1.CutToClipBoard;

end;

procedure TForm1.AExitExecute(Sender: TObject);

begin

Form1.Close;

end;

procedure TForm1.AItalicExecute(Sender: TObject);

begin

With (ActiveMDIChild as tform2).RichEdit1.SelAttributes do

begin

if FsItalic in Style then

Style:=Style - [FsItalic]

else

Style:=Style + [FsItalic]

end;

end;

procedure TForm1.ALeftExecute(Sender: TObject);

begin

(ActiveMDIChild as tform2).RichEdit1.Paragraph.Alignment := taLeftJustify;

end;

procedure TForm1.AOpenExecute(Sender: TObject);

begin

if OpenDialog1.Execute then

begin

Form2:=Tform2.Create(Self);

Form2.RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);

Form2.RichEdit1.Modified := false;

FileName:=OpenDialog1.FileName;

Form2.show;

Form2.Caption:='Документ - '+ExtractFileName(FileName);

end;

end;

procedure TForm1.APasteExecute(Sender: TObject);

begin

(ActiveMDIChild as tform2).RichEdit1.PasteFromClipBoard;

end;

procedure TForm1.ARightExecute(Sender: TObject);

begin

(ActiveMDIChild as tform2).RichEdit1.Paragraph.Alignment := taRightJustify;

end;

procedure TForm1.ASaveExecute(Sender: TObject);

begin

(ActiveMDIChild as tform2).RichEdit1.Lines.SaveToFile(OpenDialog1.FileName)

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if MessageDlg('Выйти из программы?',mtConfirmation,[mbYes,mbNo],0)=mrYes

then Action:=caFree

else Action:=caNone;

end;

Исходный код дочерней формы:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if RichEdit1.Modified then

begin

if MessageDlg('Файл был изменён. Перед выходом он не будет сохранён. Подтвердить выход?',

mtConfirmation,[mbYes,mbNo],0)=mrYes then

if OpenDialog1.Execute then

begin

RichEdit1.Lines.SaveToFile(OpenDialog1.FileName);

Action:=caFree;

end

else

Action:=CaFree;

end

else

Action:=CaFree;

end;

procedure TForm2.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

Form1.StatusBar1.Panels[2].Text := IntToStr(RichEdit1.Caretpos.y+1);

Form1.StatusBar1.Panels[4].Text := IntToStr(RichEdit1.Caretpos.X+1);

end;

Алгоритмы

Рисунок 1.3

Лабораторная работа №4

Использование технологий Drag&Drop

Задание: Отобразитить в редакторе Edit выделенную строчку из ListBox

Интерфейс программы

На рисунке 2.1 изображен интерфейс приложения.

Рисунок 2.1

Код программы

procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);

var itemIndex: byte;

begin

Edit1.Text:=(Source as TListBox).items[(Source as TListBox).itemIndex];

end;

procedure TForm1.Edit1DragOver(Sender, Source: TObject; X, Y: Integer;

State: TDragState; var Accept: Boolean);

begin

Accept:= true;

end;

procedure TForm1.LBDragOver(Sender, Source: TObject; X, Y: Integer;

State: TDragState; var Accept: Boolean);

begin

Accept:= true;

end;

Лабораторная работа №6

Вывод графической информации на холст

Задание: Определить количество точек, попавших в заданный прямоугольник. Решение задачи отобразить на холсте.

Интерфейс программы

На изображениях 3.1 и 3.2 показана работа данной задачи в программе.

Рисунок 3.1

Рисунок 3.2

Код программы

Исходный код модуля программы:

function colpo(po:tpo):integer;

procedure postroenie(Img: TImage;var po:tpo);

procedure addPoint(x,y,countPoint:integer;var po:tpo);

var

countpoint: integer;

po:tpo;

Canvas: TCanvas;

implementation

procedure addPoint(x,y,countPoint:integer; var po:tpo);

begin

setLength(po,countPoint+1);

po[countPoint].X:=x;

po[countPoint].Y:=y;

end;

procedure postroenie(Img: TImage; var po:tpo);

begin

img.Canvas.Pen.Color:=clblack;

img.Canvas.Brush.Color:=clAqua;

img.Canvas.rectangle(po[0].X,po[0].y, po[1].X,po[1].y);

end;

function colpo(po:tpo):integer;

var i,d:integer;

begin

d:=0;

for I := 2 to length(po) - 1 do

if ((po[i].X>po[0].X) and (po[i].X<po[1].X)) then

if ((po[i].y>po[0].y) and (po[i].y<po[1].y)) then

d:=d+1;

colpo:=d;

end;

end.

Исходный код программы:

procedure TForm1.FormActivate(Sender: TObject);

begin

a:=0;

end;

procedure TForm1.Image1Click(Sender: TObject);

begin

Form1.StatusBar1.Panels[0].Text:='Кол-во точек в прямоугольнике = '+floatTostr(colpo(po));

end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);

begin

Image1.Canvas.Pen.Color:=Rgb(0,25,0);

Image1.Canvas.Brush.Color:=Rgb(0,26,0);

Image1.Canvas.Ellipse(x-2,y-2,x+2,y+2);

addpoint(X,Y,A,po);

if a=1 then

begin

postroenie(Image1,po);

end;

a:=a+1;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]