Урок 5 - Стандартные диалоги
Ведущий раздела KOL и MCK: Анатолий aka XVeL
Автор: Борис Моренко
WEB-сайт: http://kol.mastak.ru
Полную версию библиотеки KOL и MCK можно скачать здесь.
В основе диалогов лежат совсем другие объекты, чем PControl (для
каждого свой). KOL предлагает для работы 3 вида диалога
Обьект |
Диалог |
POpenSaveDialog |
открыть или сохранить файл |
POpenDirDialog |
выбрать директорию |
PColorDialog |
выбрать цвет. |
Их конструкторы:
NewOpenSaveDialog( const Title, StrtDir: String; Options: TOpenSaveOptions ): POpenSaveDialog;
Title - заголовок диалога StrDir - начальная
директория для работы
В Options может быть следующее:
- OSCreatePrompt - При выборе имени не существующего файла панель
запросит, нужно ли создать файл.
- OSExtensionDiffent -
- OSFileMustExist - Предупреждать при вводе имени не существующего
файла.
- OSHideReadonly - Скрыть кнопку "Только чтение"
- OSNoChangedir - Поиск файлов начинать в первоначально заданном
каталоге
- OSNoReferenceLinks -
- OSAllowMultiSelect -
- OSNoNetworkButton - Скрыть и отключить кнопку Network
- OSNoReadonlyReturn - Запретить выбор файла с атрибутом "только
чтение" и в защищенном от записи каталоге
- OSOverwritePrompt - При сохранении файла предупреждать, если файл с
указанным именем уже существует
- OSPathMustExist -Можно вводить только существующее полное имя файла
- OSReadonly - Включить кнопку "Только чтение"
Для диалога открытия файла (Open File), надо свойство OpenDialog
установить в true, и соответственно для диалога сохранения файла
OpenDialog := false. В остальном, этот диалог идентичен своему
VCL аналогу.
NewOpenDirDialog( const Title: String; Options: TOpenDirOptions ): POpenDirDialog;
Title - заголовок диалога
В Options может быть следующее:
- odBrowseForComputer -
- odBrowseForPrinter -
- odDontGoBelowDomain -
- odOnlyFileSystemAncestors -
- odOnlySystemDirs -
- odStatusText
Выбранный путь можно узнать через свойство Path
NewColorDialog( FullOpen: TColorCustomOption ): PColorDialog;
В FullOpen следующее:
- ccoFullOpen - кроме базовой палитры показывается и
дополнительная
- ccoShortOpen - сначала показывается только базовая палитра но
доступна и дополнительная
- ccoPreventFullOpen - доступна только базовая палитра цветов
Пример: небольшой и мало функциональный, но текстовый редактор ;-)
program Primer;
uses
Windows,
messages,
KOL;
{$R *.RES}
var
form,
PanTools,
REdit,
butOpen,
butSave : PControl;
procedure clikButOpenSave(Dummy : Pointer; Sender : PControl);
var
Dialog : POpenSaveDialog;
title : string;
begin
if sender = butOpen then //определяем что за кнопка
begin
Dialog.title := 'Открыть';
Dialog.OpenDialog := TRUE;
REdit.Clear;
end
else
begin
Dialog.title := 'Сохранить как...';
Dialog.OpenDialog := FALSE;
end;
if Dialog.Execute then
if sender = butOpen then
REdit.RE_LoadFromFile(Dialog.Filename, reText, false)
else
REdit.RE_SaveToFile(Dialog.Filename, reText,false);
form.StatusText[0] := PChar(Dialog.Filename);
end;
begin
form := NewForm(Applet, 'Редактор');
Dialog := NewOpenSaveDialog(title, '',[]) ;
panTools := NewPanel(form, esRaised).SetAlign(caTop);
panTools.Height := 35;
REdit := NewRichEdit(form, []).SetAlign(caClient);
butOpen := NewButton(panTools, 'Open').SetSize(50, 25);
butSave := NewButton(panTools, 'Save as').SetSize(60, 25).PlaceRight;
butOpen.OnClick := TOnEvent(MakeMethod(nil, @clikButOpenSave));
butSave.OnClick := TOnEvent(MakeMethod(nil, @clikButOpenSave));
run( form );
end.
На экране результат будет примерно следующий:
|