Программирование свойств MS Word. Элементы коллекции CommandBars

   
На этом шаге мы рассмотрим отображение и расположение элементов коллекции CommandBars.

   
Для начала получим список всех элементов, входящих в коллекцию CommandBars. Для этого, используя свойство
Count коллекции и свойство элемента Name, загрузим список элементов в объект типа
TCheckListBox (прокручиваемый список с флажками). Свойство Name имеет строковый тип и
представляет собой имя элемента. Его можно использовать для доступа к любому элементу коллекции аналогично
индексу, имеющему числовой тип. Рассмотрим следующий фрагмент исходного текста в Delphi.

procedure TForm1.Button2Click(Sender: TObject);
//Список элементов коллекции панелей и меню
var
  i:integer;
  S:string;
begin
  C := W.CommandBars;
  for i:=1 to C.Count do
  begin
    S:=C.Item[i].Name+' = '+ C.Item[i].NameLocal;
    CheckListBox1.Items.Add (S);
    CheckListBox1.Checked[i-1]:=C.Item[i].Visible;
  end;
end;

   
Данная процедура, последовательно перебирая все элементы коллекции, загружает их имена в объект CheckListBox1.
Дополнительно загружаются значения свойств NameLocal (имя, отображаемое в заголовке панели и соответствующее
национальной версии Word, в данном случае - русскоязычной) и Visible (режим отображения элемента в
окне Word). Далее, перемещаясь по списку имен загруженных в CheckListBox1 элементов, можно получить
или изменить значения других свойств выбранной панели. Полезны, например, свойства:

  • Position, Left, Top, Width, Height: Integer - положение и размеры панели;
  • RowIndex: Integer - номер строки, занимаемой панелью, когда панели собраны в какой-либо части главного окна;
  • если панель содержит кнопки или другие элементы
    управления, то свойство BuiltIn: Boolean имеет значение True, иначе - значение False;
  • Context - содержит строку со ссылкой на файл шаблона;
  • Protection: Integer - определяет режим защиты панели от изменений со стороны пользователя.

   
С целью изучения некоторых из этих свойств рассмотрим следующий фрагмент программы, который представляет собой
процедуру обработки для объекта CheckListBox1.

procedure TForm1.CheckListBox1Click(Sender: TObject);
//Выбор панели управления и изменение ее свойства Visible
begin
  C.Item [CheckListBox1.ItemIndex+1].Visible :=
    CheckListBox1.Checked[CheckListBox1.ItemIndex];

end;

procedure TForm1.ComboBox1Change(Sender: TObject);
//Изменение расположения панели
begin
  C.Item[CheckListBox1.ItemIndex+1].Position:=
      ComboBox1.ItemIndex;
end;

   
Результат работы приложения изображен на рисунке 1. В данном случае для панели Стандартная
свойство Position имеет значение msoBarLeft (0).


Рис.1. Результат работы приложения

   
Вот полный текст приложения.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj, CheckLst;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    CheckListBox1: TCheckListBox;
    ComboBox1: TComboBox;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure CheckListBox1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  W: Variant;
  C: Variant;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//Создание объекта Word и его визуализация
begin
  W:=CreateOleObject('Word.Application');
  W.Visible:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
//Список элементов коллекции панелей и меню
var
  i:integer;
  S:string;
begin
  C := W.CommandBars;
  for i:=1 to C.Count do
  begin
    S:=C.Item[i].Name+' = '+ C.Item[i].NameLocal;
    CheckListBox1.Items.Add (S);
    CheckListBox1.Checked[i-1]:=C.Item[i].Visible;
  end;
end;

procedure TForm1.CheckListBox1Click(Sender: TObject);
//Выбор панели управления и изменение ее свойства Visible
begin
  C.Item [CheckListBox1.ItemIndex+1].Visible :=
    CheckListBox1.Checked[CheckListBox1.ItemIndex];

end;

procedure TForm1.ComboBox1Change(Sender: TObject);
//Изменение расположения панели
begin
  C.Item[CheckListBox1.ItemIndex+1].Position:=
      ComboBox1.ItemIndex;
end;

end.

Текст этого приложения можно взять здесь (6,5 Кб).

   
На следующем шаге мы продолжим изучение этого вопроса.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий