|
1 / 1 / 0
Регистрация: 17.07.2011
Сообщений: 143
|
|
Запоминание количества входов16.03.2015, 20:56. Показов 3684. Ответов 57
Метки нет (Все метки)
Народ, я снова в ступоре( Пытаюсь научить программу понимать, на какой вход нужно отрисовать связь. Т. е., если у меня есть элемент на 2 входа, я создаю к нему связь от другого элемента - она проводится к первому входу, если тяну связь от второго элемента - связь идет ко второму элементу. Если входы закончились - ничего не происходит и связь просто не рисуется.
Попробовал (по нубски естественно) написать рабочий вариант с запоминанием количества использованных входов в свойстве .Tag, но, как и ожидалось, не работает правильно. Подскажите, как это вообще реализовать? Проект прилагается. ВАЖНО! Отслеживание по .Tag делал только для первого элемента на 2 входа (на панели интерфейса, элемент & который).
0
|
|
| 16.03.2015, 20:56 | |
|
Ответы с готовыми решениями:
57
Защита входов МК Перемена знаков входов на ОУ Защита входов микроконтроллера |
|
1 / 1 / 0
Регистрация: 17.07.2011
Сообщений: 143
|
||||||
| 18.03.2015, 10:11 [ТС] | ||||||
|
volvo, а я пытался проверить на существование строки что-то вроде
Остались последние штрихи с этим редактором: если вдруг на схеме какой-то элемент станет ненужен, то его необходимо удалить, а вместе с ним и все его связи. Начал с самого простого - назначить для этой операции кнопку и удалить из памяти сам элемент, но не могу отловить нажатие кнопки, так как ss не дает отследить состояние клавиши Delete. Посмотрел примеры. но там везде через событие KeyDown, а у меня вся обработка идет в MouseDown. Как определить?
0
|
||||||
|
Супер-модератор
|
|
| 18.03.2015, 10:27 | |
|
Ну, на щелчок правой кнопкой мыши повесь удаление элемента. Его очень просто отследить...
Только вот с удалением - не так все просто Нельзя удалить элемент из его собственного метода. Это еще хуже, чем пилить сук, на котором сидишь. Я обычно пользуюсь таймером (изначально не работающим, с Enabled = False) в подобном случае. То есть, подготавливаешь все к удалению, вычищаешь все связи, записываешь в какую-то переменную ссылку на объект, который надо удалить, и запускаешь таймер (Enabled := True) с не очень большим интервалом, скажем, 100 ms. Таймер срабатывает уже тогда, когда выполнение метода удаляемого объекта завершилось, идет в ту самую переменную, удаляет объект, и опять выставляет сам себе Enabled = False. До следующего раза
1
|
|
|
1 / 1 / 0
Регистрация: 17.07.2011
Сообщений: 143
|
||||||
| 18.03.2015, 10:53 [ТС] | ||||||
|
volvo, а как удалять связи, если я по сути знаю только источник (или приемник в зависимости от связи)?
То есть мне нужно удалять строкой примерно как эта
0
|
||||||
|
Супер-модератор
|
|||||||||||
| 18.03.2015, 12:35 | |||||||||||
|
Вот подправленный метод MouseDown полностью:
1
|
|||||||||||
|
1 / 1 / 0
Регистрация: 17.07.2011
Сообщений: 143
|
|
| 18.03.2015, 14:15 [ТС] | |
|
volvo, спасибо) теперь буду настраивать остальной интерфейс) Правда столкнулся еще с одним неудобством: на скрине я собрал ситуацию, когда из одного элемента выходит сразу 6 связей - это нормально (представим, что первый элемент это вход X1, а конечные элементы - это логические элементы И). Все их связи пересекает связь еще двух элементов и становится непонятно, где же есть электрическая связь - путаница.
Думаю, нужно рисовать точки в местах пересечений, где они нужны. Есть идея при отрисовке связей брать имя источника и искать с списке структур совпадение. Допустим, он рассчитает, что записей с источником Elem0 будет 6 штук, тогда через условие нарисуем на втором изгибе связей точку, игнорируя первую и последнюю связи, так как там это не ответвление, а естественные линии. Собственно вопрос в чем, как мне сделать этот поиск по структуре и вообще можно ли так? Вроде при удалении элемента или связей записи из структуры тоже будут удаляться, поэтому ''точек в воздухе'' не будет оставаться, так как идет постоянная перерисовка.
0
|
|
|
1 / 1 / 0
Регистрация: 17.07.2011
Сообщений: 143
|
|
| 18.03.2015, 14:17 [ТС] | |
|
volvo, забыл скрин) перезалил
0
|
|
|
Супер-модератор
|
||||||
| 18.03.2015, 15:06 | ||||||
Сообщение было отмечено Mazanton как решение
Решение
Ну, пока только так:
Задачка уж очень интересная
1
|
||||||
|
1 / 1 / 0
Регистрация: 17.07.2011
Сообщений: 143
|
||||||
| 18.03.2015, 15:21 [ТС] | ||||||
|
volvo, странно, но компилятор ругается на строчку
unit1.pas(490,38) Error: Identifier not found "Min" unit1.pas(490,64) Error: Identifier not found "Max" unit1.pas(506) Fatal: There were 2 errors compiling module, stopping
0
|
||||||
|
1 / 1 / 0
Регистрация: 17.07.2011
Сообщений: 143
|
|
| 18.03.2015, 15:33 [ТС] | |
|
volvo, да, точно)) заработало, но есть оговорки в работе. На первом скрине обычная ситуация, все нормально, на втором я создал ситуацию, когда возникает логическая ошибка (я просто переместил второй слева элемент и он совместил связи, что по логике невозможно, на самом деле сложно сказать, что делать в подобных ситуациях, но, думаю, точка не нужна в них.)
Есть и еще один момент, когда (3 скрин) я выстраиваю первый элемент в одну линию с приемником, то точка пропадает, хотя в месте скрещивания выходит 2 провода, а значит точка нужна.
0
|
|
|
Супер-модератор
|
|
| 18.03.2015, 16:11 | |
|
Знаешь, у меня складывается такое ощущение, что это МОЕ задание. Давай дальше сам... Думать начинай, уже и так практически все реализовано... А вместо кого-то делать я вообще не намерен. Так что от темы отписываюсь. Твоего кода на сотню сообщений - жалкие несколько строк, одна-единственная "спасибка". Я бы за ответы на такое количество вопросов по форуму репутацию на пару сотен баллов мог увеличить, на фиг мне просто так это делать, да еще и задачу твою решать на халяву, ты не думал никогда? Удачи...
1
|
|
|
1 / 1 / 0
Регистрация: 17.07.2011
Сообщений: 143
|
|
| 18.03.2015, 16:23 [ТС] | |
|
volvo, сорри, если чем обидел, я писал тебе в лс же, что готовь отблагодарить за помощь в проекте - ответа нет(
0
|
|
|
1 / 1 / 0
Регистрация: 17.07.2011
Сообщений: 143
|
|
| 19.03.2015, 23:42 [ТС] | |
|
volvo, спасибо огромное)! Работает супер) тот мелкий недочет можно и не брать во внимание, он не мешает функционированию. Можете проконсультировать еще по некоторым вопросам? Пока только в плане алгоритмизации.
0
|
|
|
1 / 1 / 0
Регистрация: 17.07.2011
Сообщений: 143
|
||||||||||||||||
| 20.03.2015, 15:33 [ТС] | ||||||||||||||||
|
volvo, у меня возник вопрос. Я внедрил в интерфейс еще один элемент на панель - ключ (ну или вход, источник сигнала). Прописал везде необходимый код, но вот с массивом высот и подгрузкой картинки не смог разобраться полностью. В общем весь интерфейс был завязан на индекс листбокса, а этот элемент попадает на холст сразу, без выпадающего списка.
Я добавил в массив запись E_0
Поидее в конструкторе нужно поставить условие, чтобы он для этого элемента не назначал входы вообще и подгружал верную картинку и ставил нужную высоту. Сейчас произошло смещение и теперь элементы подрезает снизу.
На словах достаточно сложно объяснить суть проблемы, поэтому приложил проект, там все сразу станет понятно.
0
|
||||||||||||||||
|
Супер-модератор
|
||||||
| 20.03.2015, 15:52 | ||||||
|
Добавить E_0 не первым, а последним, например:
1
|
||||||
|
1 / 1 / 0
Регистрация: 17.07.2011
Сообщений: 143
|
||||||
| 20.03.2015, 16:31 [ТС] | ||||||
|
volvo, но в этом случае у этого нового элемента по умолчанию ставится 2 свободных входа, а ведь он является началом схемы и не может иметь вход.
И еще один вопрос по поводу отрисовки точки выхода провода. У этого нового элемента выход находится на другой высоте и строка Поидее это должна учитывать строка
0
|
||||||
|
Супер-модератор
|
|||||||||||
| 20.03.2015, 16:46 | |||||||||||
1
|
|||||||||||
|
Супер-модератор
|
||
| 20.03.2015, 16:48 | ||
|
1
|
||
| 20.03.2015, 16:48 | |
|
Защита входов АЦП Защита входов МК от помех
Переключение входов монитора Неполадки USB входов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|