TOpenDialog, TSaveDialog, TOpenPictureDialog и TSavePictureDialog
Delphi, Програма и интерфейс, Диалози и рамки
Превод на едноименната статия от delphi.about.com
Стандартни диалогови прозорци
Почти всяко приложение на Windows използва стандартните диалогови прозорци, вградени в операционната система, за отваряне и запазване на файлове, търсене на текст, печат, избор на шрифт или задаване на цвят.
В тази статия ще разгледаме основните свойства и методи на тези диалогови прозорци и ще се съсредоточим по-специално върху диалоговите прозорци за отваряне и запазване.
Стандартните диалогови прозорци могат да бъдат намерени в панела с компоненти в раздела Диалогови прозорци. За да започнете да използвате даден диалогов прозорец, е достатъчно да го поставите във формата. Стандартните компоненти на диалоговия прозорец са невидими, така че не можете да промените дизайна на такъв диалогов прозорец по време на разработката на приложение.
TOpenDialog и TSaveDialog
Диалоговите прозорци Отваряне на файл и Запазване на файл споделят няколко свойства. Отваряне на файл се използва главно за избиране и отваряне на файлове, докато диалоговият прозорец Запазване на файл (използван също като диалогов прозорец Запазване като) се използва за получаване на име на файл от потребителя, за да се запише файлът. След това ще разгледаме някои от важните свойства на TOpenDialog и TSaveDialog:
Свойството Options е предназначено за настройка на окончателния изглед на прозореца. Например със следния код:
ние ще позволим на потребителя да избере множество файлове и също ще предизвикаме генериране на съобщение за грешка, ако потребителят избере несъществуващ файл.
Свойството InitialDir се използва за указване на директорията, която ще се показва при създаването на диалоговия прозорец. Следният код ще зададе първоначалната директория, от която е стартирано приложението:

Можете също да настроите филтъра програмно. Филтърната линия трябвасъдържат описание и разширение за дадения тип файл, разделени с вертикална лента:
Свойство FileName. Когато потребителят щракне върху бутона OK в диалоговия прозорец, това свойство ще съдържа пълния път и името на избрания файл.
Отваряне на диалогов прозорец
За да създадете и покажете стандартен диалог, трябва да изпълните метода Execute за необходимия диалог. С изключение на диалоговите прозорци TFindDialog и TReplaceDialog, всички други диалогови прозорци се показват модално.
Всички стандартни диалогови прозорци ви позволяват да определите дали потребителят е натиснал бутона "Отказ" (или е натиснал ESC). Ако методът Execute е върнал True, тогава потребителят е натиснал OK или е щракнал два пъти върху файла, или е натиснал Enter на клавиатурата, в противен случай, ако е натиснат бутонът Cancel, клавишът Esc или Alt-F4, ще бъде върнато False.
Този код показва диалоговия прозорец за отваряне на файл и ако потребителят щракне върху „Отвори“, ще се покаже името на избрания файл.
Само използване на код
За да работите с диалоговия прозорец за отваряне (или който и да е друг), без да поставяте компонент OpenDialog във формуляра, можете да използвате следния код:
Имайте предвид, че преди да извикате Execute, можете да зададете различни свойства на компонента OpenDialog.
TOpenPictureDialog и TSavePictureDialog
И сега предлагам да приложим теорията на практика. Нека създадем прост бележник и да видим как работят диалоговите прозорци Отваряне и Запазване:

За да създадете бележник, направете следното:
- Стартирайте Delphi и изберете File-New Application от менюто.
- Поставете Memo, OpenDialog, SaveDialog и два бутона във формуляра.
- Преименувайте Button1 на btnOpen и Button2 на btnSave.
1. Поставете следния код в събитието FormCreate на формуляра:
Този код задава някои свойства на диалоговия прозорец Отваряне, както е описано в началото на статията.
2. Добавете следния код към събитието Onclick за бутоните btnOpen и btnSave:
Сега можете безопасно да започнете проекта:

СтатиятаTOpenDialog, TSaveDialog, TOpenPictureDialog и TSavePictureDialog в раздела Програмни и интерфейсни диалогови прозорци и рамки може да бъде полезна за разработчиците на Delphi и FreePascal.