Адрес этой странички:
http://d1cv8.narod.ru/top_003/d1cv8_20070828_001/d1cv8_20070828_001.htm Дата: 28.08.2007 Интернет-приложение к книге "Delphi и 1С:Предприятие.Программирование информационного обмена" |
Глава 3. Подключение к
1С.
Создание Delphi-компонента, реализующего
функционал подключения к 1Cv7.
Расширение функционала.
Список зарегистрированных баз данных 1Cv7.
В главе 3 книги (стр. 19-25) был рассмотрен пример подключения
из внешнего приложения к
системе 1Cv7 в режиме OLE Automation.
В
предыдущей статье был рассмотрен процесс создания Delphi-компонента
(TConnectTo1Cv7
), реализующего соответствующий функционал.
В контексте книги были подробно рассмотрены вопросы, связанные с формированием
списка зарегистрированных баз данных 1Cv7 (глава 12)
и списка активных Пользователей 1Cv7 (глава 13).
Логично было бы расширить функционал нашего компонента
TConnectTo1Cv7 таким образом, чтобы с его помощью можно
было бы решать и эти задачи.
Начнем со списка баз данных системы 1Cv7. Подробно об
этом см. стр. 553-557 книги (кто желает - может почитать).
Здесь мы рассмотрим только "практику" ...
Запустим Delphi и откроем пакет sp1Cv7_OLE.dpk.
По двойному щелчку мышкой на строке
ConnectTo1Cv7.pas
откроем модуль компонента
TConnectTo1Cv7 .
Сделаем следующие изменения (красный цвет) в соотв.разделах объявления класса компонента :
type
TConnectTo1Cv7 =
class(TComponent)
private
{ Prvate declarations }
...
...
//Ключ
системного регистра, где хранится список
//баз данных
системы 1Cv7
fKeyNameInReg : string;
protected
{ Protected declarations }
...
...
//метод, "отвечающий"
за изменение значения fKeyNameInReg
procedure mSetKeyNameInReg(Value : string);
publiс
{ Public declarations }
...
...
//Метод, считывающий зарегистрированный список баз данных системы 1Cv7
function Load_ListDB_1Cv7_from_Registry(ListDB : TStrings; YesDetect_1Cv7md :
boolean) : integer;
published
{ Published declarations }
...
...
//Ключ
системного регистра, где хранится список баз данных системы 1Cv7
property KeyNameInReg: string read fKeyNameInReg write mSetKeyNameInReg;
end;
Изменения в конструкторе класса :
constructor
TConnectTo1Cv7.Create(AOwner: TComponent);
//Конструктор
компонента
begin
//Сначала (перед любыми нашими "действиями") вызываем "дух предков" :)
inherited Create(AOwner);
fKeyNameInReg:=Trim(fKeyNameInReg);
if length(fKeyNameInReg)<=0 then fKeyNameInReg:='Software\1C\1CV7\7.7\Titles';
...
...
end;
Определим новый метод :
procedure
TConnectTo1Cv7.mSetKeyNameInReg(Value : string);
//Установить значение
свойства KeyNameInReg
begin
fKeyNameInReg:=Trim(Value);
if length(fKeyNameInReg)<=0 then fKeyNameInReg:='Software\1C\1CV7\7.7\Titles';
end;
В модуле sp_Lib_Delphi определим новую функцию (детальные разъяснения - см. глава 12 книги) :
Для компонента TConnectTo1Cv7 определим соотв.новый метод :
function TConnectTo1Cv7.Load_ListDB_1Cv7_from_Registry(ListDB
: TStrings;
YesDetect_1Cv7md : boolean) : integer;
//Метод, считывающий зарегистрированный список баз данных системы 1Cv7
begin
fKeyNameInReg:=Trim(fKeyNameInReg);
if length(fKeyNameInReg)<=0 then
fKeyNameInReg:='Software\1C\1CV7\7.7\Titles';
//Вызываем соотв. процедуру из модуля
sp_Lib_Delphi
Result:=Load_ListDB_from_Registry(fKeyNameInReg,ListDB,YesDetect_1Cv7md);
end;
Скомпилируем и протестируем новую версию компонента.
Создадим новый Delphi-проект (рис.1).
Рис.1 Форма проекта и компонент
TConnectTo1Cv7
на форме
Скомпилируем наш проект (для тестирования компонента) и
запустим на выполнение.
Результат тестирования нового свойства :
KeyNameInReg и метода
Load_ListDB_1Cv7_from_Registry
представлен на рис.2.
т
Рис.2 Результат тестирования метода
Load_ListDB_1Cv7_from_Registry
Естественно, что у каждого Пользователя (на его компьютере) список зарегистрированных баз данных может отличаться от того, что на рис.2 ...
Следует отметить, что здесь приведена лишь "практика".
"Подробности" - см. соотв.главу книги.
Исходные тексты новой версии компонента можно скачать
здесь (14 кб).
Исходные тексты "тестировщика" компонента можно скачать
здесь (7 кб)
Продолжение - расширение функционала компонента (список активных Пользователей базы данных 1Cv7).