TOpenPictureDialog и TSavePictureDialog

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

Тема: «Создание и использование диалоговых окон»

 

Цель работы:

1. Изучение компонентов, предназначенных для работы с диалоговыми окнами.

2. Изучение компонентов для создания меню.

3. Создание программы для просмотра и запуска созданных в предыдущих лабораторных работах приложений.

 

 

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

Страница Dialogs представлена на рисунке 1.

 

Рисунок 1 – Страница Dialogs

 

Таблица 1 – Компоненты страницы Dialogs

Компонент Название Описание
«Открыть файл» OpenDialog Предназначен для создания окна диалога «Открыть файл». Компонент не визуальный.
«Сохранить файл как...» SaveDialog Предназначен для создания окна диалога «Сохранить файл как...». Компонент не визуальный.
«Выбрать каталог» SelectDirectoryDialog Предназначен для создания окна диалога «Выбор каталога (папки)». Компонент не визуальный.
«Цвет» ColorDialog Предназначен для создания окна диалога «Цвет». Компонент не визуальный.
«Шрифты» FontDialog Предназначен дли создания окна диалога «Шрифты». Компонент не визуальный.
«Найти» FindDialog Предназначен для создания окна диалога «Найти». Компонент не визуальный.
«Заменить» ReplaceDialog Предназначен для создания окна диалога «Заменить». Компонент не визуальный.
«Полнофункциональные диалоги» TaskDialog Предназначен для создания полнофункциональных диалогов, например Windows.
«Открыть рисунок» OpenPictureDialog Предназначен для создания окна диалога «Открыть рисунок». Компонент не визуальный.
«Сохранить рисунок как...» SavePictureDialog Предназначен для создания окна диалога «Сохранить рисунок как...». Компонент не визуальный.
«Календарь» CalendarDialog Диалог выбора даты. В диалоге пользователь может выбрать дату, которую затем можно будет вставить прямо в текст.
«Калькулятор» CalculatorDialog Диалог-калькулятор. Очень полезен, особенно в бухгалтерских программах. Позволяет пользователю вывести калькулятор, сделать необходимые расчеты, и результат вставить в текст:
«Установка принтера» PriterSetupDialog Предназначен для создания окна диалога «Установка принтера». Компонент не визуальный.
«Печать» PrintDialog Предназначен для создания окна диалога «Печать». Компонент не визуальный.
«Параметры страницы» PageSetupDialog Диалог помогает выбирать параметры страницы при печати.

 

Компоненты страницы DIALOGS

Правила использования диалоговых панелей

Работа со стандартными диалоговыми окнами осуществляется в три этапа:

1.На форму помещается соответствующий компонент и осуществляется настройка его свойств. Следует обратить внимание на то, что компонент-диалог не виден в момент работы программы, видно лишь создаваемое им стандартное окно.

2. Осуществляется вызов стандартного для диалогов методом Execute, который создает и показывает настроенное окно на экране. Вызов этого метода обычно располагается внутри обработчика какого-либо события. После обращения к Execute на экране появляется соответствующее диалоговое окно. Окно диалога является модальным окном, поэтому сразу после обращения к нему дальнейшее выполнение программы приостанавливается до тех пор, пока пользователь не закроет окно.

3. Использование введенных из диалогового окна данных (имя файла, настройки принтера и т.д.) для продолжения работы программы.

TOpenDialog и TSaveDialog

Эти компоненты имеют идентичные свойства и различаются только внешним видом. Свойство FileName: (тип String) содержит маршрут поиска и имя выбранного файла при успешном завершении диалога программы. Для проверки наличия файла на диске глобальная функция FileExists Свойство Filter: String используется для фильтрации (отбора) файлов, показываемых в диалоговом окне. Это свойство можно устанавливать с помощью специального редактора или программно. Для доступа к редактору достаточно щелкнуть по кнопке в строке Filter окна инспектора объектов. При программном вводе фильтры задаются одной длинной строкой, в которой символы «|» служат для отделения фильтров друг от друга, а также для отделения описания фильтруемых файлов от соответствующей маски выбора. С помощью свойства DefaultExt: String[3] формируется полное имя файла, если при ручном вводе пользователь не указал расширение. В этом случае к имени файла прибавляется разделительная точка и содержимое этого свойства.

Настройка диалога может варьироваться с помощью следующих основных свойств, указанных в таблице 2.

 

Таблица 2 – Основные свойства компонента OpenDialog

Название Характеристика
DefaultExt Расширение имени файла по умолчанию. В зависимости от того, с каким типом файлов нам придется работать, такое у них будет и расширение. Если мы работаем с текстом, то лучше именам файлов давать расширение txt.
FileName Имя файла. Можно сразу же указать имя файла, с адресом и расширением, но обычно это свойство оставляют пустым. После того, как диалог сработает, и пользователь выберет файл для открытия, то в этом свойстве будет и адрес, и имя этого файла. А они нам будут нужны в методе: Memo1.LoadFromFile();
Filter Фильтр типов файлов. Здесь можно задать фильтрацию файлов по их типам, используя маску файлов. В маске знак "*" означает любое количество любых символов.
InitialDir Папка (директория, каталог), используемая по умолчанию. Здесь указывается адрес папки, с которой диалог начнет свою работу. Заполнять это свойство имеет смысл лишь тогда, когда нужные файлы у вас будут храниться в каком-то одном, конкретном месте.
Name Имя компонента.
Title Заголовок окна диалога. По умолчанию, он уже содержит нужный текст: "Открыть существующий файл".

 

TOpenPictureDialog и TSavePictureDialog

Специализированные диалоги для открытия и сохранения графических файлов являются расширенными вариантами компонентов TOpenDialog и TsaveDialog, в которых предусмотрены наличие стандартного фильтра для выбора графических файлов и панель предварительного просмотра.

TFontDialog

Компонент используется для вызова стандартной диалоговой панели выбора шрифтов и их характеристик. Свойство Device определяет тип устройства, для которого выбирается fdScreen - экран; fdPrinter - принтер; fdBoth - шрифты, поддерживаемые и экраном, и принтером. Диапазон возможных значений размеров шрифтов определяется свойствами MinFontSize и MaxFontSize. Значения этих свойств задаются в пунктах (1 пункт равен приблизительно 0,36 мм). Если свойства содержат 0, ограничения на размер шрифта отсутствуют. Свойство Options используется для настройки диалога. Данные свойства представлены в таблице 3.

 

Таблица 3 – Свойства компонента FontDialog

Название Характеристика
fdAnsiOnly Показывает только шрифты с набором символов Windows
fdTrueTypeOnly Показывает только TrueType-шрифты
fdEffects Включает в окно переключатели “Подчеркнутый” и “Зачеркнутый”, а также список выбора цвета шрифта
fdFixedPitchOnly Включает только моноширинные шрифты
fdForceFontExist Предупреждает о выборе несуществующего шрифта
fdNoFaceSel Запрещает выделение имени шрифта в момент открытия окна
fdNoOEMFonts Запрещает выбор MS-DOS-шрифтов
fdNoSimulations Исключает шрифты, которые синтезируются графическим интерфейсом Windows
fdNoSizeSel Запрещает выделение размера шрифта в момент открытия окна
fdNoStyleSel Запрещает выделение стиля шрифта в момент открытия окна
fdNoVectorFonts Исключает векторные шрифты
fdShowHelp Включает в диалоговое окно кнопку Help
fdWysiwyg Включает шрифты, которые поддерживаются и экраном, и принтером
fdLimitSize Включает ограничения на размер шрифта, заданные свойствами MaxFontSize и MinFontSize
fdScalableOnly Включает только масштабируемые шрифты (векторные и TrueType)
fdApplyButton Включает в окно кнопку “Применить“

TColorDialog

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

 

TPrintDialog

Компонент служит для создания стандартного диалогового окна для выбора параметров печати.

Основные свойства компонента указаны в таблицы 4.

 

Таблица 4 – Основные свойства компонента PrintDialog

Название Характеристика
property Collate: Boolean;   Если имеет значение True, то окно показывается с выбранным переключателем “Разобрать” (Collate). Если этот переключатель выбран, печать нескольких копий документа будет идти по копиям: сначала первая копия, затем вторая и т.д., в противном случае – по страницам: сначала все копии первой страницы, затем второй и т.д.
property Copies: Integer; Определяет количество копий (0 - одна копия)
property FromPage: Integer; Определяет начальную страницу печати
property MaxPage: Integer; Определяет верхнюю границу диапазона страниц для свойств FromPage, ToPage
property MinPage: Integer; Определяет нижнюю границу диапазона страниц для свойств FromPage, ToPage
property Options: TPrintDialogOptions; Определяет настройку окна: ро PrintToFile -печатать в файл; poPageNums - разрешает выбор диапазона страниц; poSelection -разрешает печать выбранного текста; poWarning - предупреждать пользователя о неустановленном принтере; poHelp – вставить в окно кнопку Help; poDisablePrintToFile – запрещает печать в файл
property PrintRange: TPrintRange; Определяет диапазон печатаемых страниц: prAll Pages - все страницы; prSelection -выделенный фрагмент текста; prPageNums -страницы по номерам
property PrintToFile: Boolean; Содержит True, если пользователь выбрал печать в файл
property ToPage: Integer; Определяет конечную страницу печати

TPrinterSetupDialog

Компонент создает окно настройки параметров принтера, вид которого зависит от типа принтера. Этот диалог взаимодействует с драйвером принтера и не возвращает в программу никакой информации, поэтому его метод Execute - процедура, а не функция.

 

TFindDialog

Стандартное диалоговое окно компонента TFindDialog используется для поиска фрагмента текста. Основные свойства данного компонента представлены в таблице 5.

 

Таблица 5 – Основные свойства FindDialog

Название Характеристика
property FindText: string; Указывает образец для поиска
property Left: Integer; Содержит горизонтальную позицию левого верхнего угла места появления окна
property Options: TfindOptions; Определяет настройку диалога
property Position: TPoint; Содержит горизонтальную и вертикальную позицию левого верхнего угла места появления окна
property Top: Integer; Содержит вертикальную позицию левого верхнего угла места появления окна

 

Для компонента определен следующий тип, использующийся в свойстве Options: TfindOptions. Его значения описаны в таблицы 6.

Таблица 6 – Значения свойства TFindDialog, компонента FindDialog

Название Характеристика
frDown Устанавливает поиск вперед по тексту
frDown frFindNext Сообщает программе, что пользователь нажал кнопку “Найти далее”
frHideMatchCase Убирает выбор в переключателе “С учетом регистра”
frHideWholeWord Убирает выбор в переключателе “Только слово целиком”
frHideUpDown Прячет кнопки выбора направления поиска
frMatchCase Устанавливает выбор в переключателе “С учетом регистра»
frDisableMatchCase Запрещает выбор “С учетом регистра“
frDisableUpDown Запрещает выбор направления поиска
frDisableWholeWord Запрещает выбор Только слово целиком
frReplace Используется в компоненте TReplaceDialog и указывает на необходимость замены текущего выбора
frReplaceAll Используется в компоненте Treplace Dialog и указывает на необходимость замены всех вхождений образца поиска
frWholeWord Устанавливает выбор в переключателе “Только слово целиком”
frShowHelp Включает в окно кнопку Help

TReplaceDialog

Компонент создает и обслуживает окно поиска и замены текстового фрагмента. Класс TReplaceDialog наследует большинство свойств классаTFind-Dialog. Дополнительно в компоненте определено свойство ReplaceText (тип String), в котором содержится текст замены, и событие OnReplace, которое возникает при нажатии кнопки “Заменить”.

 


Практическая часть

 

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

 

1. Создать новый проект. Изменить заголовок формы «Работа с текстом». Форма проекта представлена на рисунке 2.

 

Рисунок 2 – Форма проекта

 

2. Назвать форму TextEditor и сохранить проект под именем Editor.dpr. (Установите иконку приложения, используя свойство формы Icon)

3. Установить на форму компонент Panel1 и задайте его свойства

Align = alTop,

Caption = ‘’.

4. Установить на форму компонент Memo1 и задайте его свойства

Align = alClient,

Lines = ‘’,

WordWrap = TRUE,

ScrolBars = ssBoth,

HideSelection = False

//при переходе фокуса к другому компоненту не гасится выделение выделенного текста).

5. Установить на форму компонент OpenDialog1 со свойствами:

DefaultExt = TXT,

Filter = Текстовые файлы | *.txt | Все файлы | *.*

Title = Открытие текстового файла,

Options (установить в TRUE)

ofHideReadOnly - из окна диалога удаляется выключатель “Открыть только для чтения”

ofFileMustExist - генерируется сообщение об ошибке, если выбран несуществующий файл,

ofNoReadOnlyReturn - генерируется сообщение об ошибке, если выбран файл типа ReadOnly.

6. Установить на форму компонент SaveDialog1 со следующими свойствами

DefaultExt = TXT,

Filter = Текстовые файлы | *.txt | Все файлы | *.*

Title = Сохранение текстового файла,

Options (установить в TRUE)

ofHideReadOnly

ofNoReadOnlyReturn

ofOverwritePrompt //генерируется сообщение об ошибке, если выбран уже существующий файл.

7. Установить на панель кнопку с именем &Open и записать следующий обработчик события OnClick:

With OpenDialog1 do

if Execute then begin

Memo1.Lines.LoadFromFile(FileName);

Caption:='TextEditor - '+ExtractFileName(FileName);

SaveDialog1.FileName:=FileName;

FileName:='';

end;

8. Установить на панель кнопку с именем &Save и с обработкой события OnClick:

if SaveDialog1.FileName <> '' then begin

Memo1.Lines.SaveToFile(SaveDialog1.FileName);

//устанавливаем Modified в false, так как изменения уже сохранили:

Memo1.Modified:= false;

end

//иначе имя файла не известно, вызываем Сохранить как...:

else Button3Click(Sender);

9. Установить на панель кнопку с именем Save&As и с обработкой события OnClick:

With SaveDialog1 do

if Execute then begin

Memo1.Lines.SaveToFile(FileName);

Caption:='TextEditor - '+ExtractFileName(FileName);

end;

10. Установить на панель кнопку с именем E&xit и с обработкой события OnClick:

TextEditor.Close;

11. Поместить на форму компонент FontDialog1 с обработкой события OnApply:

Memo1.Font:=FontDialog1.Font;

12. Разместить на панели кнопку с именем &Font и с обработкой события OnClick:

With FontDialog1 do

if Execute then Memo1.Font:=Font;

13. Установить на форму компонент PrinterSetupDialog1.

14. Установить на панель кнопку с именем Print Set&up и с обработкой события OnClick:

PrinterSetupDialog1.Execute;

Примечание: Процедуры работы с принтером находятся в модуле Printers. Укажите его имя в списке uses раздела interface модуля Unit1.

17. Поместить на панель кнопку с именем &Find и с обработкой события OnClick:

FindDialog1.Execute;

Примечание: Предусмотрите выдачу предупреждающего сообщения при достижении конца текста (в методических рекомендациях приведён звуковой сигнал).

18. Поместить на панель кнопку с именем &Replace и с обработкой события OnClick:

ReplaceDialog1.Execute;

19. Поместить на форму компоненты FindDialog1 и ReplaceDialog1 и установить в TRUE следующие общие свойства группы Options

frHideMachCase - прячет выключатель “С учетом регистра”,

frHideWholeWord - прячет выключатель “Только слово целиком”.

frHideUpDown - прячет кнопки выбора направления поиска.

20. Определить обработчик события OnFind компонента FindDialog1;

В таблице 7 представлен обработчик события для FindDialog1.

 

Таблица 7 – Обработчик события OnFind компонента FindDialog1

Текст обработчика Комментарий
var Buff,FT,P : PChar; BuffLen : Integer; Описание вспомогательных переменных.
Begin With Sender as TfindDialog do begin В начале процедуры указано, что используемые ниже свойства и методы будут относиться к объекту Sender (источник события), который рассматривается как объект класса TFindDialog.
BuffLen:=Memo1.GetTextLen+1; GetMem(Buff,BuffLen); Memo1.GetTextBuf(Buff,BuffLen); Текст из Memo1 копируется в динамическую переменную Buff. Для этого в BuffLen заносится длина текста, под переменную Buff отводится память и выполняется копирование.
GetMem(FT,Length(FindText)+1); StrPCopy(FT,FindText); Аналогично в динамическую переменную FT копируется содержимое строки поиска.
P:=Buff+Memo1.SelStart+ Memo1.SelLength; В переменную P заносится адрес начала поиска.
P:=StrPos(P,FT); В переменную P заносится адрес подстроки, совпавшей с образцом для поиска.
If P=Nil then MessageBeep(0) Если адрес нулевой (образец не найден), то генерируется звуковой сигнал.
Else begin Memo1.SelStart:=P-Buff; Memo1.SelLength:= Length(FindText) end; Иначе, если образец найден, он выделяется в Memo1.
FreeMem(FT); FreeMem(Buff,BuffLen); В завершении процедуры разрушаются динамические переменные.

 

21. Для компонента ReplaceDialog1 в качестве обработчика события OnFind указать (в инспекторе объектов) обработчик этого же события компонента FindDialog1 (вот для чего в этой процедуре строка поиска FindText берется не у конкретного компонента FindDialog1 или ReplaceDialog1, а у источника события Sender).

22. Для компонента ReplaceDialog1 ввести текст обработчика события OnReplace. В таблице 8 указан обработчик события для ReplaceDialog1.

 

Таблица 8 – Обработчик OnReplace для компонента ReplaceDialog1.

Текст обработчика Комментарий
With ReplaceDialog1 do Repeat Организован цикл.
if Memo1.SelText<>FindText then FindDialog1Find(Sender); Если выделенный фрагмент не совпадает с образцом поиска, то вызовом обработчика события OnFind компонента FindDialog1 найти следующий совпадающий фрагмент.
if Memo1.SelLength=0 then Break; Если фрагмент не найден, то завершить цикл.
Memo1.SelText:=ReplaceText; Заменить выделенный фрагмент образцом для замены.
until not (frReplaceAll in Options); Если не выбран режим “Заменить все”, то остановить цикл.

 

23. Поместите компонент ColorDialog1.

24. Создайте кнопку Color, и создайте для него обработчик OnCkick:

if colordialog1.Execute then

memo1.Color:=colordialog1.Color;

25. Добавьте на форму компонент MainMenu(вкладка Standart). Со следующей структурой:

1.Файл:

- &Открыть

- &Сохранить

- &Сохранить как

- &Печать

- &Найти

- &Заменить

2. Правка:

- Цвет

- Шрифт

В качестве обработчика события OnClick указать обработчик этого же события компонентов Button. (Например, для пункта меню Открыть, событие OnClick(Button1Click)).

 

Отчет должен содержать:

1. Титульный лист

2. Цель работы

3. Формулировку задания

4. Порядок выполнения работы

5. Программный код всех процедур

6. Выводы по работе.

 

 


Дата добавления: 2022-01-22; просмотров: 28; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!