Адрес этой странички : http://doc-prg.narod.ru/art_00701/art_00701-01.htm
Дата обновления: 15.05.2009
© 15.05.2009 Сергей Попов
Rational
Rose.
Информационный обмен с
использованием механизма OLE Automation.
Установка и закрытие соединения с Rational Rose.
Для установки соединения с Ratioanl Rose можно
использовать следующий код :
Листинг 1.1
function RRose_Open(YesVisible : boolean = true) : variant;
//Открыть Rational Rose
//(как OLE Automation Server)
//YesVisible - Видимость главного окна приложния
begin
Result := CreateOleObject('Rose.Application');
Result.Visible:=YesVisible;
end;
Чтобы закрыть соединение :
Листинг 1.2
procedure RRose_Close(var RRose : variant);
//Закрыть Rational Rose
//RRose - ссылка на Rational Rose (OLE Automation server)
begin
if not VarIsEmpty(RRose) then begin
RRose.Visible:=false;
RRose.Exit;
RRose:=UnAssigned;
end;
end;
Здесь следует отметить, что для корректного закрытия соединения с Rational Rose необходимо сначала сделать невидимым главное окно приложения :
RRose.Visible:=false;
Затем, вызвать метод Exit программы Rational Rose :
RRose.Exit;
Установка соединения с Rational Rose, как OLE
Automation server.
1. Создадим простую форму приложения.
1. В секции public
класса формы объявим переменную и метод :
Листинг 2.1
public
{ Public declarations }
//указатель на Rational Rose, как OLE Automation server
rrose_ole : variant;
//Визуализация активности соединения с Rational Rose
function Detect_Connect_to_RRose : Boolean;
end;
Реализация метода Detect_Connect_to_RRose представлена ниже.
Листинг 2.2
function TForm1.Detect_Connect_to_RRose : Boolean;
//Визуализация активности соединения с Rational Rose
begin
Result:=false;
lbl_YesConnect.Visible:=false;
if
not VarIsEmpty(rrose_ole) then begin
Result:=true;
lbl_YesConnect.Visible:=true;
end;
end;
2. Создадим обработчик
события "нажатие на кнопку "1" (открыть
соединение).
Листинг 2.3
procedure TForm1.btn1Click(Sender: TObject);
//Открыть соединение с Rational Rose
begin
//сначала закрываем Rational Rose, если соединение было активным
RRose_Close(rrose_ole);
Detect_Connect_to_RRose;
//Теперь делаем попытку установки соединения с Rational Rose
rrose_ole := RRose_Open(True);
Detect_Connect_to_RRose;
end;
3. Создадим обработчик события "нажатие на кнопку "2" (закрыть соединение).
Листинг 2.4
procedure TForm1.btn2Click(Sender: TObject);
//Закрыть соединение с Rational Rose
begin
RRose_Close(rrose_ole);
Detect_Connect_to_RRose;
end;
Теперь посмотрим (как это работает) на практике.
4. Скомпилируем и
запустим наше приложение.
5. Вид экрана после нажатия на кнопку "1" :
И через некоторое время :
Как видно, программа Rational Rose
запустилась в роли OLE Automation server.
И, в данном случае, была сразу же открыта
пустая заготовка для модели.
6. Теперь, "нажмем" на кнопку "2".
Как видно, несмотря на то, что мы не
редактировали модель и вообще не
производили никаких действий - программа
Rational Rose все равно выдает запрос на
подтверждение.
Как мы увидим далее, то же самое происходит
и с моделями, загружаемыми из файла.
А также рассмотрим один из способов, как с
этим бороться.
Вид главного окна нашего приложения после закрытия соединения с Ratioanl Rose представлен ниже.
Исходные тексты иллюстрирующего примера здесь: rrose_ole_01.zip (231 кб)
© 15.05.2009 Сергей Попов