Файл: Лабораторная работа 1 Часть i 13 лабораторная работа n 1 Часть ii 16 лабораторная работа n 1 Часть iii 1.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.11.2023

Просмотров: 313

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Оглавление

Тема 1: Знакомство с основными компонентами группы Standard. Компоненты Delphi визуальные и невизуальные. Свойства и события компонентов. Назначения и основные свойства компонентов группы Standard.

ЛАБОРАТОРНАЯ РАБОТА № 1 / Часть I /

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть II /

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 1 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 2 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III /3 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 4 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 5 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 6 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 7 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 8 вариант

Тема 2: Стандартные диалоговые панели – компоненты группы Dialogs.

ЛАБОРАТОРНАЯ РАБОТА №2

Тема 3. Работа с таблицами в Delphi

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть I /

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 1 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 2 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 3 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 4 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 5 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 6 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 7 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 8 вариант

Тема 4. Графические средства Delphi

Тема 4.1 Графические компоненты

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 1

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 2

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 3

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 4

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 5

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 6

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 7

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 8

Тема 5. Работа с файлами в Delphi

ЛАБОРАТОРНАЯ РАБОТА № 5

ЛАБОРАТОРНАЯ РАБОТА №2


Тема: «ВИЗУАЛЬНОЕ ПРОЕКТИРОВАНИЕ МЕНЮ.

СОЗДАНИЕ ТЕКСТОВОГО РЕДАКТОРА.

ИЗУЧЕНИЕ СВОЙСТВ КОМПОНЕНТОВ ГРУППЫ DIALOGS»
Задание: Создать текстовый редактор с развитой системой меню, использующий для открытия, создания, редактирования и сохранения текстовых файлов диалоговые панели – компоненты группы DIALOGS.

Иерархическая схема меню приведена на рисунках 1,2.3.

Назначение пунктов меню:

Файл / Новый – очистка экрана, имя файла равно ‘’;

Открыть – выбор файла на диске и размещение его в окне редактора;

Сохранить – запись текста из окна редактора на диск, если имя файла не равно ‘’;

Сохранить как… – запись текста из окна редактора в файл, имя которого задает пользователь;

Печать – печатает текст из редактора MEMO на принтере;

Выход – завершение работы программы;

Редактирование / Вырезать – забрать в буфер обмена Clipboard выделенный текст (вырезать);

Копировать – копировать в Clipboard выделенный текст;

Вставить – вставить из Clipboard текст;

Сервис / Шрифт – выбор шрифта для символов текста в редакторе МEMO;

Цвет фона – изменение цвета фона редактора МЕМО;

Выравнивание – выравнивание текста в окне редактора (по центру, по левому или правому краю);

Справка – выдача краткого сообщения о программе.


Порядок выполнения задания:

  1. Выберите пункт меню File\New\Application для создания нового приложения. Установите цвет, размеры и имя открывшейся формы по своему усмотрению.

Включите в обработчик события ОnCreate формы следующие строки:

Fname : = ‘’ ; modified : = false ;

Переменная Fname соответствует имени файла, в котором будет сохраняться текст из окна текстового редактора; а переменная modified вводится для учета изменений в тексте редактора: любое изменение в тексте редактора должно вызывать установку переменной modified в значение true. Переменные
Fname и modified должны быть описаны как глобальные в интерфейсной секции модуля (var Fname: string; modified: boolean ;)

  1. Выберите в палитре компонентов пиктограмму MainMenu (из группы STANDART), расположите ее на форме в любом месте и дважды щелкните по ней левой кнопкой мыши. Меню будет создано, если заносить названия пунктов меню в окне Object Inspector (свойство Caption). Названия пунктов меню указывайте по приведенной на рисунках 1,2 и 3

Примечания:

  1. если Вы допустили ошибку и какой– либо пункт меню требуется удалить, выделите этот пункт меню и нажмите правую кнопку мыши в появившемся всплывающем меню выберите команду Delete – пункт– меню будет удален. Аналогично можно вставить пункт меню между уже существующими (команда Insert), а также создать подменю для выделенного пункта меню (команда Create Submenu). По завершению формирования схемы (макета) меню закройте окно.

  2. чтобы пункт меню стал в виде недоступной черты, поставьте в свойстве Caption символ «– »(минус).

  1. Перенесите на форму компонент MEMO и установите его свойства:

Align = alClient – memo– поле занимает все пространство формы;

Scrollbars = ssBoth – устанавливаются линии скроллинга

Включите в обработчик события OnChange компонента MEMO строку: modified : = true;

  1. Для каждого пункта меню существует только одно событие – OnClick, поэтому для каждого пункта меню создается только одна процедура. Программный код некоторых пунктов меню будет содержать вызов соответствующих диалоговых панелей, поэтому предварительно следует разместить пиктограммы диалоговых панелей на форме в произвольном порядке (пиктограммы находятся на странице DIALOGS палитры компонентов).

  2. В раздел Uses модуля формы необходимо добавить модуль Printers.




Пункт меню

Рекомендации по программированию

(возможный программный код)


НОВЫЙ


var Nom: word ;

begin // начало тела процедуры

If modified = true then

Begin

Nom := MessageDlg ( 'Файл ' + Fname + ' не сохранен! Очистить
окно? ' , mtWarning, [mbYes , mbNo], 0 ) ;

if nom = mrYes then modified := false ;

end;

If modified = false then

Begin

Memo1.Text := " ; Fname := " ; modified := false ;

Form1.caption := ' Lab3 – [Без имени] ' ;

end;

end; // конец тела процедуры

ОТКРЫТЬ

if modified then

if MessageDlg('Файл'+Fname+'не сохранен! Очистить окно?', mtWarning,[mbYes,mbNo],0)=mrYes

then modified:=false;

if not modified and Opendialog1.Execute then

begin

Fname:=Opendialog1.FileName;

Memo1.Lines.LoadFromFile(Fname);

Form1.Caption:='Lab2 - '+Fname;

end;

СОХРАНИТЬ

if Fname= '' then

ShowMessage('Файл без имени! Используйте Save as') else

Memo1.Lines.SaveToFile(Fname);

modified:=false;

СОХРАНИТЬ КАК...

Напишите самостоятельно –

(используйте компонент SaveDialog)

ВЫХОД

if modified then

if messageDlg('Файл'+Fname+'не сохранен!'#13+'Завершить программу?', mtWarning, [mbYes,mbNo],0)=mrYes

then modified:=false;

if not modified then Close;

ШРИФТ

Напишитесамостоятельно

ПЕЧАТЬ

var

Pout:textFile;

N: integer;

begin

if PrintDialog1.Execute then

begin

AssignPrn(Pout); // связывает тестовый файл с принтером

Rewrite(Pout);

Printer.Canvas.Font:=Memo1.Font; // шрифт для принтера

For N:=0 to Memo1.Lines.Count-1 do

Writeln(Pout,Memo1.Lines[N]); // печать строки из Memo

CloseFile(Pout);

ЦВЕТ ФОНА

Напишите самостоятельно –

ВЫРЕЗАТЬ

Напишите самостоятельно –

КОПИРОВАТЬ

Напишите самостоятельно –

ВСТАВИТЬ

Напишите самостоятельно –

ВЫРАВНИВАНИЕ

Напишите самостоятельно –







Рисунок 1, 2, 3 – Этап проектирования приложения

Тема 3. Работа с таблицами в Delphi


Delphi содержит 4 компонента для предоставления данных в табличном виде:

  1. DBGrid – отображает данные из таблицы БД.

  2. DrawGrid – предназначена для отображения графических элементов.

  3. StringGrid – предназначена для размещения и хранения текстовой информации.

  4. ColorGrid – таблица цветов.

Исходным классом всех таблиц является абстрактный класс TCustomGrid.

Каждая таблица может содержать произвольное количество строк и столбцов. Размеры отдельных столбцов и строк могут быть различными и могут изменяться во временя выполнения программы. Информация в активных ячейках таблицы может редактироваться.

В таблицах существуют так называемые фиксированные ячейки – это обычно самый левый столбец и самая верхняя строка. Предназначены фиксированные ячейки для размещения заголовков строк и столбцов. Содержимое фиксированных ячеек нельзя выделить или активизировать. Количество фиксированных строк и столбцов можно изменять при помощи свойств FixedCols, FixedRows; цвет фиксированных ячеек определяется свойствами FixedColor.

Ячейка в таблице может находиться в одном из четырех состояний:

  1. пассивная – с ячейкой не выполняются никакие действия;

  2. выделенная – выделена особым цветом;

  3. активная – выделена рамкой из точек;

  4. фиксированная – тоже выделена особым цветом (по умолчанию – серым).

В таблицах помимо обычных координат (X,Y), задаваемых в пикселях, используется своя система координат – номер столбца и номер строки, в которых расположена ячейка. Нумерация строк и столбцов начинается с нуля – самая верхняя левая ячейка имеет координаты (0,0), обычно это фиксированная ячейка. Первая координата указывает номер столбца, вторая номер строки.

Свойства класса TCustomGrid, общие для всех таблиц

  1. Property Col:integer – номер столбца, в котором находится активная ячейка;

    1. Row:integer - номер строки, в котором находится активная ячейка;

    2. ColCount:integer – число столбцов;

    3. RowCount:integer – число строк.

  2. Property ColWidths [I:longint] :integer – задает ширину столбцов с номером I в пикселях;

    1. DefaultColWidth:integer – исходная ширина столбцов (одинаковая для всех);

    2. DefaultRowHeight:integer – исходная высота всех строк;

    3. RowHeights [I:longint] :integer – задает высоту строки с номером I;

    4. DefaultDrawing:Boolean – определяет, отображается ли содержимое ячеек автоматически (отображается при = true);

    5. FixedColor:TColor – цвет фиксированных ячеек;

    6. FixedCols:integer – число фиксированных колонок;

    7. FixedRows:integer – число фиксированных строк.


Поведение и внешний вид таблицы определяются также свойством Options, имеющий ряд идентификаторов (подсвойств), которые можно установить в True или False:

goFixedVertLine – фиксированные ячейки разделяются вертикальными линиями;

goFixedHorzLine – фиксированные ячейки разделяются горизонтальными линиями;

goVertLine – остальные ячейки разделяются вертикальными линиями;

goHorzLine – остальные ячейки разделяются горизонтальными линиями;

goDrawFocusSelected – активная ячейка закрашивается тем же цветом, что и выделенная, в противном случае закрашиваются цветом нейтральных точек;

goEditing – ячейки могут редактироваться;

goTabs – переход от ячейки к ячейки возможен клавишей «TAB»;

goAwaysShowEditor – при выделении ячейки она сразу же становится активной, иначе активируется либо клавишей F2, либо двойным нажатием мыши;

goRangeSelected – доступно выделение нескольких ячеек;

goRowMoving – строки таблицы могут перемещаться;

goRowSelected – выделяются только целые строки таблицы.
Таблица DrawGrid

Таблица DrawGrid предназначена для отображения графических элементов, принадлежит классу TGrawGrid, является потомком класса TCustomGrid.

Особые события класса TDrawGrid:

OnDrawCell – возникает при необходимости перерисовать содержимое ячейки;

OnGetEditText – возникает при необходимости переписать или перерисовать содержимое ячейки и задан флаг Options/goEditing = true;

OnSetEditText – возникает после завершения редактирования текста;

OnColumnMoved – при перемещении столбца таблицы при помощи мыши;

OnRowMoved – при перемещении строки таблицы при помощи мыши.
Метод класса TDrawGrid:

  1. Function CellRect (ACol,ARow : integer): Trect; - определяет прямоугольник, который занимает ячейки в столбце ACol и строке ARow.

Замечание: Тип Trect определяется следующим образом:

Type Trect = record

case integer of

0: (left, top, right, bottom: integer);

1: (topleft, bottomright: Tpoint);

end;

Tpoint = record

x : logint;

y : logint;

end;

  1. Procedure MouseToCell (x,y: integer; ACol, ARow: longint); - преобразует координаты мыши X,Y в координаты ACol, ARow ячейки, на которой находится курсор мыши.

Пример: Напишем процедуру, которая при нажатии на кнопку мыши закрашивает в зеленый цвет ячейку таблицы, на которую указывает курсор мыши и рисует вписанный в ячейку эллипс белого цвета.

procedure TForm1.DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton;