Файл: Лабораторная работа 1 Часть i 13 лабораторная работа n 1 Часть ii 16 лабораторная работа n 1 Часть iii 1.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.11.2023
Просмотров: 313
Скачиваний: 2
СОДЕРЖАНИЕ
ЛАБОРАТОРНАЯ РАБОТА № 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.
Тема 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
ЛАБОРАТОРНАЯ РАБОТА №2
Тема: «ВИЗУАЛЬНОЕ ПРОЕКТИРОВАНИЕ МЕНЮ.
СОЗДАНИЕ ТЕКСТОВОГО РЕДАКТОРА.
ИЗУЧЕНИЕ СВОЙСТВ КОМПОНЕНТОВ ГРУППЫ DIALOGS»
Задание: Создать текстовый редактор с развитой системой меню, использующий для открытия, создания, редактирования и сохранения текстовых файлов диалоговые панели – компоненты группы DIALOGS.
Иерархическая схема меню приведена на рисунках 1,2.3.
Назначение пунктов меню:
Файл / Новый – очистка экрана, имя файла равно ‘’;
Открыть – выбор файла на диске и размещение его в окне редактора;
Сохранить – запись текста из окна редактора на диск, если имя файла не равно ‘’;
Сохранить как… – запись текста из окна редактора в файл, имя которого задает пользователь;
Печать – печатает текст из редактора MEMO на принтере;
Выход – завершение работы программы;
Редактирование / Вырезать – забрать в буфер обмена Clipboard выделенный текст (вырезать);
Копировать – копировать в Clipboard выделенный текст;
Вставить – вставить из Clipboard текст;
Сервис / Шрифт – выбор шрифта для символов текста в редакторе МEMO;
Цвет фона – изменение цвета фона редактора МЕМО;
Выравнивание – выравнивание текста в окне редактора (по центру, по левому или правому краю);
Справка – выдача краткого сообщения о программе.
Порядок выполнения задания:
-
Выберите пункт меню File\New\Application для создания нового приложения. Установите цвет, размеры и имя открывшейся формы по своему усмотрению.
Включите в обработчик события ОnCreate формы следующие строки:
Fname : = ‘’ ; modified : = false ;
Переменная Fname соответствует имени файла, в котором будет сохраняться текст из окна текстового редактора; а переменная modified вводится для учета изменений в тексте редактора: любое изменение в тексте редактора должно вызывать установку переменной modified в значение true. Переменные
Fname и modified должны быть описаны как глобальные в интерфейсной секции модуля (var Fname: string; modified: boolean ;)
-
Выберите в палитре компонентов пиктограмму MainMenu (из группы STANDART), расположите ее на форме в любом месте и дважды щелкните по ней левой кнопкой мыши. Меню будет создано, если заносить названия пунктов меню в окне Object Inspector (свойство Caption). Названия пунктов меню указывайте по приведенной на рисунках 1,2 и 3
Примечания:
-
если Вы допустили ошибку и какой– либо пункт меню требуется удалить, выделите этот пункт меню и нажмите правую кнопку мыши в появившемся всплывающем меню выберите команду Delete – пункт– меню будет удален. Аналогично можно вставить пункт меню между уже существующими (команда Insert), а также создать подменю для выделенного пункта меню (команда Create Submenu). По завершению формирования схемы (макета) меню закройте окно. -
чтобы пункт меню стал в виде недоступной черты, поставьте в свойстве Caption символ «– »(минус).
-
Перенесите на форму компонент MEMO и установите его свойства:
Align = alClient – memo– поле занимает все пространство формы;
Scrollbars = ssBoth – устанавливаются линии скроллинга
Включите в обработчик события OnChange компонента MEMO строку: modified : = true;
-
Для каждого пункта меню существует только одно событие – OnClick, поэтому для каждого пункта меню создается только одна процедура. Программный код некоторых пунктов меню будет содержать вызов соответствующих диалоговых панелей, поэтому предварительно следует разместить пиктограммы диалоговых панелей на форме в произвольном порядке (пиктограммы находятся на странице DIALOGS палитры компонентов). -
В раздел 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 компонента для предоставления данных в табличном виде:
-
DBGrid – отображает данные из таблицы БД. -
DrawGrid – предназначена для отображения графических элементов. -
StringGrid – предназначена для размещения и хранения текстовой информации. -
ColorGrid – таблица цветов.
Исходным классом всех таблиц является абстрактный класс TCustomGrid.
Каждая таблица может содержать произвольное количество строк и столбцов. Размеры отдельных столбцов и строк могут быть различными и могут изменяться во временя выполнения программы. Информация в активных ячейках таблицы может редактироваться.
В таблицах существуют так называемые фиксированные ячейки – это обычно самый левый столбец и самая верхняя строка. Предназначены фиксированные ячейки для размещения заголовков строк и столбцов. Содержимое фиксированных ячеек нельзя выделить или активизировать. Количество фиксированных строк и столбцов можно изменять при помощи свойств FixedCols, FixedRows; цвет фиксированных ячеек определяется свойствами FixedColor.
Ячейка в таблице может находиться в одном из четырех состояний:
-
пассивная – с ячейкой не выполняются никакие действия; -
выделенная – выделена особым цветом; -
активная – выделена рамкой из точек; -
фиксированная – тоже выделена особым цветом (по умолчанию – серым).
В таблицах помимо обычных координат (X,Y), задаваемых в пикселях, используется своя система координат – номер столбца и номер строки, в которых расположена ячейка. Нумерация строк и столбцов начинается с нуля – самая верхняя левая ячейка имеет координаты (0,0), обычно это фиксированная ячейка. Первая координата указывает номер столбца, вторая номер строки.
Свойства класса TCustomGrid, общие для всех таблиц
-
Property Col:integer – номер столбца, в котором находится активная ячейка;-
Row:integer - номер строки, в котором находится активная ячейка; -
ColCount:integer – число столбцов; -
RowCount:integer – число строк.
-
-
Property ColWidths [I:longint] :integer – задает ширину столбцов с номером I в пикселях;-
DefaultColWidth:integer – исходная ширина столбцов (одинаковая для всех); -
DefaultRowHeight:integer – исходная высота всех строк; -
RowHeights [I:longint] :integer – задает высоту строки с номером I; -
DefaultDrawing:Boolean – определяет, отображается ли содержимое ячеек автоматически (отображается при = true); -
FixedColor:TColor – цвет фиксированных ячеек; -
FixedCols:integer – число фиксированных колонок; -
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:
-
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;
-
Procedure MouseToCell (x,y: integer; ACol, ARow: longint); - преобразует координаты мыши X,Y в координаты ACol, ARow ячейки, на которой находится курсор мыши.
Пример: Напишем процедуру, которая при нажатии на кнопку мыши закрашивает в зеленый цвет ячейку таблицы, на которую указывает курсор мыши и рисует вписанный в ячейку эллипс белого цвета.
procedure TForm1.DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton;