Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
 Аватар для peshkoff-vn
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73

Не могу присвоить OnClick для динамического объекта

02.10.2020, 10:43. Показов 4657. Ответов 69
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаю динамически картинки.
массив 4х4
Не могу присвоить объекту OnClick.

Создал на форме TImage, щелкнул на ней, появилась процедура OnClick.
Далее ее пытаюсь присвоить вновь созданному компоненту. Говорит незаявленный идентификатор

Все, что описано до присвоения работает, рисунки появляются
Миниатюры
Не могу присвоить OnClick для динамического объекта   Не могу присвоить OnClick для динамического объекта  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.10.2020, 10:43
Ответы с готовыми решениями:

OnClick динамического объекта не видит себя-же
Есть класс, содержащий динамический StringGrid. Пытаюсь создать обработчик OnClick. //--------------H-file---------------- class...

Не могу присвоить значению элемента динамического массива rand() % xx
Доброго времени суток. Подскажите, как проинициализировать элементы динамического массива(заданный с клавиатуры размер).Я пытался что-то...

Событие OnClick для элемента динамического массива типа TImage
Дан динамический массив: m:array of timage; За время работы программы создаётся некоторое кол-во элементов массива. Когда на один из...

69
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
27.10.2020, 21:39
Студворк — интернет-сервис помощи студентам
Ну дуга понтная так то)) но по быстрому ее не начертить таким макаром ))
но можно же переписать на свой лад
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
procedure DrawArc(ACanvas: TCanvas; ACenter: TPoint; ARadX, ARadY, ABegAngle, AEndAngle: Integer);
var X1, Y1, X2, Y2: Integer;
begin
 
  X1 := Round(ACenter.X + ARadX * Cos(-ABegAngle * Pi / 180));
  Y1 := Round(ACenter.Y + ARadY * Sin(-ABegAngle * Pi / 180));
 
  X2 := Round(ACenter.X + ARadX * Cos(-AEndAngle * Pi / 180));
  Y2 := Round(ACenter.Y + ARadY * Sin(-AEndAngle * Pi / 180));
 
  // Для ориентира :)
  ACanvas.Rectangle(ACenter.X - ARadX, ACenter.Y - ARadY, ACenter.X + ARadX, ACenter.Y + ARadY);
 
  ACanvas.Arc(
    ACenter.X - ARadX, ACenter.Y - ARadY, ACenter.X + ARadX, ACenter.Y + ARadY,
 
    X1, Y1, X2, Y2);
 
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
 
 DrawArc(Canvas, Point(100, 100), 50, 30, 0, 135);
end;
Миниатюры
Не могу присвоить OnClick для динамического объекта  
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
27.10.2020, 21:46
ну канвас и CAD сравнивать просто не надо. не надо и все , канвас пусть остается методикой рисования начальной стадии развития графики

а фишка в проге то прикольная рисоватьзавихренные дорожки шаблоном. надо в свой кад подобное! Супер идея.

а откуда берется вообще это имя? frmPP
0
 Аватар для peshkoff-vn
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
27.10.2020, 23:53  [ТС]
Цитата Сообщение от Arcor Посмотреть сообщение
но можно же переписать на свой лад
Пришлось бы, но спасибо праотцам (а не тем упырям, что сейчас губят альтиум),
разработавшим движок скриптов еще для protel 98, откуда и вышел альтиум.
Именно они дали доступ к определенным (т.е. почти всем) свойствам объектов.
Благодаря этому у дуги все, что нужно для отрисовки на канвасе есть.
например, координаты начала и конца, что очень облегчает задачу.
эти данные я тоже храню в реестре.

Цитата Сообщение от Arcor Посмотреть сообщение
а фишка в проге то прикольная рисоватьзавихренные дорожки шаблоном
дело в том, что я трассировщик, а не программист.
идеи рождаются в процессе работы.

Цитата Сообщение от Arcor Посмотреть сообщение
а откуда берется вообще это имя? frmPP
form primitive placer )
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
28.10.2020, 00:16
Цитата Сообщение от peshkoff-vn Посмотреть сообщение
а откуда берется вообще это имя? frmPP
form primitive placer )
я это к тому - надо разобраться, почему закрывается вся программа, при закрытии этой формы)

Цитата Сообщение от peshkoff-vn Посмотреть сообщение
идеи рождаются в процессе работы.
так конечно! Иначе ходили бы все еще на мамонтов с камнями и кушали в пещере добычу

Цитата Сообщение от peshkoff-vn Посмотреть сообщение
Осталась одна проблема, но по всей вероятности скриптом ее не победить.
Заключается в том, что после выбора и скрытия формы мы не видим вставляемых объектов.
Т.е. их пока и нет. они появятся только после указания точки вставки. потом включается альтиумовская команда по копированию и вставки по циклу, RubberStamp.
В идеале мне хотелось бы, чтобы RubberStamp запускался сразу.
Но как это сделать я даже не представляю, думаю что это невозможно.
Поэтому лишние клики...
тут не совсем понятно, много местного сленга))

по сути ты выбираешь что-то вставить и оно появляется только после того, как ты вставил? Т.е. проблема прорисовки я так понимаю? А сверху рисовать их отдельно пока они еще не вставлены? т.е. прорисовка сперва шаблонного объекта, потом он вставляется и рисуется уже штатно. Или я не понимаю сути?)

Добавлено через 4 минуты
Цитата Сообщение от peshkoff-vn Посмотреть сообщение
Пришлось бы, но спасибо праотцам (а не тем упырям, что сейчас губят альтиум),
разработавшим движок скриптов еще для protel 98, откуда и вышел альтиум.
Именно они дали доступ к определенным (т.е. почти всем) свойствам объектов.
Благодаря этому у дуги все, что нужно для отрисовки на канвасе есть.
например, координаты начала и конца, что очень облегчает задачу.
эти данные я тоже храню в реестре.
так есть такая функция уже внутри? я просто написал функцию. где задаешь:
- где рисовать
- точка центра эллипса
- радиус по X
- радиус по Y
- начальный угол
- конечный угол

и еще один момент. в каком событии ты рисуешь? я нигде не нашел OnPaint или что-то подобное, т.е. если нарисовать что-то по клику на кнопке, затем перекрыть эту зарисованную область, то оно по сути сотрется, почему и рисуют в событии перерисовки. в этом может еще проблемы
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,498
28.10.2020, 03:46
Цитата Сообщение от peshkoff-vn Посмотреть сообщение
чтобы еще и эллипсоидную дугу засунуть.
Именно. Это часть эллипса, которая начинается от отрезка между центром прямоугольника и третьей парой координат и заканчивается на отрезке между центром прямоугольника и четвёртой парой координат. Никаких углов.
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
28.10.2020, 10:16
Цитата Сообщение от AzAtom Посмотреть сообщение
Никаких углов.
ну так в этом и проблема заключается, что по углу человек воспринимает лучшее где начинаться будет дуга, просто задать угол радиус вектору. к тому же точнее будет НУЖНАЯ точка пересечения от того, что счет идет по углу) ну как-то так, что-то с объяснениями сегодня у меня опять не клеится
0
 Аватар для peshkoff-vn
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
28.10.2020, 11:44  [ТС]
Цитата Сообщение от Arcor Посмотреть сообщение
я это к тому - надо разобраться, почему закрывается вся программа, при закрытии этой формы)
не вся программа. на видео в левом верхнем углу транспарентное окно с отображением текущих координат, дельты и при наведении на объекты там куча информации еще, называется Heads Up Display. так вот, это окно исчезает после работы программы в случае, если я в своей программе окно скрываю в середине работы. а мне это нужно, напрмиер, в режиме вставки:
- Запускаю скрипт
- выбираю ячейку
- форма скрывается, скрипт продолжает работать, т.к. необходимо выбрать точку, размножить и т.п.
так вот если в этом моменте форму именно скрыть, то Heads Up Display с информацией исчезает. напрочь.
пока победил перемещением формы в координату .Left := 10000;
так что в целом незаметно.

Цитата Сообщение от Arcor Посмотреть сообщение
так конечно! Иначе ходили бы все еще на мамонтов с камнями и кушали в пещере добычу
я не это хотел сказать. имею ввиду, что сейчас альтиум пишут программисты, которые ведать не ведают что там нужно трассировщикам. За последние 3 версии наделано всякой херни совершенно ненужной для работы, за то красиво. И по их мнению разработка платы это елозиение мышью по экрану шириной 3840, чо, у нас же много времени. Когда я выступил со своим видением ситуации и запросом на нормульную работу, меня с позором изгнали из тестовой команды.

Цитата Сообщение от Arcor Посмотреть сообщение
тут не совсем понятно, много местного сленга))
по сути ты выбираешь что-то вставить и оно появляется только после того, как ты вставил? Т.е. проблема прорисовки я так понимаю? А сверху рисовать их отдельно пока они еще не вставлены? т.е. прорисовка сперва шаблонного объекта, потом он вставляется и рисуется уже штатно. Или я не понимаю сути?)
примерно правильно понимаешь.
если я копирую объекты на плате и пытаюсь вставить, то в процессе вставки объекты как-бы таскаются следом и я вижу как они встанут, как повернуты, а не только точка вставки.
и я не могу реализовать этот процесс.
у меня как сейчас происходит:
Выбираю ячейку на форме, чтение из реестра координат, засунули все это в память, вставляем.
Но в процессе запроса точки вставки нет объектов на кончике курсора, поэтому я вставляю в какое-то свободное место. указываю точку, объекты отрисовываются и только после этого запускается механизм копирования и вставки уже командами альтиума и там объекты копируются в буфер и начинают вставляться.
поэтому я первоначальную вставку осталяю выделенной, т.к. потом выполняю Выделенное/удалить.
и первая временная вставка удаляется.
в идеале мне нужно даже не сформировать объекты на кончике курсора, в идеале бы сложить все в буфер обмена. но к нему подобраться у меня тоже не получилось.

Почему буфер обмена? потому что у меня бы решилась вторая задача, присвоения объектам цепей.
В альтиуме, если вставляются треки на поле и попадают на переходные отверстия или контактные площадки, то трекам присваивается цепь этих переходных отверстий/КП. т.е. если я сейчас укажу точку вставки центр ПО, то цепь не присвоится, мне нужно будет вручную решать задачу присвоения цепей, а это тот еще геморрой.

Цитата Сообщение от Arcor Посмотреть сообщение
так есть такая функция уже внутри?
функции нет, но у дуги есть StartX StartY EndX EndY, которые в Canvas.Arc соответствуют X3 Y3 X4 Y4,
что очень облегчает задачу

Добавлено через 4 минуты
Цитата Сообщение от AzAtom Посмотреть сообщение
Никаких углов.
ага. и все примеры для дуг с разворотом кратным 90 градусов. интересно почему.

ладно, я сперва просто еще подумал, что прямоугольник должен описывать только видимую часть дуги.
и опять тут альтиум спас, он дает для каждого объекта BoundingRectangle.
я уже и его приплел. потом понял, что прямоугольник описыват полную дугу, для меня так вообще квадрат. и вздохнул с облегчением.

Добавлено через 3 минуты
Цитата Сообщение от Arcor Посмотреть сообщение
в каком событии ты рисуешь? я нигде не нашел OnPaint
а зачем? я тоже прочитал, что что-то должно стереться. но у меня вроде ок. ничего не стирается.
но и "кнопки" мои не динамичные. нет эффекта нажатия.
рисуется в процессе чтения из реестра в RegistryRead, процедура DrawObjects(icol, jrow);
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,498
28.10.2020, 14:56
Цитата Сообщение от peshkoff-vn Посмотреть сообщение
и все примеры для дуг с разворотом кратным 90 градусов. интересно почему.
Не знаю. Но тут же легко получить из углов эти самые X3, Y3, X4, Y4 с помощью синуса и косинуса.
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
28.10.2020, 17:02
Цитата Сообщение от peshkoff-vn Посмотреть сообщение
примерно правильно понимаешь.
если я копирую объекты на плате и пытаюсь вставить, то в процессе вставки объекты как-бы таскаются следом и я вижу как они встанут, как повернуты, а не только точка вставки.
и я не могу реализовать этот процесс.
у меня как сейчас происходит:
Выбираю ячейку на форме, чтение из реестра координат, засунули все это в память, вставляем.
Но в процессе запроса точки вставки нет объектов на кончике курсора, поэтому я вставляю в какое-то свободное место. указываю точку, объекты отрисовываются и только после этого запускается механизм копирования и вставки уже командами альтиума и там объекты копируются в буфер и начинают вставляться.
вот, это и было мое представление. Я в своем CADе это решил так: сделал все визуальные объекты шаблоном, далее существует один объект каждого типа, который рисуется когда я что-то делаю мышкой, после клика скажем по сцене у меня происходит копирование этого шаблона и он ставится в нужное место и с задаными пользователем параметрами и затем уже рисуется в другом потоке и в другой логике и из другого источника, что входит в весь основной процесс.
в твоем случае возможно сделать как-то копию объекта или его части из штатного объекта, таскать его мышкой и так же при клике(ну или как вставка происходит) уже вставлять
0
 Аватар для peshkoff-vn
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 73
28.10.2020, 17:29  [ТС]
Цитата Сообщение от Arcor Посмотреть сообщение
сделать как-то копию объекта
да, это наименее затратный путь, если удалось бы "сделать копию" в буфер.
но как это сделать, для меня загадка. тут я вообще даже не знаю с какой стороны подойти
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2020, 17:29

Конструктор копирования для динамического объекта класса приемника
class first_class { public: first_class(int q) { m_q=q; cout<<"First class say HI"<<endl; } ...

Где объявить и описать функцию щелчка для динамического объекта
Вот у меня есть класс, в котором я создаю динамически картинку и лейбл на ней, подскажите пожалуйста где мне объявить и описать функцию...

Создание динамического события для объекта подключаемого из dll (динамика)
Всем привет, помогите. мучаюсь уже битый час... \ Суть такова. есть главная форма, у нее есть метод View, из подключаемой библиотеке...

Ошибка. Динамически созданному Label присвоить событие OnClick
Когда пытаюсь динамически созданному Label присвоить событие OnClick выдает ошибку. Как это исправить? AnsiString...

написать программу движущийся графический объект с двумя способоми с использованием статического объекта и с использованием динамического объекта
Движение закрашенного прямоугольника по треугольному контуру с изменением цвета при изменении направления движения.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
70
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
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 и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru