На этом шаге мы рассмотрим некоторые из методов, используемых при работе с диалогами.
Рассмотрим еще один тип элементов управления в приложении Word - элементы, собранные в коллекцию
Dialogs. У этой коллекции не очень много свойств. Нас интересуют два из них - количество элементов
коллекции (свойство Count) и набор элементов коллекции Item(i:integer), где i - индекс диалога
(диалогового окна) в коллекции. Чтобы ознакомиться со всем списком и значениями индексов и аргументов диалогов,
достаточно обратиться к нужной странице справочной системы Word. Здесь мы рассмотрим только общие
принципы вызова диалогов Word из программ, разработанных в среде Delphi, и несколько
примеров использования диалогов. У каждого диалога есть методы и свойства. Есть общие свойства диалогов и
свойства, присущие каждому отдельному диалогу. Например: свойство type: integer - тип диалога (это
свойство совпадает с индексом диалога в коллекции и есть у каждого диалога); свойство Name: string -
принадлежит диалогу, тип которого определяется константой wdDialogFileSaveAs, и не может принадлежать
диалогу типа wdDialogConnect. Это нетрудно проверить - достаточно попытаться использовать свойство
Name для диалога второго типа - сразу возникнет ошибка выполнения. Для каждого диалога есть четыре
метода, предназначенных для запуска или отображения диалогового окна. Рассмотрим их.
Метод Execute выполняет действия, связанные с диалогом, но без отображения самого диалога. Например,
вызвав этот метод для диалога wdDialogFileOpen, можно открыть файл так же, как с помощью метода Open
коллекции Documents. Вот пример процедуры.
procedure TForm1.Button2Click(Sender: TObject); //Открытие файла без отображения диалогового окна const wdDialogFileOpen=80; var MSD:Variant; begin MSD:=W.Dialogs.Item(wdDialogFileOpen); MSD.Name:=InputBox('Введите имя файла','','*.doc'); MSD.Execute; end;
Результат ее работы изображен на рисунке 1.
Рис.1. Результат работы приложения
Вот полный текст приложения.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj, CheckLst, Spin; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var W: Variant; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание объекта Word и его визуализация begin W:=CreateOleObject('Word.Application'); W.Visible:=True; end; procedure TForm1.Button2Click(Sender: TObject); //Открытие файла без отображения диалогового окна const wdDialogFileOpen=80; var MSD:Variant; begin MSD:=W.Dialogs.Item(wdDialogFileOpen); MSD.Name:=InputBox('Введите имя файла','','*.doc'); MSD.Execute; end; end.
Текст этого приложения можно взять здесь (5,6 Кб).
Заметим, что констант, определяющих тип диалога, достаточно много. В заключение перечислим некоторые значения
этих констант.
Таблица 1. Константы, определяющие тип диалога
Константа | Значение |
---|---|
wdDialogConnect | 420 |
wdDialogCopyFile | 300 |
wdDialogEditFind | 112 |
wdDialogEditPasteSpecial | 111 |
wdDialogEditReplace | 117 |
wdDialogFileFind | 99 |
wdDialogFileNew | 79 |
wdDialogFileOpen | 80 |
wdDialogFilePageSetup | 178 |
wdDialogFilePrint | 88 |
wdDialogFileSaveAs | 84 |
wdDialogFormatAddrFonts | 103 |
wdDialogFormatFont | 174 |
На следующем шаге мы закончим изучение этого вопроса.