Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 297

•  TDictionary Custom Sort  6 344

•  Fast Watermark Sources  6 134

•  3D Designer  9 066

•  Sik Screen Capture  6 454

•  Patch Maker  6 869

•  Айболит (remote control)  6 856

•  ListBox Drag & Drop  5 731

•  Доска для игры Реверси  96 604

•  Графические эффекты  7 074

•  Рисование по маске  6 374

•  Перетаскивание изображений  5 247

•  Canvas Drawing  5 619

•  Рисование Луны  5 317

•  Поворот изображения  4 868

•  Рисование стержней  3 453

•  Paint on Shape  2 713

•  Генератор кроссвордов  3 589

•  Головоломка Paletto  2 882

•  Теорема Монжа об окружностях  3 687

•  Пазл Numbrix  2 422

•  Заборы и коммивояжеры  3 104

•  Игра HIP  2 062

•  Игра Go (Го)  1 989

•  Симулятор лифта  2 350

•  Программа укладки плитки  2 050

•  Генератор лабиринта  2 510

•  Проверка числового ввода  2 195

•  HEX View  2 521

•  Физический маятник  2 137

 
скрыть

  Форум  

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

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



Delphi Sources

Урок 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-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте