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

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

•  TDictionary Custom Sort  6 686

•  Fast Watermark Sources  6 462

•  3D Designer  9 402

•  Sik Screen Capture  6 804

•  Patch Maker  7 216

•  Айболит (remote control)  7 199

•  ListBox Drag & Drop  6 046

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

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

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

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

•  Canvas Drawing  5 916

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

•  Поворот изображения  5 146

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

•  Paint on Shape  2 935

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

•  Головоломка Paletto  3 077

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

•  Пазл Numbrix  2 559

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

•  Игра HIP  2 275

•  Игра Go (Го)  2 186

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

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

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

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

•  HEX View  2 678

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

 
скрыть

  Форум  

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

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