Читаем Delphi. Трюки и эффекты полностью

Листинг 2.25.

Окно сохранения файла

function ShowSave(strFilter: string; nFilterIndex: Integer = 0;

strInitFileName: string = \'\

strTitle: string = \'Сохранение файла\'):string;

var

ofn: OPENFILENAME;

begin

ZeroMemory(Addr(ofn), SizeOf(ofn));

//Формирование буфера (260 символов)

SetLength(strInitFileName, MAX_PATH);

PrepareFilterString(strFilter);

//Заполнение структуры для диалога

ofn.lStructSize := SizeOf(ofn);

ofn.hWndOwner := hParentWnd;

ofn.hInstance := hAppInst;

ofn.lpstrFilter := PAnsiChar(strFilter);

ofn.nFilterIndex := nFilterIndex;

ofn.lpstrFile := PAnsiChar(strInitFileName);

ofn.nMaxFile := MAX_PATH;

ofn.lpstrTitle := pAnsiChar(strTitle);

ofn.Flags := OFN_PATHMUSTEXIST or OFN_OVERWRITEPROMPT;

//Отображение окна диалога и обработка результата

if (GetSaveFileName(ofn) = True) then

ShowSave := ofn.lpstrFile;

end;

Здесь дополнительно к упомянутому ранее флaгyOFN_PATHMUSTEXIST применен флаг OFN_OVERWRI ТЕ PROMPT для того, чтобы при указании имени уже существующего файла был задан вопрос о желании пользователя заменить старый файл.

Окно выбора цвета

Вызов следующего диалогового окна – окна выбора цвета – приводится в листинге 2.26.

...

Листинг 2.26.

Окно выбора цвета

function ShowChooseColor(lastColor: COLORREF = 0):COLORREF;

var

choose: TChooseColor;

begin

ZeroMemory(Addr(choose), SizeOf(choose));

//Заполнение структуры для диалогового окна

choose.lStructSize := SizeOf(choose);

choose.hWndOwner := hParentWnd;

choose.hInstance := hAppInst;

choose.rgbResult := lastColor;

choose.lpCustColors := Addr(colors);

choose.Flags := CC_RGBINIT or CC_ANYCOLOR or CC_FULLOPEN;

//Отображение окна диалога и обработка результата

if (ChooseColor(choose) = True) then ShowChooseColor :=

choose.rgbResult

else ShowChooseColor := lastColor;

end;

Здесь также заполняется структура похожего назначения. Используются следующие флаги диалогового окна:

• CC_RGBINIT – использовать значение поля rgbResult в качестве предустановленного значения цвета (по умолчанию как ранее выбранного);

• CC_ANYCOLOR – отображать все доступные предопределенные цвета (левая часть, рис. 2.4);

• CC_FULLOPEN – раскрывать панель подбора цвета (правая часть, рис. 2.4).

Рис. 2.4. Окно выбора цвета

Поясним, что за переменная, а точнее, ее адрес, сохраняется в поле lpCustColors – это массив из 16 значений типа COLORREF:

...

colors: array [1..16] of COLORREF;

Обратите внимание на 16 квадратов в левой нижней области окна (рис. 2.4) – это места для определенных пользователем цветов. Для заполнения этой области окна и используются значения из массива colors. Массив может быть как локальным, так и глобальным (что удобнее, так как значения определенных пользователем цветов сохраняются между вызовами диалогового окна).

Окно выбора шрифта

Для вывода диалогового окна выбора шрифта вполне подойдет функция, приведенная в листинге 2.27.

...

Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Мейерс , Скотт Майерс

Программирование, программы, базы данных / Программирование / Книги по IT