![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
порядок нахождения
AlexeyShestchenko © (2008-02-14 21:41:00)Перебыираю все компоненты на чужой форме и если там есть edit то добавляю в него текст. но тут создал для теста форму с 10 эдитами и обнаружил что перебираться эдиты начинаются с последнего и соответстввенно добавляться начинают с последнего и по убывающей что не верно в моем случае, как сделать чтобы перебор был с конца или как решить мой вопрос?
буду благодарен за ответы.
Забыл сказать что использую
EnumChildWindows
proc
GetClassName
Leonid Troyanovsky (2008-02-25 15:13:00) [1]
> GrayFace (25.02.08 14:38) [24]
> Не понял, почему i - баг?
Потому, что глобальная переменная.
> Если мне не ходит налево память, у proc должно быть больше
> 1 параметра.
Видимо, вторым идет List1.
--
Regards, LVT.
GrayFace (2008-02-25 14:38:00) [2]Не понял, почему i - баг?
> AlexeyShestchenko (14.02.08 21:58) [3]
Если мне не ходит налево память, у proc должно быть больше 1 параметра.
Получаешь массивхэндлов эдитов и упорядочиваешь его в соответствии с порядком
если (Edit1.Top < Edit2.Top) or (Edit1.Top = Edit2.Top) and (Edit1.Left < Edit2.Left)
то Edit1 < Edit2
AlexeyShestchenko (2008-02-15 15:50:00) [3]Это для конкретной программы будет, хотелось сделать более универсальной, похоже нельзя...
Спасибо за ответы!
Leonid Troyanovsky (2008-02-15 11:00:00) [4]
> AlexeyShestchenko (14.02.08 23:52) [21]
> Делал так уже,но хотелось конечно все автоматом сделать.
Делов-то.
Если положение контролов неизменно, то для заполняемой формы
достаточно один раз составить карту, а для определения хендлов
контролов использовать ChildWindowFromPoint.
Хранить же хендлы нельзя, бо возможны некие RecreateWnd.
Или, следить за их валидностью с помощью хука.
Хотя без хука, по всей видимости, здесь не обойтись.
--
Regards, LVT.
AlexeyShestchenko (2008-02-14 23:52:00) [5]Спасибо за ответ.
Делал так уже,но хотелось конечно все автоматом сделать...
Leonid Troyanovsky (2008-02-14 23:22:00) [6]
> AlexeyShestchenko (14.02.08 23:09) [19]
> дело в том что мне надо заполнять сразу все эдиты, а не
> перемещаться курсор к каждому.
Вот для этого оные эдиты и надо идентифицировать.
Например, по их положению.
Или, скажем, пройти их все предварительно мышью и пометить,
скажем, SetProp.
--
Regards, LVT.
AlexeyShestchenko (2008-02-14 23:09:00) [7]дело в том что мне надо заполнять сразу все эдиты, а не перемещаться курсор к каждому.
Leonid Troyanovsky (2008-02-14 22:54:00) [8]
> AlexeyShestchenko (14.02.08 22:49) [16]
> может по моему вопросу напишите что-нибудь полезное?
Я, например, по любому вопросу пишу (уже давно)
исключительно полезное.
Не все, правда, это могут воспринять :)
--
Regards, LVT.
Leonid Troyanovsky (2008-02-14 22:51:00) [9]
> AlexeyShestchenko (14.02.08 22:40) [13]
> 1. Почему i в моем случае баг?
Это в любом случае - баг.
Трудно объяснять, особенно, на таком уровне подготовки.
> при наведении курсора на первый эдит,с которого надо заполнять
> их, получаем его z order и передвигаемся по ним дальше и
> заполняем?
При наведении курсора и заполняем указуемый эдит.
Чего еще более?
--
Regards, LVT.
AlexeyShestchenko (2008-02-14 22:49:00) [10]может по моему вопросу напишите что-нибудь полезное?
Leonid Troyanovsky (2008-02-14 22:45:00) [11]
> tmar © (14.02.08 22:41) [14]
> вот йопт. убивать-убивать-убивать…
Да ладно, тут все по-честному.
Ну, или как обещано.
--
Regards, LVT.
ketmar (2008-02-14 22:41:00) [12]>[12] Leonid Troyanovsky © (2008-02-14 22:34:00)
вот йопт. убивать-убивать-убивать…
---
Understanding is not required. Only obedience.
AlexeyShestchenko (2008-02-14 22:40:00) [13]1. Почему i в моем случае баг?
2. Опишу еще раз задачу: мне нужно заполнить edit'ы в другой чужой программе. Я это вижу так при наведении курсора на первый эдит,с которого надо заполнять их, получаем его z order и передвигаемся по ним дальше и заполняем?
Leonid Troyanovsky (2008-02-14 22:34:00) [14]
> ketmar © (14.02.08 22:24) [9]
> дык всё равно там EDIT внизу? или я не прав?
GetClassName покажет 'TEdit'.
Ну, или то, чем именовали потомка.
--
Regards, LVT.
ketmar (2008-02-14 22:33:00) [15]>[10] Leonid Troyanovsky © (2008-02-14 22:31:00)
>так не ясно, нах оный порядок потребовался.
дык. заполнение формы, вестимо (ай, Кэтмар, ай да телепат!)
---
Understanding is not required. Only obedience.
Leonid Troyanovsky (2008-02-14 22:31:00) [16]
> AlexeyShestchenko (14.02.08 22:23) [8]
> что то я не нашел инфы по тому как определять у конкретного
> контрола его z-order...может вы знаете?
MSDN тебе в помощь.
Однако, так не ясно, нах оный порядок потребовался.
> а i это номер строки в list := tstringlist.create;
Так и поняли, что это не описка, а баг.
--
Regards, LVT.
ketmar (2008-02-14 22:24:00) [17]>[7] Leonid Troyanovsky © (2008-02-14 22:15:00)
дык всё равно там EDIT внизу? или я не прав? (очень могу быть не прав, поправь, если что)
---
Understanding is not required. Only obedience.
AlexeyShestchenko (2008-02-14 22:23:00) [18]что то я не нашел инфы по тому как определять у конкретного контрола его z-order...может вы знаете?
ну try except забыл удалить:)
а i это номер строки в list := tstringlist.create;
Leonid Troyanovsky (2008-02-14 22:15:00) [19]
> ketmar © (14.02.08 22:09) [5]
> это что за класс такой — TEdit?
Ну, такой класс есть - дельфийский субкласс EDIT.
--
Regards, LVT.
Leonid Troyanovsky (2008-02-14 22:13:00) [20]
> AlexeyShestchenko (14.02.08 21:58) [3]
Да ты, брат, еще и путанник.
Что за нах i.
Про досто верность, я, пожалуй, погорячился :)
--
Regards, LVT.