![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 11.03.2007
Сообщений: 92
|
![]()
Всем привет!
Воспользовавшись статьёй набросал себе подобные объекты. Всё работает, кроме: 1. При добавлении новой точки к ломаной линии, возникает ошибка при зоздании канвы (в комментариях написано подробно) 2. При завершении конструирования возникала ошибка при удалении объекта. Закомментировав само уничтожение ошибка пропала. Но думаю это не выход. 3. Не работают сообщения на перехват сообщений от клавиатуры и колёсика мышки. Причина не выяснена. Прошу помочь, т.к. достаточного опыта в сознании компонентов ещё нет. Так же набросал соединения, но вдохновение ушло, и не реализовал. Буду рад любой критике. Спасибо. |
![]() |
![]() |
![]() |
#12 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Посмотрел Ваш код. Похвально. Проделана большая работа. Понятно, почему иссяк энтузиазм. Когда сложность проекта достигает определенного уровня становится трудно отследить все взаимосвязи.
Мы и используем объекты для уменьшения сложности. ИМХО в Вашем случае компонзиция объектов неоправдано усложнена. Недостаточно продумано, что может делать каждый из классов. Использование отдельного режима для конструирования объекта (ObjectType) ИМХО не очень хорошая идея. Посмотрите на IDE Delphi. Объект вставляется сразу с параметрами по умолчанию и становится текущим. Текущего объекта достаточно для остальных операций. Изменение параметров текущего объекта проще, чем отдельный режим для его конструирования. По ошибке с TBaseCanvas. Он у Вас создается повторно в цикле. Нужно создавать или до цикла или внутри него, или использовать разные переменные. Код:
Чтобы не быть голословным, прикрепил простенький проект с примером. Там только основное в описании объектов и методы рисования. Может найдете для себя что-нибудь интересное. |
![]() |
![]() |
![]() |
#13 |
Пользователь
Регистрация: 11.03.2007
Сообщений: 92
|
![]()
2alexBlack:
Спасибо, довольно интересное решение. На днях посмотрю подробнее. TBaseCanvas сделал для того, что в последствии хочу сделать масштабирование, и что бы не грузить переводом форму, решил сделать отдельно. Два раза она не создаётся - это уже мои эксперименты. Пробовал даже создавать при создании контейнера, всё равно ошибка. Только какая-то странная - появляется только при вставке точки. По поводу ObjectType: С помощью этой перемменой создаётся объект который заносится в FCurrentObject. Т.е. используется только для созднания. Для всех последующий действий используется FCurrentObject. По поводу соединений: Изначально хотел сделать соединения, как отдельную переменную у объектов, и управлять ими через сообщения установки значания и установки привязных точек. И как можно реализовать соединения, которые имеют одну входную точку и несколько выходных, т.е. которые могут разветвлятся. P.S. А как такой маленький ехе получился? |
![]() |
![]() |
![]() |
#14 | |||
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]() Цитата:
Цитата:
Цитата:
В этом случае контакты простых элементов не могут иметь два соединения. Вместо этого делаем отдельный объект - контактная площадка и к нему сводим все соединения. Этот объект может иметь любое количество контактов, но все они имеют одни координаты - попросту точка соединения. Это дает возможность простого перемещения элемента. Перемещаем базовую точку объекта. Соответственно для всех его контактов проверяем по одной связи и если они есть, перемещаем еще и контакты связи. Еще раз повторю, это мое мнение. Есть и другие варианты реализации. Например, на концах отрезка можно неявно создавать те-же контактные площадки. Не обращал внимания. м.б. просто проект маленький - практически ничего не используется. |
|||
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание блок-схем по коду С++ | Panterka | Общие вопросы C/C++ | 7 | 04.02.2018 19:21 |
Блок схема | Лёха | Помощь студентам | 32 | 18.12.2010 18:42 |
Программа для Блок-Схем | OrdJONY | Свободное общение | 9 | 18.05.2009 22:05 |
Оформление блок- схем программ для работы с файлами. | Ветас | Помощь студентам | 1 | 24.02.2008 17:25 |