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