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

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

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

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

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

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

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

Библиотека "Управление листами в документе"

Автор polisher, 29.08.17, 15:45:12

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

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

polisher

ЦитироватьВыкладывайте и не стесняйтесь
Ну ладно, утешили! В самом деле, лучше выложить, чем переносить весь проект в WinForms.

Только я сперва 64-разрядную версию отправлю на предприятие одно, чтобы под 17 (64 bit) версией погоняли. А то у меня не на чем проверить, увы.

Vin

31.08.17, 13:12:04 #21 Последнее редактирование: 31.08.17, 13:34:03 от Vin
Во-первых, автору огромное спасибо за библиотеку.
Во-вторых, не останавливаться на выпуске нескольких версий.

Теперь предложения и замечания:
1 разместить кнопу запуска библиотеки на инструментальную панель. Не удобно постоянно лазить в Менеджер библиотек.
2 если после вставки нового листа попытаться выполнить команды "Сохранить лист" или "Разделить документ на отдельные листы" появляется сообщение (см. Рисунок 1). Сообщение появляется если файл предварительно не был сохранён.
3 в файле два листа. После выполнения команды Разделить документ на отдельные листы создались, в моём случае, два файла. При этом в файле Лист 1 присутствуют два листа. Хотя, как я понял, должен быть один (см. Рисунок 2).
4 при попытке разделить файл на отдельные файлы в котором присутствует один лист, сначала появляется сообщение "Лист и так один, зачем его сохранять в отдельный файл!" а затем сообщение "Документ разложен по листам".
5 Команду Разделить документ на отдельные листы переименовать Сохранить листы в отдельные файлы.
6 доработать работу библиотеки таким образом, чтобы окно Диспетчера документа в запущенном виде всегда было поверх Компас. Чтобы не терялся фокус программы.
+ Благодарностей: 1

polisher

ЦитироватьТеперь предложения и замечания
Взаимное спасибо за тестирование!

По замечаниям и предложениям:
1) Кнопку постараюсь прикрутить (наверное, это несложно делается).
2) Точно, не учёл, что файл нужно сохранить перед делением на листы! Потому как делить приходится немного странноватым способом: дублировать файл, а затем удалять из него всё лишнее. Приходится делать именно так, чтобы не потерять техтребования и спецификации на листе, с которыми я пока работать не научился.
3) Тут скорее дело тоже в предварительном сохранении. Я создал двухлистовой документ, сохранил его, после этого он правильно разделился.
4)  :) Пардон! Поправим.
5) И здесь соглашусь. Чтобы с предыдущей командой перекликалось "Сохранить - сохранить".
6) Тут не обещаю. Хотел сделать, но не нашёл решения. Постараюсь поглубже АПИ поковырять и разобраться.

Попутно сам нашёл ещё несколько подобных неприятных вылетов с красными окошками. Все они по той же причине, что и пп. 2 и 3.
Ещё раз спасибо!
+ Благодарностей: 1

Vin

31.08.17, 14:17:43 #23 Последнее редактирование: 31.08.17, 14:41:02 от Vin
Цитата: polisher от 31.08.17, 13:53:53
3) Тут скорее дело тоже в предварительном сохранении. Я создал двухлистовой документ, сохранил его, после этого он правильно разделился.

Вот же странное дело.
На чертеже Лист 1 отображаются два листа. При этом лист 2 не редактируемый. (см. Рисунок 1).
Однако, в предварительном просмотре отображается один лист (см. Рисунок 2).
По пункту 3 замечания снимаются. Прошу прощения.

polisher

ЦитироватьВот же странное дело
Чудны дела твои, господи! Даже не знаю, что и сказать :o

А версия КОМПАС какая? Я на 14 пробовал только что:
1) Если предварительно двухлистовик сохранить, то делит замечательно.
2) Если создать новый двухлистовик, то выдаёт ошибку AccessViolation.

Vin

Цитата: polisher от 31.08.17, 14:32:46
Чудны дела твои, господи! Даже не знаю, что и сказать :o

А версия КОМПАС какая? Я на 14 пробовал только что:
1) Если предварительно двухлистовик сохранить, то делит замечательно.
2) Если создать новый двухлистовик, то выдаёт ошибку AccessViolation.
Компас-3D 16.1.11.

Думаю, что Компас тут не виноват, ошибка AccessViolation, скорее всего, проблема в коде.

polisher

ЦитироватьДумаю, что Компас тут не виноват, ошибка AccessViolation, скорее всего, проблема в коде
Так оно и есть.
При сохранении или делении на листы делается копия файла (чтобы сохранить техтребования и спецификации). А если создать документ и, не сохранив его, начать делить, тут-то AccessViolation и вылетает: нельзя, оказывается, копировать то, чего нет :)

Vin

01.09.17, 08:02:14 #28 Последнее редактирование: 01.09.17, 08:26:10 от Vin
1 Команда Добавить листы из другого документа. Вставка листа в документ, содержащий 2 листа, происходит между этими листами если в таблице выбрано место вставки лист 2. Так и должно быть? Как вставить в конец? Перемещением?
2 Сообщение об ошибке так же появляется если в двухлистовой документ вставить лист из другого документа и применить команду Сохранить лист. Однако, если перед применением команды сохранить файл, то сообщение не появится.
+ Благодарностей: 1

polisher

1)
ЦитироватьТак и должно быть?
Да, здесь всё правильно. Если выбираем лист 2, то другой вставляется именно на место второго листа, а остальные сдвигаются в конец. Выберем 1 - вставится в начало.
ЦитироватьКак вставить в конец?
Увы, промашка!  :(  Теоретически в окошке выбора места (со списком листов) должен предлагаться номер следующего листа (например, при вставке в двухлистовой документ список должен быть следующим: 1, 2, 3. При этом лист 3 - это и есть вставка в конец документа).

2)
ЦитироватьСообщение об ошибке так же появляется если в двухлистовой документ вставить лист из другого документа и применить команду Сохранить лист.
Это всё последствия одной и той же ошибки из-за особенности сохранения листов. В новой версии уже поправил, скоро выложу, как остальные недочёты исправлю
+ Благодарностей: 1

polisher

Увы, наверное верхний пост темы редактировать нельзя. Придётся писать сюда.

Выкладываю исправленную версию Диспетчера документа. Спасибо тестерам за замечания и предложения!!! Пока только 32-разрядная версия, 64-разрядная тестируется.
Перечень изменений:
1) Некоторые стилистические правки в названиях команд.
2) Добавления единственная команда "Управление листами" со значком, чтобы можно было выносить кнопку на панель инструментов.
3) Исправлен ряд ошибок, связанных с сохранением листов. Теперь перед сохранением, если документ был создан с нуля, библиотека предлагает сохранить весь документ.
4) Добавлены картинки в описание.
5) Добавлена заявленная, но нереализованная возможность добавлять листы другого документа в конец исходного.
+ Благодарностей: 2

polisher

Выкладываю 64-разрядный вариант библиотеки. Прошу прощения за здоровущий файл: пока не нашёл хорошего упаковщика, чтобы уменьшить его размеры.
Библиотека протестирована на КОМПАС 14 версии (64 bit). Теоретически должна работать и более высоких версиях.

polisher

Инструкция к обеим библиотекам отдельно - почему-то не захотела привязаться к предыдущему сообщению

04.09.17, 17:50:17 #33 Последнее редактирование: 04.09.17, 18:23:17 от Sabahs
x64 - тестировать, точно не буду, т. к. не люблю рекламу, а с x32, просто не работаю.
PS. На v17x64 подключилось, но цель у библиотеки иная, поэтому сделал так.

polisher

Цитироватьx64 - тестировать, точно не буду, т. к. не люблю рекламу
Сам терпеть не могу! Но иногда приходится, не корысти ради, а чтобы удержаться на плаву в океане информации.
Когда разберусь с видами, уберу назойливую рекламу. Оставлю разве что гиперссылочку скромненькую внизу окна

Вират Лакх

Как и обещал, список от меня (в первом приближении):

1) "Расположение" заменить на "Ориентация" как это в компасе и ворде. Расположение - это может быть по порядку.
2) Всегда и всем говорю: не надо делать выпадающие списки из двух-трех строк. Тут задвигалку ориентации заменить на аналогичную компасную кнопку.
3) Может стоит поменять местами выбор библиотеки и стиля. Вроде логичнее и как в компасе.
4) Что-то мне эти двоеточия не очень. "Номер листа:", "Формат:" и т.д.
5) Вертикальный лист называет горизонтальным в списке листов.
6) Можно сделать на двойной клик по строке листа вызов его редактирования?
7) Подтверждение удаления листа обязательно? Удаленные виды можно восстановить контролзетом.
8) Полишер 2017 и информация о документе жестко привязаны к своим местам. Не реагируют на изменение размера окна.
9) Надо бы уметь выделять несколько листов. Это компас умеет. Например, чтобы удалить все, кроме первого, или поменять стиль у 50-ти листов на свой.
10) У компаса есть настройка первого листа и последующих. Научите библиотеку уметь то же, что и компасный манагер, - по умолчанию вторым и далее делать стиль последующих листов, чтобы самому не выставлять.
11) "Нельзя удалить единственный лист" - может просто кнопку неактивной сделать, опять же как в компасе.
12) "Последующий" (стиль) лист вставляет неправильно. Не та основная надпись или её отсутствие в зависимости от библиотеки стилей.
13) Команда переместить лист неправильно смещает виды. Возьмите вертикальный, пару горизонтальных и еще вертикальный. Переместите первый на место 4-го.
14) Многоточие в названии кнопки означает, что откроется еще одно окно. Вы не везде следуете этому правилу. Т.к. почти все кнопки открываю окно, то может и не писать на всех кнопках эти ...
15) Вот у меня несохраненный документ. Нажимаю сохранить лист, появляется окно задания имени. Но оно не стандартное компасное окно, а свое какое-то почему-то с кнопкой "открыть". Может обычное вызвать? Когда нажимаю отмену, тогда уже ругается, что нужно сохранить документ. Как-то не понятно, что я сохраняю. Может в нижнем правом углу выдать сообщение "Сохраните текущий документ"?
16) Не люблю я эти окна с ОКеем. Лучше сообщение про необходимость сохранения документа или ""документ разложен по листам" сделать балуном в нижнем правом окне.
17) И вообще, лучше не задвигалкой менять местами листы, а два выделить через ctrl и нажать кнопку, которая будет уже без последующего окна. Надо уходить от оперирования нумерацией листов к визуальному, к работе в самом списке. Аналогично с перемещением. Надо бы иметь пару кнопок вверх и вниз что ли. И если перемещать далеко, то тоже можно обойтись так: выделить первым лист "что", а потом с ctrl выделить второй лист "куда", и нажать кнопку. Если выделены больше трех листов, то кнопки перемещения неактивны.
18) Можно сделать окно программы таким, чтобы можно было двигать документ? А то забрал на себя фокус и ни туда, ни сюда в документе.
19) Пожелание, чтобы в диалогах работал не только Enter, но и ctrl+enter. У меня на мышке ctrl+enter есть - очень удобно.
20) Сохранение всех листов лучше так и назвать "Сохранить все листы...". Неуказанную шероховатость копирует на все листы из исходника - это нормально? Файл с первым листом почему-то содержал все листы исходника, но уже без видов на соседних листах. Если листы уже были ранее созданы и открыты, то при повторном сохранении листов мы получаем Access violation.

Устал писать. Подожду новую версию. Не всё попробовал.
+ Благодарностей: 2

polisher

ЦитироватьКак и обещал, список от меня (в первом приближении):
Спасибо огромнейшее за качественную рецензию! Даже не знаю, хватило бы у меня терпения исследовать чей-то любительсткий продукт так основательно!

Цитировать1) "Расположение" заменить на "Ориентация" как это в компасе и ворде.
Согласен. Это меня Гуглохром с панталыку сбил, там вообще термин "Раскладка" применяется в окне печати.

Цитировать2) Всегда и всем говорю: не надо делать выпадающие списки из двух-трех строк. Тут задвигалку ориентации заменить на аналогичную компасную кнопку.
Иногда такие списки необходимы. Например, если нужно пользователю показать два варианта чего-то, а места мало - хватает только на комбобокс. Если в нашем случае сделать флажок "Вертикальная", то некоторым будет непонятно, что значит отсутствие этого флажка - есть и такие пользователи.
А решение компасового Докменеджера показалось ненаглядным - клик по рисунку, который меняется туда-сюда, от горизонтального к вертикальному и наоборот. Да и не люблю нагромождение пиктограмм там, где можно обойтись словами. Пиктограммы в диалоговых окнах - дурной тон.
Попробую нейтральный вариант: группа "Ориентация" из двух "радиокнопок" - "Горизонтальная" и "Вертикальная". И волки будут сыты и овцы целы.

Цитировать3) Может стоит поменять местами выбор библиотеки и стиля. Вроде логичнее и как в компасе.
В Компасе как раз есть расхождения в логике (по моему скромному мнению, разумеется). В списке листов Докменеджера сначала идёт стиль, потом библиотека. А в диалоге - наоборот. Мне виделось, что пользователь чаще меняет стиль, чем библиотеку, поэтому список стилей я отобразил выше. Надо подумать...

Цитировать4) Что-то мне эти двоеточия не очень. "Номер листа:", "Формат:" и т.д.
Соглашусь наполовину. В заголовках групповых рамок - согласен, в большинстве виндовых программ нет двоеточия. А вот в заголовках выпадающих списков двоеточия очень даже есть, например, в Word.

Цитировать5) Вертикальный лист называет горизонтальным в списке листов.
Моя промашка, исправим.

Цитировать6) Можно сделать на двойной клик по строке листа вызов его редактирования?
Просто забыл прикрутить обработку двойного клика. Само собой, хотелось по двойному клику на листе вызывать окно его редактирования, а по двойному клику на пустом месте - вставку.

Цитировать7) Подтверждение удаления листа обязательно? Удаленные виды можно восстановить контролзетом.
КОМПАС 14 не восстанавливает. Под него ориентировался. На два действия назад откатывается, и всё. Ну и выработанная годами привычка: если что-то удаляется, то лучше переспросить об этом пользователя во избежание.

Цитировать8) Полишер 2017 и информация о документе жестко привязаны к своим местам.
Забыл! Поправим.

Цитировать9) Надо бы уметь выделять несколько листов. Это компас умеет.
Ой, не люблю я эти множественные выделения Ctrl-ом! С удалением всё упроститься, согласен. Ну, и с сохранением сразу нескольких листов. Зато не будут наглядными другие операции. Например, вставка (куда вставлять, если выделено пять листов?). Про обмен местами и передвижением на другое место вообще молчу! Подумать надо...

Цитировать10) У компаса есть настройка первого листа и последующих.
Наверное, вы правы. Просто изначально библиотека была ориентирована под нужны проектантов, у которых в многолистнике содержится раздел проекта. У них все листы "равноправны". Проблема второго листа разрешима, но тут надо подумать, как сделать аккуратно и не обидеть проектантов.
Сейчас сделано всё просто и тупо: берётся оформление того листа, который выделен.

Цитировать11) "Нельзя удалить единственный лист" - может просто кнопку неактивной сделать, опять же как в компасе.
Это простая перестраховка. Я встречал обратное: в некоторых приложениях диалог очень умный, и ОК неактивна, пока не выполнишь какие-то действия. А что это за действия, нужно догадываться.
Я предпочитаю другой стиль: активно всё, но если действия некорректные, то выдавать предупреждения. Которые, к тому же, объяснят пользуну, почему кнопка неактивна, и что нужно сделать, чтобы она стала активной.

Цитировать12) "Последующий" (стиль) лист вставляет неправильно.
см. п. 10 - берётся стиль текущего листа, который выделен, или последнего, если ни один не выделен.

Цитировать13) Команда переместить лист неправильно смещает виды.
Увидел. Да, что-то тут накосячил. Поправлю.

Цитировать14) Многоточие в названии кнопки означает, что откроется еще одно окно. Вы не везде следуете этому правилу.
Тут всё логично. В Винде многоточия ставятся, если будет открыт диалог. Вопрос ("Вы хотите удалить?..") или информационное окно ("Лист удалён") за диалоги почему-то не считаются.

Цитировать15) Вот у меня несохраненный документ. Нажимаю сохранить лист, появляется окно задания имени. Но оно не стандартное компасное окно, а свое какое-то почему-то с кнопкой "открыть". Может обычное вызвать? Когда нажимаю отмену, тогда уже ругается, что нужно сохранить документ. Как-то не понятно, что я сохраняю.
Тут снова промашка - вместо диалога "Сохранить" использовал диалог "Открыть". Исправлю. Окошко не компасовое, но стандартное, виндовое.
Скорее, вы правы, логику тут нужно переделать. Подумаю, как это сделать проще и нагляднее.

Цитировать16) Не люблю я эти окна с ОКеем. Лучше сообщение про необходимость сохранения документа или ""документ разложен по листам" сделать балуном в нижнем правом окне.
Я тоже не люблю. Но до балуна компасового не сумел достучаться. В АПИ он вроде описан, но вызвать его не получилось - выдаёт сообщение "Несовпадение типов". Я уж и так пробовал, и сяк... В SDK примеров, увы, нет (или я невнимательно глядел)

Цитировать17) И вообще, лучше не задвигалкой менять местами листы, а два выделить через ctrl и нажать кнопку, которая будет уже без последующего окна. Надо уходить от оперирования нумерацией листов к визуальному, к работе в самом списке. Аналогично с перемещением. Надо бы иметь пару кнопок вверх и вниз что ли. И если перемещать далеко, то тоже можно обойтись так: выделить первым лист "что", а потом с ctrl выделить второй лист "куда", и нажать кнопку. Если выделены больше трех листов, то кнопки перемещения неактивны.
Вам это упростит работу. Мне тоже. Но есть пользователи, для которых непонятно, что нужно сначала выделить два листа CTRLом, потом нажать кнопку. И таких, увы, очень много. Не хочется, чтобы они засыпали вопросами. К сожалению, и некоторые компасовые операции не сильно наглядны, приходится запоминать строгую последовательность действий.
Вначале я даже Drag-n-drop планировал, чтобы мышью таскать листы, куда надо. Но потом передумал и решил делать всё "в лоб": первое - "что", второе - "что сделать", третье - "куда.
Но продумать этот вопрос поизящнее, думаю, можно.

Цитировать18) Можно сделать окно программы таким, чтобы можно было двигать документ? А то забрал на себя фокус и ни туда, ни сюда в документе.
Это со штатного компасового Докменеджера слизано - он так же себя ведёт. Фокус терять страшно: а вдруг пользователь откроет другой документ. Нужно перехватывать это событие, заново формировать список листов и пр.

Цитировать19) Пожелание, чтобы в диалогах работал не только Enter, но и ctrl+enter. У меня на мышке ctrl+enter есть - очень удобно.
К стыду своему, не знаю, что делает Ctrl+Enter в диалогах. Подскажете? Enter знаю, Тав, shift+Tab, Esc...

Цитировать20) Сохранение всех листов лучше так и назвать "Сохранить все листы...". Неуказанную шероховатость копирует на все листы из исходника - это нормально? Файл с первым листом почему-то содержал все листы исходника, но уже без видов на соседних листах. Если листы уже были ранеесозданы и открыты, то при повторном сохранении листов мы получаем Access violation.
Наверное да по поводу названия. Хитрая команда - уже третий раз переименовываю!
Шероховатость, скорее всего, относится к тем же коварным сущностям, как и техтребования и спецификации на листе. С ними, если честно, до конца не разобрался.
Access Violation поборем!

ЦитироватьУстал писать. Подожду новую версию. Не всё попробовал.
Да, солидное тестирование, ничего не скажешь! Очень-очень благодарен за терпение!!!
В новой версии замечания исправлю, с которыми согласился. И надеюсь, что удасться нащупать эти хитрые спецификации, техтребования и шероховатости.

ТрындецЪ

Цитата: polisher от 05.09.17, 13:26:45
Я тоже не люблю. Но до балуна компасового не сумел достучаться. В АПИ он вроде описан, но вызвать его не получилось - выдаёт сообщение "Несовпадение типов". Я уж и так пробовал, и сяк... В SDK примеров, увы, нет (или я невнимательно глядел)
На python сообщение вызывается так:
application.MessageBoxEx( "Текст сообщения", "Заголовок", i )
где i - целое число (48 или 64 для всплывающего сообщения, разница в иконках)
+ Благодарностей: 1

polisher

Цитироватьapplication.MessageBoxEx( "Текст сообщения", "Заголовок", i )
По-моему, так и делал по справке SDK.
Там описаны в качестве третьего параметра виндовые константы: MB_ICONWARNING = 48 и MB_ICONINFORMATION = 64.
Буду править, попробую ещё раз. Возможно, что-то проглядел

PS

Цитата: polisher от 05.09.17, 14:41:24
По-моему, так и делал по справке SDK.
Там описаны в качестве третьего параметра виндовые константы: MB_ICONWARNING = 48 и MB_ICONINFORMATION = 64.
Буду править, попробую ещё раз. Возможно, что-то проглядел
К большому сожалению в Компас 17 MB_ICONWARNING и MB_ICONINFORMATION это одно и тоже и = MB_ICONWARNING.
Моя очень длительная переписка с СТП АСКОНа не привела к пониманию АСКОНом, что это совершенно разные по смыслу иконки в сообщениях :(
Напишите в СТП про иконки, может когда будут просить несколько человек, АСКОН поймет что сделал не правильно и наконец исправит!