скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Урок 5 - Стандартные диалоги



Ведущий раздела KOL и MCK: Анатолий aka XVeL
Автор: Борис Моренко
WEB-сайт: http://kolmck.net/

В основе диалогов лежат совсем другие объекты, чем 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.
На экране результат будет примерно следующий:

      

Результат примера






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook