|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.11.2009, 19:19 | #1 |
Новичок
Джуниор
Регистрация: 28.11.2009
Сообщений: 2
|
Разработка "рабочего поля" программы сим. эл.схем (Delphi)
Здравствуйте.
Необходимо реализовать "рабочее поле" программы как в "примере", на Delphi. То есть, есть виртуальные элементы (которые тоже надо как-то придумать) и их необходимо соединять "проводниками". К одному выводу виртуального элемента может быть подведён только один "проводник". Так же должны быть узлы, т.е. что бы к одному проводнику можно было подключить другой. И всё это должно как то двигаться при нажатии кнопки мышы и перетаскивании. Примеры таких программ (с таким интерфейсом): WorkBench, Proteus и многие другие для разработки электронных схем. Подскажите в какую сторону двигаться для реализации вышеизложенного, перепробовал множество вариантов, один из которых рисовал на Canvas Image, но там тоже возникли свои проблемы. Последний раз редактировалось WaruiOrochi; 28.11.2009 в 19:21. |
28.11.2009, 20:53 | #2 |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
Даже не знаю чем вам помчь((( Таких компонентов я не знаю, но могу сказать как бы делал это я:
1. Каждый элемент - это отдельный класс с его полями и настройками. (Тут будет все начиная от координат элемента на форме, и заканчивая электрическими параметрами данного электронного прибора) 2. Собственно я бы сделал палитру, на которой лежали бы все элементы. 3. Далее так: нажал на элемент на палитре, нажал на основную форму - на форме отрисовался бы данный элемент, а в некий массив (стек, очередь, дерево - это как вам уже будет удобнее) добавился элемент который вы кинули на форму. 4. В каждом элементе есть ссылки на дочерний(дочерние) элементы. По умолчанию все ссылки должны быть установлены в nil. По мере соединения элементов ссылки должны заполняться указателями на дочерний элемент. Зачем нужны ссылки? Это чтобы узнать какие элементы нужно соединить с какими. И вот наступает самый сложный этап. Нужно как-то соединять элементы проводниками. Тут вам поможет либо теория графов с его поиском оптимального пути, либо старый проверенный способ - "в лоб" искать пути, по которым нужно соединять элементы. Вот как-то так.
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
28.11.2009, 21:05 | #3 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
Сейчас пишу симулятор эл. схем, только над граф. интерфейсом я еще не заморачивался.
http://programmersforum.ru/attachmen...1&d=1258321704 Пишу на С++, юзаю OpenGL, ООП. Все пишу сам. Последний раз редактировалось Levsha100; 28.11.2009 в 21:07. |
28.11.2009, 21:13 | #4 | |
Новичок
Джуниор
Регистрация: 28.11.2009
Сообщений: 2
|
В принципе к этому я и стремился и поля были и координаты всех выводов каждого элемента, проблема возникла в отрисовке одного элемента и в перемещении проводника. В элементе проблема заключается в том что я не знаю как его отрисовать, картинкой не удобно (не эффективно), через lineto, movieto как то неудобно в плане перерисовки. Вот и мучаюсь с вопросом как бы "правильно " создать компонент, а уж свойствами то я его обеспечу, мало того при клике на компонент он должен выделяться и перетаскиваться мышкой. Вот в этом плане не можешь мне помочь? можно даже с кусочком кода
Цитата:
Все это замечательно, но не стоит забывать про наличие кнопки "Правка"... Последний раз редактировалось mihali4; 28.11.2009 в 21:46. |
|
28.11.2009, 21:25 | #5 |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
Ну с отрисовкой либо картинка, либо lineto, moveto. Другого способа я не вижу. А с перемещением так вроде проблемм никаких я не вижу. У тебя есть свойства OnMouseUp, OnMouseMove, OnMouseDown.
OnMouseUp - срабатывает когда ты нажимаешь на кнопку мыши. Код примерно такой: Код:
Код такой: Код:
Код такой: Код:
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
Ищу книгу Андрей Шкрыль "Разработка клиент-серверных приложений в Delphi" | virus_t | Свободное общение | 9 | 11.08.2009 21:42 |
Помогите в написании редактора блок-схем на Delphi (Очень важно "Диплом") | IIpopoK | Помощь студентам | 3 | 13.02.2009 16:27 |
Работа с String Grid - помогите написать "Табель рабочего времени" | Deicider | Помощь студентам | 3 | 29.11.2006 20:59 |