Адрес этой странички: http://d1cv8.narod.ru/top_003/d1cv8_20070924_001/d1cv8_20070924_001.htm
Дата: 24.09.2007
Интернет-приложение
к книге
"Delphi и 1С:Предприятие.Программирование информационного обмена"

Глава 3. Подключение к 1С.
Создание
Delphi-компонента, реализующего функционал подключения к 1Cv7.
Расширение функционала (продолжение).
Видимость окна программы
1Cv7.

 

В главе 3 книги (стр. 19-25) был рассмотрен пример подключения из внешнего приложения к системе 1Cv7 в режиме OLE Automation.
В статье от 27.08.2007 был рассмотрен процесс создания
Delphi-компонента (TConnectTo1Cv7 ), реализующего соответствующий функционал.
В предыдущей статье мы модифицировали компонент, расширив его функционал (добавили метод, позволяющий считывать список активных Пользователей базы данных
1Cv7).
Теперь попробуем еще расширить функционал компонента
TConnectTo1Cv7 , создав свойства и методы, позволяющие визуализировать окно программы 1Cv7 (подробно об этом см. глава 4, стр. 244-249 книги).

Здесь мы рассмотрим только "практику" ...


Запустим
Delphi и откроем пакет sp1Cv7_OLE.dpk.
По двойному щелчку мышкой на строке ConnectTo1Cv7
.pas откроем модуль компонента TConnectTo1Cv7 .

Сделаем следующие изменения (красный цвет)  в соотв.разделах  объявления класса компонента :

type
    TConnectTo1Cv7 = class(TComponent)
    private
        { Prvate declarations }
        ...
        ...
        //Флаг: если true - окно видимо,
        //в противном случае - нет
        fVisible1Cv7 : boolean;

        //Дескриртор окна приложения 1Cv7
        fhWnd1Cv7 : HWND;

        //Цепочка символов в заголовке окна приложения,
        //идентифицирующая окно, как окно программы 1Cv7
        fVisible1Cv7_Caption : string;

     protected
        { Protected declarations }
        ...
        ...
       
//Метод, "отвечающий" за изменение значения fVisible1Cv7
        procedure mSetVisible1Cv7(Value : boolean);

    
publiс
        { Public declarations }
        ...
        ...
       
//"Опубликуем" значение fhWnd1Cv7, как свойство (только для чтения)
        property hWnd1Cv7: HWND read fhWnd1Cv7;

        //Метод, визуализирующий окно программы 1Cv7
        function ShowThisWindow_1Cv7 : boolean;

        //Метод, скрывающий окно программы 1Cv7
        function HideThisWindow_1Cv7: boolean;

     published
        { Published declarations }
        ...
        ...
        //Свойство Visible1Cv7 (визуализация/скрытие окна программы 1Cv7)
        property Visible1Cv7: Boolean read fVisible1Cv7 write mSetVisible1Cv7 default FALSE;

        //Свойство Visible1Cv7_Caption (цепочка символов в заголовке окна,
        //идентифицирующая его, как окно программы 1Cv7)
        property Visible1Cv7_Caption: string read fVisible1Cv7_Caption write fVisible1Cv7_Caption;

    end;

 

Изменения в конструкторе класса :

constructor TConnectTo1Cv7.Create(AOwner: TComponent);
//Конструктор компонента
begin
    //Сначала (перед любыми нашими "действиями") вызываем "дух предков" :)
    inherited Create(AOwner);

    ...

    fVisible1Cv7 := FALSE;
    fhWnd1Cv7 := 0;
    fVisible1Cv7_Caption := Trim(fVisible1Cv7_Caption);
    if length(fVisible1Cv7_Caption)<=0 then fVisible1Cv7_Caption:='1С:Предприятие';

    ...
    ...

end;
 


Определим новый метод :

procedure TConnectTo1Cv7.mSetVisible1Cv7(Value : boolean);
//Установить значение свойства fVisible1Cv7
begin
    if Value then begin
        ShowThisWindow_1Cv7;
    end
    else begin
        HideThisWindow_1Cv7;
    end;
end;

Исходный текст метода ShowThisWindow_1Cv7 :

 

 

Исходный текст метода HideThisWindow_1Cv7 :

 

В модуле sp_Lib_Delphi определим новую функцию sp_GetHandleThisWindow 
(детальные разъяснения - см. глава 4 книги) :

 

Ниже представлен текст функции : sp_GetListOfWindowsNames

Более подробно об этих функции (а также о вспомогательных функциях) можно прочитать в книге на стр. 244-249 (глава-4).



Протестируем новую версию компонента.
 

Создадим новый Delphi-проект (рис.1).


Рис.1  Форма проекта и компонент TConnectTo1Cv7 на форме

 

Установим свойство Active нашего компонента в состояние TRUE.
На экране монитора появится диалоговое окно выбора информационной базы 1Cv7 (рис.2).


Рис.2  Диалоговое окно выбора информациионой базы 1Cv7

 

После того, как информационная база будет выбрана и будет нажата кнопка OK - программа 1Cv7 будет запущена в режиме сервера OLE Automation (но окно программы будет скрыто). 

Теперь установим свойство Visible1Cv7 нашего комонента в состояние TRUE.
На экране монитора появится окно программы 1Cv7 (рис.3) :


Рис.3 
Окно программы 1Cv7

 

Если установить свойство Visible1Cv7 нашего комонента в состояние FALSE, то окно программы 1Cv7 исчезнет с экрана монитора.

Вот, собственно, и все. 

Следует отметить, что здесь приведена лишь "практика".
"Подробности" - см. соотв.главу книги.


Исходные тексты новой версии компонента можно скачать здесь (
29 кб).
Исходные тексты "тестировщика" компонента можно скачать здесь (
4 кб)

 

Продолжение - создание аналогичного Delphi-компонента для системы  1Cv8.

 

 


(c) Сергей Попов, респ.Коми, г.Усинск, 2007  Письмецо написать ...


Hosted by uCoz