• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Как передать приложению компас parent панели delphi?

Автор Pass_OK, 31.07.09, 10:42:56

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Pass_OK

Как передать приложению Компас parent панели delphi?

IKompasAPIObject.Parent:=Panel1.Parent;

Не получается передать указатель на интерфейс формы, так как IKompasAPIObject.Parent только для чтения.
Цитата из справочника по SDK:
"Свойство доступно только для чтения. Возвращает указатель на интерфейс, у которого был взят данный объект."

Мне необходим свойство типа Twincontrol в которое я бы мог бы передать указатель на панель.


Обратный способ передачи свойства HWND фрейма документа Компас панели Delphi не подходит. Пожалуйста помогите разобраться. Нужно очень срочно.

Maxagg

проще понять чем вам помочь если бы вы написали как вы это хотите использовать  :)



NikOpoL

04.08.09, 15:17:06 #4 Последнее редактирование: 04.08.09, 15:27:36 от NikOpoL
Цитироватьvar
  kompas:KompasObject;
  wd:hwnd;
procedure TForm1.FormCreate(Sender: TObject);
begin
  kompas:=KompasObject(GetActiveOleObject('Kompas.Application.5'));
  kompas.ActivateControllerAPI;
  wd:=kompas.ksGetHWindow;
  windows.SetParent(wd,panel1.Handle);
  SetWindowLong(wd, GWL_STYLE, WS_VISIBLE);
  MoveWindow(wd, 0, 0, panel1.Width, panel1.Height, true);
end;

Переведенный выше код мне не подходит, так как здесь происходит передача окна компаса панели, а мне необходимо наоборот сделать что бы передавалась panel1  паренту объекта компас. В общем для объекта компас нужно сделать родителем объект panel.  В KGAX так делать можно
Цитировать
var
  Form1: TForm1;
  FKGAX: TKGAX;
  fileadr:string;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Execute();
fileadr:=OpenDialog1.FileName;
FKGAX := TKGAX.Create(self);

FKGAX.Parent:=Panel1;
FKGAX.AddDocument(fileadr);
FKGAX.ActivateDocument(1) ;
FKGAX.Align:=alClient;
end;


Меня интересует реализация через KompasAPI7_TLB или KompasAPI5_TLB или нормальный пример работы с KGAX

PS. Я и Pass_OK работаем над этим вопросом вместе

Maxagg

Напишите пожалуйста если это не секрет для чего вам передать parent
где должна располагаться панель в компасе
и почему именно панель, а не все приложение?  :)

на основе примеров inMyWindow и inKompasWindow показано что средствами API Windows
можно передавать родитель куда угодно

NikOpoL

05.08.09, 14:39:08 #6 Последнее редактирование: 05.08.09, 16:04:55 от NikOpoL
Я не передаю панель в компас, а наоборот передаю компас в панель. Это необходимо для создания просмотрщика. Но мне не подходит реализация предложенная в примерах (через HWND).Мне необходимо сделать для компаса родителем панель делфи (через Twincontrol).
Цитироватьможно передавать родитель куда угодно
Да можно но по вашей схеме получается Компас->Панель(потомок объекта компас), а мне нужно наоборот Панель->Компас(потомок панели).
Дело в том что свойство Parent у обьекта Компас через API является только для чтения и туда ничего занести не получается но в KGAX занести в Parent можно.

Я уже это реализовал через KGAX но там не настолько обширный функционал как в API.


NikOpoL

ЦитироватьЕсть такой вариант
http://depositfiles.com/ru/files/cwsrz9q0p

Хорошая программа,  только она мне никак не поможет. :-\

Maxagg

может тогда уж нарисуешь что тебе надо, а то тебя не понять что ты хочешь  и чем тебе помочь :%:

NikOpoL

У меня есть просмотрщик 3D. Так вот я хочу чтобы он открывал документы компас. Изображение выводится на стандартную панель в Делфе. Как вы мне посоветовали с передачей HWND от фрейма компаса мне не подходит так как его каждый раз нужно передавать. Мне нужно чтобы при создании потомков панели они наследовали и окно компаса.


NikOpoL

Цитировать
вывод на панель exe файл+проект
http://depositfiles.com/ru/files/ncmv1bq8m

Спасибо за пример. Вижу нужные мне части кода.