В основе диалогов лежат совсем другие объекты, чем PControl (для каждого
свой). KOL предлагает для работы 3 вида диалога
Обьект |
Диалог |
POpenSaveDialog |
открыть или сохранить файл |
POpenDirDialog |
выбрать директорию |
PColorDialog |
выбрать цвет. |
Их конструкторы:
function NewOpenSaveDialog(
const Title, StrtDir: String; Options:
TOpenSaveOptions ): POpenSaveDialog; |
Title - заголовок диалога
StrDir - начальная директория для работы
В Options может быть следующее:
- OSCreatePrompt -
- OSExtensionDiffent -
- OSFileMustExist -
- OSHideReadonly -
- OSNoChangedir -
- OSNoReferenceLinks -
- OSAllowMultiSelect -
- OSNoNetworkButton -
- OSNoReadonlyReturn -
- OSOverwritePrompt -
- OSPathMustExist -
- OSReadonly -
Для диалога открытия файла (Open File), надо свойство OpenDialog
установить в true, и соответственно для диалога сохранения файла OpenDialog
:= false.
В остальном, этот диалог идентичен своему VCL аналогу.
function NewOpenDirDialog(
const Title: String; Options: TOpenDirOptions ):
POpenDirDialog; |
Title - заголовок диалога
В Options может быть следующее:
- odBrowseForComputer -
- odBrowseForPrinter -
- odDontGoBelowDomain -
- odOnlyFileSystemAncestors -
- odOnlySystemDirs -
- odStatusText
Выбранный путь можно узнать через свойство Path
function 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.
|