|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Есть ли аналог дельфйскому FindComponent? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 11:04 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 11:15 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Видимо, я не совсем корректно поставил вопрос. Надо найти компонент на форме по его имени в текстовом формате. Т.е. должно быть не Код: plaintext 1.
а что-то вроде Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 11:20 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, Это, конечно, всё замечательно, но первая же ассоциация с "дельфйским FindComponent" -- это билдерный FindComponent, т.к. и тот и другой используют VCL для рисования UI. Если ты используешь другое средство для отображения UI в C++, то самое время об этом упомянуть во избежание дальнейшей игры в испорченный телефон. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 11:39 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Использую embedded C++ , компилирую под WinCE ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 11:42 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbИспользую embedded C++ В нём нет ни форм, ни компонентов, обломись. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 12:20 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSergey_rbИспользую embedded C++ В нём нет ни форм, ни компонентов, обломись. Как нет, когда прога запускает форму, на которой лежат компоненты. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 12:35 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Скажу больше, функция Код: plaintext 1.
Находит компонент на форме А связка Код: plaintext 1.
Устанавливает значение в компоненте IDC_EDIT1 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 12:46 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbКак нет, когда прога запускает форму, на которой лежат компоненты. А вот так. Программа показывает диалог на котором лежат окна. Диалог это не форма. Окна это не компоненты. А если ты внимательно присмотришься к исходникам, то увидишь, что и "IDC_EDIT1" это не имя, а макрос, разворачивающийся в числовую константу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:25 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, в приведенном тобой примере функция WINAPI GetDlgItem работать не будет, так как, согласно документации, при её вызове должно указываться два параметра - хендл окна и целочисленный (int) идентификатор элемента. Где ты там строку разглядел? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:30 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSergey_rbКак нет, когда прога запускает форму, на которой лежат компоненты. А вот так. Программа показывает диалог на котором лежат окна. Диалог это не форма. Окна это не компоненты. А если ты внимательно присмотришься к исходникам, то увидишь, что и "IDC_EDIT1" это не имя, а макрос, разворачивающийся в числовую константу. Значит функция FindWindow должна находить окно на диалоге? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:39 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
rdb_devSergey_rb, в приведенном тобой примере функция WINAPI GetDlgItem работать не будет, так как, согласно документации, при её вызове должно указываться два параметра - хендл окна и целочисленный (int) идентификатор элемента. Где ты там строку разглядел? GetDlgItem - перегруженная функция, работает и с одним параметром ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:41 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbЗначит функция FindWindow должна находить окно на диалоге? Да. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:43 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
rdb_devSergey_rb, в приведенном тобой примере функция WINAPI GetDlgItem работать не будет, так как, согласно документации, при её вызове должно указываться два параметра - хендл окна и целочисленный (int) идентификатор элемента. Где ты там строку разглядел? Вангую, что это допотопный MFC, который давно уже пора закопать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:45 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSergey_rbЗначит функция FindWindow должна находить окно на диалоге? Да. Только почему-то не находит Код: plaintext 1.
Возвращает NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:56 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
NekZrdb_devSergey_rb, в приведенном тобой примере функция WINAPI GetDlgItem работать не будет, так как, согласно документации, при её вызове должно указываться два параметра - хендл окна и целочисленный (int) идентификатор элемента. Где ты там строку разглядел? Вангую, что это допотопный MFC, который давно уже пора закопать. Тут и вангвать нечего - Embedded C++ под WinCe ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:57 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbВозвращает NULL а btnOk разве окно верхнего уровня ? документацию хоть почитал бы... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:58 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbТолько почему-то не находит Потому-то во-первых, имя класса у батона "BUTTON", а во-вторых, на нём явно написано не "btkOK", а, вангую, просто "OK". Почитай уже описание функций, которыми пытаешься пользоваться. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:03 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Cerebrumа btnOk разве окно верхнего уровня ? Кстати, да. Там, выше, я был неправ, FindWindow не найдёт дочерние окна. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:05 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov"btkOK", а, вангую, просто "OK" и не исключено, что "&OK" для hot-keys маркеров автору надо написать обход всех окон его диалога, с помощью EnumWindows/GetWindow (для дочерних) и составить список действительных имен компонентов и их классов, если Spy++ в WinCE не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:14 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Как то совсем грустно становится, если функция ищет не по имени окна, а по сообщению в нем, которое может меняться. Получается, что EditBox вообще нельзя найти, если пользователь ввел туда какой-то текст? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:15 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, просто ты изначально поставил неправильную задачу себе. Зачем тебе нужно искать таким образом окна ? У тебя чужой код и ты хочешь подправить их поведение ? Если код твой собственный, то для всех окон можно задать уникальный control id на этапе создания окна (или даже после того через SetWindowLong(Ptr)), в CreateWindow(Ex) и используя данный id точно находить то окно, которое тебе нужно Если код чужой, то тебе ничего не остается кроме полного обхода дерева окон и поиска необходимого окна по каким-либо критериям. Как правило, имени класса и порядка расположения окна в этом дереве вполне достаточно, чтобы точно сказать что ты нашел то, что нужно. По крайней мере до следующего релиза этого софта, где разработчик может внести изменения и весь твой код придется перепроверять Так зачем тебе это нужно? Давай начнем хотя бы с этого ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:24 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbПолучается, что EditBox вообще нельзя найти А его обычно и не надо искать. При создании окна вменяемый программист обычно сохраняет где-то его хэндл. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:26 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
CerebrumSergey_rb, просто ты изначально поставил неправильную задачу себе. Зачем тебе нужно искать таким образом окна ? У тебя чужой код и ты хочешь подправить их поведение ? Если код твой собственный, то для всех окон можно задать уникальный control id на этапе создания окна (или даже после того через SetWindowLong(Ptr)), в CreateWindow(Ex) и используя данный id точно находить то окно, которое тебе нужно Если код чужой, то тебе ничего не остается кроме полного обхода дерева окон и поиска необходимого окна по каким-либо критериям. Как правило, имени класса и порядка расположения окна в этом дереве вполне достаточно, чтобы точно сказать что ты нашел то, что нужно. По крайней мере до следующего релиза этого софта, где разработчик может внести изменения и весь твой код придется перепроверять Так зачем тебе это нужно? Давай начнем хотя бы с этого Все началось с того, что моя прога, написанная на Лазарусе, работавшая много лет на WinCE6, не работает под WinCe7. Вот я ищу решения под WinCe7 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:29 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSergey_rbПолучается, что EditBox вообще нельзя найти А его обычно и не надо искать. При создании окна вменяемый программист обычно сохраняет где-то его хэндл. Я уже подумываю о динамическом создании контролов, при запуске программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:31 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
То есть вместо того, чтобы применить мозг и починить свою прогу... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:31 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТо есть вместо того, чтобы применить мозг и починить свою прогу... Что значит починить? Она тупо на запускается. Насколько я понял, в WinCe7 что-то убрали, связанное в формами. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:33 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbОна тупо на запускается. если программа падает, то собери дамп и проанализируй под отладчиком, если программа зависает (процесс висит, но GUI не отображается) - рецепт тот же если программа запускается и тут же завершает свою работу, то тут только запуск exe-шника под отладчиком может пролить свет на то, где именно происходит досрочный выход ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:41 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
и да, а как поможет манипулирование дочерними окнами решить данную проблему ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:42 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbЧто значит починить?Она тупо на запускается. Так не бывает. Если система не может запустить приложение, она где-то пишет сообщение об ошибке (не обязательно на экран, у неё и журнал есть). Если система смогла запустить приложение, оно оно уже не "не запускается", а что-то делает, хотя, возможно, и не то, что ты ожидаешь. Для этого и существует весьма занимательный процесс, "отладкой" именуемый. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:53 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
CerebrumSergey_rbОна тупо на запускается. если программа падает, то собери дамп и проанализируй под отладчиком, если программа зависает (процесс висит, но GUI не отображается) - рецепт тот же если программа запускается и тут же завершает свою работу, то тут только запуск exe-шника под отладчиком может пролить свет на то, где именно происходит досрочный выход Все намного хуже. Под WinCe7 не запускается никакая программа, написанная на Лазарусе ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 15:03 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Там есть проблема с aygshell.dll Вычистил я все ее вызовы как написано здесь http://forum.lazarus.freepascal.org/index.php/topic,31533.0.html Ничего не изменилось ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 15:09 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
К сожалению, в терминале сбора данных, нет отладчика, чтобы разобраться, что не работает. Я делал прогу с пустой формой и все равно, прога вылетала с кучей AV. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 15:51 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbК сожалению, в терминале сбора данных, нет отладчика, чтобы разобраться, что не работает. Я делал прогу с пустой формой и все равно, прога вылетала с кучей AV. если есть несовместимость на архитектурном уровне, то смысла ковырять умерший код особо нет. лучше сосредоточится на его переносе на тот язык/компилятор, который гарантировано заработает без глюков со стороны архитектуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 16:02 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
CerebrumSergey_rbК сожалению, в терминале сбора данных, нет отладчика, чтобы разобраться, что не работает. Я делал прогу с пустой формой и все равно, прога вылетала с кучей AV. если есть несовместимость на архитектурном уровне, то смысла ковырять умерший код особо нет. лучше сосредоточится на его переносе на тот язык/компилятор, который гарантировано заработает без глюков со стороны архитектуры. Так гарантированно работает древний Emedded C++, у которого нет тех возможностей, которые нужны мне. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:14 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, поясни, пожалуйста, что это за Embedded C++ такой? Википедия вот что сообщает: https://en.m.wikipedia.org/wiki/Embedded_C - там ничего про Windows Mobile... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:34 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
КотовасияSergey_rb, поясни, пожалуйста, что это за Embedded C++ такой? Википедия вот что сообщает: https://en.m.wikipedia.org/wiki/Embedded_C - там ничего про Windows Mobile... Это среда разработки под различные платформы, в том числе и под WinCE ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:45 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbЯ делал прогу с пустой формой и все равно, прога вылетала с кучей AV. Вот и отлично. В сообщении об AV есть два адреса: код, который обращается к памяти и адрес к которому он обращается. А также операция, которую код пытается производить. Остаётся дело техники: использовать map-файл чтобы выяснить строчку кода исходников, которая соответствует этому адресу и понять что именно с ней может быть не так. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:45 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSergey_rbЯ делал прогу с пустой формой и все равно, прога вылетала с кучей AV. Вот и отлично. В сообщении об AV есть два адреса: код, который обращается к памяти и адрес к которому он обращается. А также операция, которую код пытается производить. Остаётся дело техники: использовать map-файл чтобы выяснить строчку кода исходников, которая соответствует этому адресу и понять что именно с ней может быть не так. Что-то я не нашел, как в Лазаре сгенерить мар файл. Он генерит файл GDB, с которым непонятно что делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:48 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbЧто-то я не нашел, как в Лазаре сгенерить мар файл. А ты вообще искал?.. https://www.freepascal.org/docs-html/user/usersu15.html Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:52 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbВсе началось с того, что моя прога, написанная на Лазарусе, работавшая много лет на WinCE6, не работает под WinCe7. Вот я ищу решения под WinCe7 А твоя прога под WinCE 7 собирается? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 18:12 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Программа на Лазаре собирается под WinCE, работает под WinCE 6, но не запускается под WinCE 7. Пробовал делать прогу с одной пустой формой, она тоже не запускается под WinCE 7. Проблема, на мой взгляд, в отсутствии в системных DLL некоторых функций, которые нужны для LCL. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 18:53 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbК сожалению, в терминале сбора данных, нет отладчика, чтобы разобраться, что не работает. Я делал прогу с пустой формой и все равно, прога вылетала с кучей AV.У терминала сбора данных должен быть, как минимум, JTAG интерфейс, который можно использовать, в том числе, и для отладки, но лучше иметь соответствующий платформе DevKit. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 19:53 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbПрограмма на Лазаре собирается под WinCE, работает под WinCE 6, но не запускается под WinCE 7. Пробовал делать прогу с одной пустой формой, она тоже не запускается под WinCE 7. Проблема, на мой взгляд, в отсутствии в системных DLL некоторых функций, которые нужны для LCL.Ты с какими lib файлами свою прогу линкуешь? С теми, что для библиотек WinCE6 или уже с новыми - для библиотек WinCE7? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 19:56 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
rdb_devSergey_rbПрограмма на Лазаре собирается под WinCE, работает под WinCE 6, но не запускается под WinCE 7. Пробовал делать прогу с одной пустой формой, она тоже не запускается под WinCE 7. Проблема, на мой взгляд, в отсутствии в системных DLL некоторых функций, которые нужны для LCL.Ты с какими lib файлами свою прогу линкуешь? С теми, что для библиотек WinCE6 или уже с новыми - для библиотек WinCE7? Линкую теми же файлами. Про библиотеки пол WinCE7 слышу впервые Где их можно скачать? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 20:13 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rb, нигде. Посмотри в гугле , что по этому поводу делается и делалось. Например: https://forum.lazarus.freepascal.org/index.php?topic=31533.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 20:32 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
КотовасияSergey_rb, нигде. Посмотри в гугле , что по этому поводу делается и делалось. Например: https://forum.lazarus.freepascal.org/index.php?topic=31533.0 Это я уже делал Код: xml 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 20:40 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Sergey_rbПроблема, на мой взгляд, в отсутствии в системных DLL некоторых функций, которые нужны для LCL. Это тебе Dependency Walker или аналогичная тулза сообщила? Или из пальца высосано?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 20:56 |
|
Как найти компонент на фоме по имени?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSergey_rbПроблема, на мой взгляд, в отсутствии в системных DLL некоторых функций, которые нужны для LCL. Это тебе Dependency Walker или аналогичная тулза сообщила? Или из пальца высосано?.. Вот отсюда https://forum.lazarus.freepascal.org/index.php?topic=31533.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 21:31 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017752]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
others: | 268ms |
total: | 427ms |
0 / 0 |