Ввод с клавиатуры через НЕмодальное окно

Автор Мikhаil, 14.12.05, 15:15:13

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

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

Мikhаil

А если в библиотеке на Builder C++ для КОМПАС 7+ сделать так:
Form1 = new TForm1(Application);
Form1->Show();
SystemControlStop("Exit");
delete Form1;
Но при этом на форму повесить окошко Edit, заставить пользователя ввести туда число и после того, как он нажмет ОК, в зависимости от введенного значения, выделить соответствующие объекты (например отрезки с такой длиной) из под формы, не закрывая окошко. Вроде бы все работает, но возникает проблема: КОМПАС перехватывает ввод с клавиатуры и не дает ввести в Edit некоторые символы (например 5 с цифровой клавиатуры), кроме того, если в Edit выделить содержимое и нажать на Del, то удалятся выделенные объекты КОМПАС, но не содержимое Edit. Как можно с этим бороться?

IrоnМаxxx

Чтобы по нажатию клавиши Delete не удалялись выделенные объекты из активного документа КОМПАС, перед выводом Вашего окна нужно запретить доступ к КОМПАСу
EnableTaskAccess(0);
После закрытия окна - вернуть право доступа
EnableTaskAccess(1);
Возможно это также решит и проблему с перехваткой значений самой системой, но неуверен, так как с таким еще не сталкивался.

Но хочу спросить, а зачем Вам вообще немодальный вывод окна библиотеки? Управлять чертежом или моделью можно и при модальном окне. В своих проектах я очень редко использую немодальные формы, и то если при работе библиотеки уже есть одно модальное окно (оно и закрывает доступ к КОМПАС, т.е. немодальным второе окно является только по отношению к главной форме библиоткеи), так проблем меньше...
Если же нужно интерактивное взаимодействие с пользователем, то для этих целей в КОМПАС-Мастер есть спец. методы. По-моему, их достаточно.

Мikhаil

Спасибо за ответ, но я уже разобрался. Просто в программе я написал:
 вместо Form1=new TForm1(Application),
             Form1=new TForm1(NULL)
Если все правильно сделать, то проблем с перехватом не возникает, и немодальное окно работает абсолютно нормально, обеспечивая интерактивное взаимодействие...

333

А оно в этом случае не висит отдельным процессом?
т.е. не появляется ли в панели задач еще одного приложения?