Смотри второй скриншот, там справа в менеджере проекта подключены 2 библиотеки AutoCAD_2012_TLB и AutoCAD_2015_TLB
в uses они прописаны
Цитата:
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ComObj, Vcl.StdCtrls, Vcl.OleServer, AutoCAD_2012_TLB, AutoCAD_2015_TLB, Vcl.Menus;
|
вот в таком виде запускается только на машине где установлен Acad2015, на машине где установлен Acad2012 не запускается.
теперь если из uses убрать AutoCAD_2015_TLB, то будет запускаться на машине где установлен Acad2012.
Редактируя uses я пока и запускаю нужную версию, т.е. я пока не знаю как это реализовать нормально т.е. программно...
В этом и проблема я не пойму как это сделать ...
Запускается автокад по нажатию кнопки <Запустить Автокад>
но запускается только та версия библиотека которой прописана в uses
Теперь код запуска
Код:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ComObj, Vcl.StdCtrls, Vcl.OleServer, AutoCAD_2012_TLB, Vcl.Menus;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
ComboBox1: TComboBox;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
mess: TModalResult;
AcadApp: IAcadApplication;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Function GetAcadApplication(Visible: Boolean): IAcadApplication;
var
v : OleVariant;
begin
Try
// пытаемся присоединиться к уже запущенной копии AutoCad
v := GetActiveOleObject('AutoCAD.Application');
Except
// если не получилось присоединиться, то запускаем новую копию AutoCad
v:= CreateOleObject('AutoCAD.Application');
end;
// приводим переменную типа OleVariant к типу IAcadApplication
Result := IDispatch(v) as IAcadApplication;
// далее проверяем, надо ли делать приложение AutoCad видимым
if Visible then Result.Visible := True;
end;
....
//ЗАПУСК АВТОКАДА
procedure TForm1.Button1Click(Sender: TObject);
begin
// делаем так, что бы наша форма отображалась всегда поверх окна AutoCad
FormStyle:= fsStayOnTop;
AcadApp:= GetAcadApplication(true);
end;
Как реализовать управление версиями ?