В основе диалогов лежат совсем другие объекты, чем PControl (для каждого свой). KOL предлагает для работы 3 вида диалога
Обьект | Диалог |
POpenSaveDialog | открыть или сохранить файл |
POpenDirDialog | выбрать директорию |
PColorDialog | выбрать цвет. |
Их конструкторы:
function NewOpenSaveDialog( const Title, StrtDir: String; Options: TOpenSaveOptions ): POpenSaveDialog; |
Title - заголовок диалога
StrDir - начальная директория для работы
В Options может быть следующее:
Для диалога открытия файла (Open File), надо свойство OpenDialog
установить в true, и соответственно для диалога сохранения файла OpenDialog
:= false.
В остальном, этот диалог идентичен своему VCL аналогу.
function NewOpenDirDialog( const Title: String; Options: TOpenDirOptions ): POpenDirDialog; |
Title - заголовок диалога
В Options может быть следующее:
Выбранный путь можно узнать через свойство Path
function NewColorDialog( FullOpen: TColorCustomOption ): PColorDialog; |
В FullOpen следующее:
Пример: небольшой и мало функциональный, но текстовый редактор ;-)
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.
Источник: http://bonanzas.rinet.ru , http://kol.mastak.ru
|
Программирование для чайников.
|