|
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
|
|
Не могу присвоить OnClick для динамического объекта02.10.2020, 10:43. Показов 4651. Ответов 69
Метки нет (Все метки)
Создаю динамически картинки.
массив 4х4 Не могу присвоить объекту OnClick. Создал на форме TImage, щелкнул на ней, появилась процедура OnClick. Далее ее пытаюсь присвоить вновь созданному компоненту. Говорит незаявленный идентификатор ![]() Все, что описано до присвоения работает, рисунки появляются
0
|
|
| 02.10.2020, 10:43 | |
|
Ответы с готовыми решениями:
69
OnClick динамического объекта не видит себя-же
Событие OnClick для элемента динамического массива типа TImage |
|
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
|
||
| 05.10.2020, 14:52 [ТС] | ||
|
(в выходные у меня наоборот завал, не смог добраться до просмотра) посмотрел, попытался понять, даже чего-то понял ![]() попробовал просто скопировать. Затык получил в первых же строках. видимо не разрешает процедуры декларировать. Но за то намекает, что классы вроде как разрешает, но все равно я подозреваю, что он даст только вновь создаваемые классы описать, а вот с формой ошибки не выдает, но и потом не видно ничего, что наобъявлялось.
0
|
||
|
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
|
||
| 06.10.2020, 09:58 [ТС] | ||
![]() Но что-то мне подсказывает, что надо отказаться от динамических объектов. Каким путем лучше пойти? Задача: загрузить картинки (набор линий в квадратике) из реестра (описаны координатами), затем при клике на картинке нужно понимать на какой картинке кликнули. Пока думаю нарисовать это все на форме, затем определять координаты клика...
0
|
||
|
|
||||||||
| 06.10.2020, 17:05 | ||||||||
![]() ну пусть будут картинки 16х16, рисуешь их в одну линию горизонтально тогда координата "кнопки" будет Round(x / 16), хотя если координаты целочисленные тогда просто x div 16 получаем индекс по y также))) и координаты хранить нигде не надо, просто индексам привязать функционал ![]() по сути вот
0
|
||||||||
|
|
||||||
| 06.10.2020, 17:21 | ||||||
|
чота я какой-то не наглядный код привел)))))
вот лучше для понимания
0
|
||||||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,498
|
||
| 06.10.2020, 17:29 | ||
|
Конкретно сейчас какая стоит задача? Что делается этим щелчком? А то "при клике на картинке нужно понимать на какой картинке кликнули" как-то широко можно понимать. Добавлено через 36 секунд Вот, Arcor так же советует, определять по координатам.
0
|
||
|
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
|
||||
| 07.10.2020, 10:46 [ТС] | ||||
|
А есть планы перебить функционал альтиума? было бы интересно, а то они сейчас в такие дебри залезли, что приходится на версии 13 года сидеть, в новых версиях хрень полнейшая и плюс тормоза. нужно что-то новое и шустрое поизучаю что ты предлагаешь. Меня интересовала не реализация, а логичность самого варианта. Верный ли путь я выбрал. Но основные операции прошли на ура, рисуется, кликается, все работает вроде. Задача следующая: Реализовать панель Clipboard, что есть сейчас в AltiumDesigner. Выглядит она вот так (показано на рисунке снизу), работает следующим образом: При копировании набора объектов они не заменяют друг друга а становятся в стек и видны несколько "буферов обмена". выбираем нужный, ставим на плату. Самое часто используемый набор, это т.н. фанауты, показаны на примере. Недостатков текущей реализации несколько - немодальное окно (соотв. езда мышью туда-сюда) - хранится в конкретном слое и в тот же слой вставляется, а д.б. в текущий - обнуялется при закр-откр приложения - и самое главное: эту панель убили в новых версиях, а я рано и ли поздно перейду в новую пусть и глючную версию. мой скрипт будет работать след. образом: выделяем объекты, нажимаем save, в окне выбираем квадратик и сохраняем. другая кнопка "Load". нажимаем, выезжает окно с наборами, выбираем, вставялем. все наборы хранятся в реестре, при перезагрузке не теряются
0
|
||||
|
|
|||
| 07.10.2020, 10:58 | |||
Хотя текущее место работы тоже отличное (Космический центр авиации и космонавтики Германии)
1
|
|||
|
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
|
||
| 07.10.2020, 11:02 [ТС] | ||
![]() как раз оттуда мне и пришло письмо об увольнении
0
|
||
|
|
||||
| 07.10.2020, 11:15 | ||||
|
вот опять возвратимся к моему софту, я вообще решил написать и все свои визуальные контролы, ибо стандратными извращаться долго, если надо какой-то функционал привязать далеко в корне. Да и стандартные кнопки и все остальное приелось)) и так просто не поменять визуализацию) а так - весь функционал твой и как хочешь, так над ним и извращайся. Мое мнение ![]()
0
|
||||
|
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
|
||
| 07.10.2020, 11:18 [ТС] | ||
![]() я удаленно работал, собирать вещички и ехать никуда не пришлось
0
|
||
|
|
|
| 08.10.2020, 13:57 | |
|
в команде разработчиков Альтиум человек 200 )
офисы в Польше, России, Украине, Китае, США, Австралии, Германии. на работу они принимают, но им нужны прямо очень продвинутые сеньоры Delphi+C#
0
|
|
|
|
||||
| 08.10.2020, 17:08 | ||||
и так делать нивкакусю не хотелось, а тут вспомнил, какой кусок кода тебе приводил, а он четко подходит под мою задачу тоже теперь, т.е. расчитать текущий элемент.. один раз сделать оепреацию "делить" при перемещении мышкой это куда экономичнее, а так же сравнение с предыдщим выделением, дает еще разгрузку, на перерисовку))) пример писал для тебя 2 дня назад, а до самого дошло только сегодня![]() как твоя задумка? Продвигаешься? Кликните здесь для просмотра всего текста
Не по теме: А как же привязка визуальным компонентам ссылки на данные? Там тоже нельзя так делать? :)
0
|
||||
|
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
|
||
| 08.10.2020, 17:28 [ТС] | ||
). но если интересно, могу отписаться попозже.думаю в районе 1 ноября получится взяться. главный кусок, сохранение и чтение из реестра, вставка на поле pcb уже решена.
0
|
||
|
|
||
| 08.10.2020, 17:57 | ||
У меня отпуск скорее всего будет со второго ноября. воотт я напрогаюсь до синих помидоров (надеюсь)
0
|
||
|
|
||
| 08.10.2020, 18:36 | ||
![]() Добавлено через 6 минут кстати-то. эти компоненты, что на TStrings базированные, типа ListBox, ComboBox и тд и тп.. они на массиве замудренные и ооочень медленные, там можно запихать естественно и свой список, сделав компонент виртуальным, но на обычном списке если сделать, это в разы шустрее)
0
|
||
|
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
|
||||||
| 27.10.2020, 20:14 [ТС] | ||||||
|
Ну собственно, есть кое-какие результаты.
Для работы уже более, чем достаточно. Наборчики примитивов сохраняются в реестр и загружаются на поле печатной платы. Реализована также концепция альтиума - все на кнопках. Выброшены все динамические объекты с присвоением Event-ов и прочей ереси. Сделно единое полотно Canvas и на нем все опредеяется координатами клика. Вычислить координаты и дать действие оказалось в тыщу раз проще, чем сочинять динамические объекты:
72 - шаг следования квадратов, размер 64х64 Считать и вставить объекты труда особого не составило. Больше оказалось проблем с отрисовыванием на панели объектов. Особенно дуг. Это треш какой-та. функция Canvas.Arc придумана в каком то жутчайшем бреду по ходу. Ну ладно, удалось вроде победить. Вторая проблема - исчезновение окон альтиума помле работы программы. Дело в том, что в процессе работы мне необходимо скрыть окно. После этого выделяем или вставляем объекты на поле. После этого программа закрывается. в итоге исчезают нужные панели Э ![]() Оказалось, что окно скрипта нельзя скрывать в середине его (скрипта) работы. я все перепробовал, и .Hide и .Visable и .SendToBack Все эти функции гробят рабочие окна альтиума. Удалось победить только смещением .Left := 10000. Результат: пока обрабатывает только треки и дуги. В принципе лично мне больше и не нужно, но если вдруг кому понадобится еще, добавлю переходные отверстия и регионы. Шаблон на это заложил. Для вставки нажимаем последовательно E-E-<>. Последнее - клавиша, соответствующая квадрату. 1-2-3-4 - верхний ряд Q-W-E-R - второй ряд и т.д. (снизу на форме подписано клавиша и description) Осталась одна проблема, но по всей вероятности скриптом ее не победить. Заключается в том, что после выбора и скрытия формы мы не видим вставляемых объектов. Т.е. их пока и нет. они появятся только после указания точки вставки. потом включается альтиумовская команда по копированию и вставки по циклу, RubberStamp. В идеале мне хотелось бы, чтобы RubberStamp запускался сразу. Но как это сделать я даже не представляю, думаю что это невозможно. Поэтому лишние клики...
1
|
||||||
|
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
|
|
| 27.10.2020, 20:26 [ТС] | |
|
Исходник.
В конце, правда, получилось китайское программирование ![]() Незнаю, можно ли как-то подсократить?...
0
|
|
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,498
|
||
| 27.10.2020, 20:46 | ||
|
Просто нужно понять принцип задания координат начала и конца дуги.
0
|
||
|
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
|
||
| 27.10.2020, 21:11 [ТС] | ||
|
Но для тех, кто обычно рисует дуги в автокаде, солиде, альтиуме, пикаде и прочих кадах все очень неоднозначно. Первый раз вижу, чтобы дуга задавалась "описываемым прямоугольником" в кадах дуга это x0, y0, R, StartA, EndA. готово. а не 8 координат, как здесь. хотя я понимаю, скорее всего это сделано для того, чтобы еще и эллипсоидную дугу засунуть.
0
|
||
| 27.10.2020, 21:11 | |
|
Конструктор копирования для динамического объекта класса приемника Где объявить и описать функцию щелчка для динамического объекта Создание динамического события для объекта подключаемого из dll (динамика) Ошибка. Динамически созданному Label присвоить событие OnClick написать программу движущийся графический объект с двумя способоми с использованием статического объекта и с использованием динамического объекта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|