Стандартные диалоги.

Стандартные диалоги.

В основе диалогов лежат совсем другие объекты, чем 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.

Источник: http://bonanzas.rinet.ru , http://kol.mastak.ru



Опубликовал admin
5 Май, Понедельник 2003г.



Программирование для чайников.