Адрес этой странички : http://doc-prg.narod.ru/art_00701/art_00701-01.htm 
Дата обновления: 15.05.2009

(c) Sergey Popov, Usinsk, Komi, 2007

© 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 Сергей Попов

 


Hosted by uCoz
-->