Переключение между вкладками (Delphi)

Автор niktoto, 11.03.14, 12:42:33

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

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

niktoto

Здравствуйте! Очень нужна помощь в таком вопросе. Если у меня активен документ 2D, я нажимаю кнопку на форме, создается 3D модель и вкладка с этой моделью становится активной. Как мне вернуться на документ 2D после создания 3D модели ?

Slaviation

const IKompasDocumentptr doc2d(application->ActiveDocument());
//Тут нажали кнопку на форме, создали 3D модель
doc2d->Active = TRUE; //Сделали  документ 2D активным

niktoto

#2
блин, а если другой способ: какое то сочетание клавиш чтобы уйти на предыдущую вкладку?
просто если у меня открыто несколько вкладок с 2Д документами, то какой из них он сделает активным?
вот как в шафте 2Д, жмешь сгенерировать 3Д модель, он строит деталь а затем отправляет обратно в 2Д документ в котором была работа. Как это там реализовано?

Slaviation

Так же и реализовано.
По событию нажатия кнопки, по которой создается 3D модель перво-наперво запомнить активный чертеж
const IKompasDocumentptr doc2d(application->ActiveDocument());
После создания 3D модели вернуть этому чертежу активность
doc2d->Active = TRUE
+ Благодарностей: 1

niktoto

спасибо ОГРОМНОЕ, все получилось.
Еще один вопросик возник, вот при нажатии на кнопку у меня форма сворачивается и вылетает фантом. И вот в то время когда я курсором управляю фантомом возможно ли сделать так, чтобы нельзя было выйти за рабочее "белое" пространство, границу сделать за которую курсор не мог выйти?? Надеюсь доступно обьяснил задумку :)

Slaviation

Если я правильно понял задумку, то могу предложить такую карту действий:
Определить координаты рабочего пространства (в простейшем случае, если это, к примеру, квадрат, то координаты его вершин).
Фантом, если я не ошибаюсь, рисуется в функции обратной связи, в которую среди прочего передаются текущие координаты курсора x и y.
В функции обратной связи проверять: вылазят ли  x и y  за границы рабочего пространства, и если да, то в функции обратной связи принудительно присваивать координатам курсора x и y значения на границе рабочего пространства.
Если не получится ограничить x и y, то можно попробовать просто не рисовать фантом или его часть за границей рабочего пространства.