169 похожих чатов

Хм, чето я даже в раздумиях. В Лазаре криво реализована

функция ComponentAtPos, причем 99 процентов с этим врятли столкнуться, поэтому и спрашиваю совета. Суть, если пишешь составной контрол с достаточно сложной иерархией, когда для стриминга контрол с чайлдами выглядит как связка TControl -> TComponent -> TControl (т.е. 3 уровня, причем чайлды третьего уровне парентом есесно имеют рута с первого, а компоненты второго чисто виртуализация) .
Так вот при вызове ComponentAtPos лазарь дергает GetChild руту, и получает на выходе коллекцию TComponent у которых (блин) берет их координаты (как, зачем, и главное нахрена - не понятно) и т.к. это компонент и координаты у него квадрат 24 на 24, он считает что этот компонент вне диапазона мыши и просто не перебирает его чайлдов, которые уже реальные контролы.
Я конечно обошел это костылем у себя в классе, и вот думаю - нужно ли патчить саму функцию или оставить как есть? Могу в качестве примера накидать демку которая может показать суть проблемы (но мин 30-40 займет, уже и так башка не варит).

6 ответов

28 просмотров

Сань, надо патчить. Я натыкался на неправильное определение координат мыши в линухе https://forum.lazarus.freepascal.org/index.php/topic,44027.msg309123.html#msg309123

Ed Doc
Сань, надо патчить. Я натыкался на неправильное оп...

Угу, гляну в ПН пример, может это не из этой серии\

Илюха а тебе не кажется что метод GetChild у компонента подразумевает у него наличие чайлдов? :)

Стикер

ок, просëк, значит действительно у них поломано

Iluha Companets
ок, просëк, значит действительно у них поломано

Я если чесно вообще не понял зачем у них так сделано и есть вызов этой поломаной фунции когда у них контрол над которым произошел клик СРАЗУ приходит как Sender - зачем они делают лишние действия по поиску его-же, вообще не понятно

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
50
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
10
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
Guys Who’s kurdish on this group?
Hiwa Amiri
11
Hello, I need a hand, this is my code: body: ExtendedImageGesturePageView.builder( scrollDirection: Axis.vertical, controller: _pageController, itemCou...
𝘞𝘦𝘢𝘳𝘪𝘯𝘨𝘔𝘦𝘥𝘢𝘭 🦋
2
In nodejs if you do something as follows const before = Date.now() async someDBIO() const after = Date.now()-before Ideally the after time would give you the time it spent i...
Omnipotent
3
Всем привет! Нужно найти номер позиции, с которой подстрока входит в строку. Код работает правильно за исключением случаев, когда две одинаковые буквы идут подряд (см. скрин)....
Ыиу
6
можно эстетический вопрос? у меня есть кучка мелких-мелких функций типа: function AddInteger(aparent:pointer; aname:PWideChar; aval:Int32):pointer; begin result:=AddNode(apa...
Alexey Kulakov
3
Карта сайта