ActiveX. Получение информации о контейнере

   
На этом шаге мы рассмотрим интерфейс, позволяющий получить информацию о контейнере.

   
При установке элемента управления ActiveX на форму можно с помощью инспектора объектов изменять его
свойства. Новые значения свойств можно проанализировать во время разработки или выполнения приложения, если использовать
интерфейс IAmbientDispatch. Для иллюстрации этой возможности в проект из предыдущего шага
добавим константу Verb3=4 (непонятно почему, но для значения константы Verb3=3 результат не получается!).

   
В секции initialization добавим строку:

    AddVerb(Verb3,'Container Info');

и метод PerformVerb перепишем:

procedure TButtonX.PerformVerb(Verb: Integer);
var
  Site:IOleClientSite;
  Ambients: IDispatch;
  S: String;
begin
  case Verb of
    Verb1: ShowMessage('Первое дополнительное меню выполнено');
    Verb2: ShowMessage('И второе тоже');
    Verb3:
      begin
         GetClientSite(Site);
         if Site<>nil then Site.QueryInterface(IDispatch, Ambients);
         if Ambients<>nil then
           begin
            S:='Имя компонента = '+IAmbientDispatch(Ambients).DisplayName+#13+#10+
               'Local ID = '+IntToStr(IAmbientDispatch(Ambients).LocaleID)+#13+#10+
               'Цвет формы = '+IntToStr(IAmbientDispatch(Ambients).BackColor)+
                      #13+#10+
               'Цвет контейнера = '+IntToStr(IAmbientDispatch(Ambients).ForeColor)+
                      #13+#10;
            ShowMessage(S);
           end;
      end;
  else inherited PerformVerb(Verb);
  end;
end;

   
После этого необходимо вновь зарегистрировать сервер в системном реестре, выполнив пункт меню Run | Register ActiveX Server (Выполнить | Зарегистрировать Сервер ActiveX)
(напомним, что это необходимо делать после любого редактирования исходного текста элемента ActiveX). Затем можно
поместить полученный ActiveX на форму и, при нажатии правой кнопки и выборе пункта меню Container Info, появится следующее окно диалога:


Рис.1. Окно диалога

   
Это окно содержит информацию о контейнере, в частности, имя компонента, как он определен на форме, информацию о цвете формы и контейнера.

   
Созданный компонент ActiveX можно взять здесь (267 Кб).

   
Отметим, что используя IAmbientDispatch, можно лишь опросить контейнер о значениях свойств, но изменить свойства контейнера нельзя.

   
Помимо вышеперечисленной информации с помощью IAmbientDispatch можно получить сведения о шрифте, единицах шкалы, расположении
текста на элементе управления ActiveX и о других свойствах. Полный перечень свойств можно найти в модуле AxCtrls.

   
На следующем шаге мы рассмотрим считывание свойств ActiveX инспектором объектов.



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

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