Дисциплина «Основы алгоритмизации и программирования»
Цель: Приобретение навыков настройки свойств и программирования обработчиков событий компонентов диалога OpenDialog и SaveDialogсистеме Delphi.
ТО и ПО: OC Windows 7, Delphi 2010.
МО: методические указания.
Задание: Требуется разработать проект, демонстрирующий загрузку текста из текстового файла в Delphi–приложение и копирование выделенного фрагмента текста в буфер обмена.
Описание хода выполнения работы:
1 этап: Создание меню программы
Запустить систему программирования Delphi.
Создать Delphi – проект.
Со страницы Standart палитры компонентов поместила на форму один компонент TMainMenu1.
Двойным щелчком мыши активизировала компонент меню. Открылось окно конструктора меню. Открыла контекстное меню, нажав правую кнопку мыши, в появившемся окне выбрала команду Insert (рис. 12.1).

Рисунок 1
В инспекторе объектов в свойстве Caption ввела «Файл». Переместилась на пункт ниже и аналогичным образом ввела пункт «Открыть», затем пункт «Выход».
Создала остальные пункты меню, это показано на рисунке 12.2.

Рисунок 2
2 этап: Размещение и настройка компонентов приложения
Со страницы Standart палитры компонентов поместила на форму компонент Memo1.
Изменила значение следующих свойств:
ReadOnly:=tue – запрет на редактирование пользователем просматриваемого текста.
HideSelection:=false – помечать цвет выделенный текст.
ScrollBars:=ssBoth – наличие горизонтальной и вертикальной полос прокрутки.
Удалила текст «Memo1», содержащийся в окне Memo1.
Со страницы Dialogs палитры компонентов перенесла на форму компоненты, реализующие диалоговые окна открытия файлов OpenDialog и сохранения фалов SaveDialog.
Выполнила настройку диалогов. Для этого выделила компонент OpenDialog1. С помощью его свойства Filter задала типы файлов, появляющиеся в диалоге в выпадающем списке «Тип файла». Для этого в Object Inspector выделила это свойство и нажала кнопку с многоточием, чтобы вызвать редактор фильтров. В открывшемся окне редактора задала два фильтра:
Текстовые файлы — *.txt
Все файлы — *.*.
С помощью свойства FilterIndex задала номер фильтра, который будет по умолчанию показан пользователю в момент открытия диалога, номер равен 1.
Аналогично настроила диалог SaveDialog1. Кроме этого, в значение его свойства DefaultExt написала txt. Щелкнула по знаку плюс рядом со свойством Options и включила опцию ofOverwitePrompt, выбрав в случае если пользователь при сохранении файла напишет имя уже существующего файла, об этом будет выдано сообщение.
3 этап: Программирование обработчиков событий
Сначала объявила переменные, которые будут использоваться в программе: файловую переменную FileVar типа Текстовый файл, используемую для доступа к файлам, и строковую переменную St, в которой будут храниться текстовая строка. Для этого в тексте модуля, ниже ключевого слова implementation, записала:
Var
FileVar: TextFile;
St: string;
В главном меню, которое я спроектировала у пункта «Открыть» создала событие OnClick, щелкнув на нем мышью. Для команды Открыть раздела меню Файл в обработчик события OnClick написала следующий код:
If OpenDialog1.Execute Then
Memo1.Lines.LoadFromFile (OpenDialog1.FileName);
Для команды «Выход» раздела меню Файл в обработчик написала следующий код:
Сlose;
Для команды «Копировать» раздела меню Правка в обработчик написала следующий код:
Memo1.CopyToClipboard;
Для команды «Выделить» раздела меню Файл в обработчик написала следующий код:
Memo1.SelectAll;
4 этап: Модернизация приложения.
Добавила для пункта меню «Файл» подпункты: Создать, Сохранить как, Печать.
Добавила для пункта меню «Правка» подпункт «Найти».
Добавила пункт «Формат», содержащий команду «Шрифт».
После разделов «Сохранить как», «Печать» и «Выделить» вставила разделители. Для этого с помощью конструктора меню создала новый раздел. В значении его свойства Caption написала символ минус. Редактирование одного пункта представлено на рисунке 12.3.

Рисунок 3
Со страницы Dialogs палитры компонентов поместила на форму следующие диалоги: PrinterSetupDialog, PrintDialog, FontDialog.
Для упрощения алгоритма поиска текста удалила из диалога FindDialog1 некоторые опции:
frHideWholeWord:=true – отключение опции Только словом целиком;
frHideMatchCase:=true – отключение опции С учетом регистра;
frHideUpDown:=true – отключение опции Вверх и Вниз.
Для команды «Создать» раздела меню Файл в обработчик события OnClick написала следующий код:
Memo1.Clear;
Для команды «Открыть» раздела меню Файл в обработчик события OnClick написала следующий код:
If OpenDialog.Execute Then
Memo1.Lines.LoadFromFile (OpenDialog1.FileName);
Для команды «Сохранить как» раздела меню Файл в обработчик события OnClick написала следующий код:
If SaveDialog.Execute Then
Memo1.Lines.SaveToFile (OpenDialog1.FileName);
Для команды «установка принтера» раздела меню Файл в обработчик события OnClick написала следующий код:
PrinterSetupDialog1.Execute;
Написала обработчик события команды «Печать» раздела меню Файл. Для этого, сначала подключила модуль Delphi, который называется Printers. Фрагмент кода:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, Printers;
Затем задала событие OnClick для команды «Печать» раздела меню Файл и написала код, выполняющий печать текста, хранящегося в компоненте Memo1.
Обработчик этого события имеет вид:
procedure TForm10.N9Click(Sender: TObject);
var
printtxt:textfile;
i:integer;
begin
if printdialog1.execute then
begin
assignprn(printtxt);
for i:=0 to memo1.Lines.Count — 1 do
writeln(printtxt,memo1.Lines[i]);
closefile(printtxt);
end; end;
Для команды «Найти» раздела меню Правка в обработчик написала следующий код:
FindDialog1.Execute;
Для команды «Найти» раздела меню Правка в обработчик написала следующий код:
If FontDialog1.Execupe Then
Memo1.Font:=FontDialog1.Font;
Полный код разработанного проекта:
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, Printers;
type
TForm10 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
N2: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N11: TMenuItem;
N16: TMenuItem;
PrinterSetupDialog1: TPrinterSetupDialog;
PrintDialog1: TPrintDialog;
FindDialog1: TFindDialog;
FontDialog1: TFontDialog;
N17: TMenuItem;
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N15Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var Form10: TForm10;
implementation
var
fileVar: TextFile;
St:string;
{$R *.dfm}
procedure TForm10.N11Click(Sender: TObject);
begin finddialog1.Execute(); end;
procedure TForm10.N15Click(Sender: TObject);
begin
if fontdialog1.Execute then
memo1.Font:=fontdialog1.font; end;
procedure TForm10.N17Click(Sender: TObject);
begin
if Opendialog1.execute then memo1.Lines.LoadFromFile(opendialog1.filename);
end;
procedure TForm10.N2Click(Sender: TObject);
begin
memo1.clear;
memo1.ReadOnly:=false; end;
procedure TForm10.N3Click(Sender: TObject);
begin printersetupdialog1.execute; end;
procedure TForm10.N4Click(Sender: TObject);
begin close; end;
procedure TForm10.N6Click(Sender: TObject);
begin memo1.CopyToClipboard; end;
procedure TForm10.N7Click(Sender: TObject);
begin memo1.SelectAll;end;
procedure TForm10.N8Click(Sender: TObject);
beginif savedialog1.Execute then
memo1.Lines.SaveToFile(savedialog1.filename);end;
procedure TForm10.N9Click(Sender: TObject);
var
printtxt:textfile;
i:integer;
begin if printdialog1.execute then
begin
assignprn(printtxt);
for i:=0 to memo1.Lines.Count — 1 do
writeln(printtxt,memo1.Lines[i]);
closefile(printtxt); end; end; end.
Вывод: В ходе лабораторного занятия создала проект с использованием компонентов стандартных диалогов. В ходе создания проекта приобрела навыки настройки свойств и программирования обработчиков событий компонентов диалога OpenDialog и SaveDialog в системе Delphi.

Оставить комментарий