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

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

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

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

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

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

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

Подключение к уже запущенному Компасу

Автор Борис_С, 11.09.18, 16:30:40

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

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

Борис_С

Добрый день!
Мне нужно подключиться к уже запущенному Компасу и сделать окно Компаса активным,
т.е. переместить окно Компаса на передний план.
Я написал такой код:

procedure TForm1.Button1Click(Sender: TObject);
var
  window:HWND;
begin
  Screen.Cursor := crHourGlass;
  try
    kompas := KompasObject(GetActiveOleObject('Kompas.Application.5'));
    window:=findwindow(nil,PChar('КОМПАС-3D v17.1 (x64)'));
    if Window <> 0 then
    begin
      //ShowWindow(Window, SW_MINIMIZE);
      ShowWindow(Window, SW_SHOWMAXIMIZED);
      SetWindowPos(Window, HWND_TOP, 0, 0, 0, 0,
                     SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE);
    end;
  except
    kompas:=KompasObject(CreateOleObject('Kompas.Application.5'));
  end;
  kompas.Visible := true;
  Screen.Cursor := crDefault;
end;

В результате вместо текущего окна Компаса появляется другое окно, которым нельзя управлять.
Помогите, пожалуйста, разобраться.

11.09.18, 17:09:03 #1 Последнее редактирование: 11.09.18, 18:11:28 от Sabahs
Пример посмотрите там, есть http://forum.ascon.ru/index.php/topic,31615.msg254117.html#msg254117
Если, вдруг у Вас их нет, то вот вложение.

Борис_С

А в какой конкретно папке есть этот пример?
Где можно прочитать описание проектов в папках Delphi и DelpiAuto?

Борис_С

Я посмотрел код.
Там активация компаса выполняет оператор Kompas.Visible := true;
Этот оператор не помещает Компас на передний план.

Почему он должен помещать его на передний план, если фокус у Вашей программы?
Свойство делает компас видимым, отдайте ему фокус, можно вообще его оставить невидимым, а документы рисовать на панели по её HWND.

Борис_С

В программе пользователь устанавливает параметры запроса. По выбранным параметрам программа в Компасе формирует график,
а потом пользователь работает с этим графиком. Пользователю было бы удобно, если бы после формирования графика он высветился на экране.
Поэтому мне нужно переместить Компас на передний план.

Поэтому, Вам нужно писать не приложение, а библиотеку под компас, тогда пользователю будет на порядок удобнее работать.
Хотя для постройки графиков уже библиотека есть http://forum.ascon.ru/index.php/topic,30859.msg244510.html#msg244510.
Вы напишите более конкретно, что хотите сделать?

Борис_С

Мне нужно формировать графики.
Пример части такого графика приведен во вложении.

Пишите своё приложение, можно вообще использовать ksinvisible.exe, но на него нужна отдельная лицензия, можно делать так, как Вы делаете сейчас, но рисовать график в своём окне функцией Компаса в серой зоне.

Я так понимаю пользователю нужен только график на текущий момент времени и по определённому  маршруту, то ему Компас-3D видеть ненужно.
Можно использовать KGAX - ActiveX компонент, пример в SDK есть, находится в папке ksActiveX.

Борис_С

Что значит "рисовать график в своём окне функцией Компаса в серой зоне" ?
Чем мне поможет KGAX - ActiveX компонент? Что он реально мне может дать?

Во вложении видео, здесь рисует Компас-3D.
KGAX - по факту окно Компас-3D у Вас на форме, без интерфейса.

Борис_С

И все равно не понимаю. Чем это лучше для пользователя?
График при этом формируется быстрее или что-то еще?

Николай

Извиняюсь спросить: У вас график статичный, или изменяемый по времени или от каких либо параметров?

Борис_С

График статичный в том смысле, что при заданных параметрах он не меняется, но каждый раз он разный в зависимости от введенных пользователем параметров.

Цитата: Борис_С от 12.09.18, 14:05:51
И все равно не понимаю. Чем это лучше для пользователя?
График при этом формируется быстрее или что-то еще?
О чём Вы?
Да мне лично всё равно, делайте, как считаете нужным.