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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!