Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2009.01.11;
Скачать: [xml.tar.bz2];

Вниз

порядок нахождения   Найти похожие ветки 

 
AlexeyShestchenko   (2008-02-14 21:41) [0]

Перебыираю все компоненты на чужой форме и если там есть edit то добавляю в него текст. но тут создал для теста форму с 10 эдитами и обнаружил что перебираться эдиты начинаются с последнего и соответстввенно добавляться начинают с последнего и по убывающей что не верно в моем случае, как сделать чтобы перебор был с конца или как решить мой вопрос?
буду благодарен за ответы.
Забыл сказать что использую
EnumChildWindows
proc
GetClassName


 
ketmar ©   (2008-02-14 21:48) [1]

натурально, в 17-й строке ошибка.

зыж как вы достали…

---
Understanding is not required. Only obedience.


 
Leonid Troyanovsky ©   (2008-02-14 21:51) [2]


> AlexeyShestchenko   (14.02.08 21:41)  

> с последнего и соответстввенно добавляться начинают с последнего
> и по убывающей что не верно в моем случае,

Вне зависимости от представлений о верности
контролы перебираются в соответствии с их z-order.

Хотя, и на это я бы не закладывался, а выбрал бы
более достоверный метод идентификации.

--
Regards, LVT.


 
AlexeyShestchenko   (2008-02-14 21:58) [3]

Вот код, предложите другие "более достоверный метод идентификации."
Спасибо за ответы.
function proc(wnd:hWnd):boolean;stdcall;
var wndClass:array[0..255] of char;
begin
Result:=True;
GetClassName(wnd, wndClass, sizeof(wndClass));
if wndClass="TEdit" then
begin
 if i = list1.Count then
 Exit;
 try
   SendMessage(wnd,WM_SETTEXT,0,LParam(PAnsiChar(list1.Strings[i])));
   inc(i);
 except
 end;
end;


 
Leonid Troyanovsky ©   (2008-02-14 22:08) [4]


> AlexeyShestchenko   (14.02.08 21:58) [3]

> Вот код, предложите другие "более достоверный метод идентификации.

Мы не увидели идентификации, зависящей от z-order.
И что за try-except.

--
Regards, LVT.


 
ketmar ©   (2008-02-14 22:09) [5]

>[3] AlexeyShestchenko (2008-02-14 21:58:00)
это что за класс такой — TEdit? O_o

---
Understanding is not required. Only obedience.


 
Leonid Troyanovsky ©   (2008-02-14 22:13) [6]


> AlexeyShestchenko   (14.02.08 21:58) [3]

Да ты, брат, еще и путанник.
Что за нах i.

Про досто верность, я, пожалуй, погорячился :)

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-02-14 22:15) [7]


> ketmar ©   (14.02.08 22:09) [5]

> это что за класс такой — TEdit?

Ну, такой класс есть - дельфийский субкласс EDIT.

--
Regards, LVT.


 
AlexeyShestchenko   (2008-02-14 22:23) [8]

что то я не нашел инфы по тому как определять у конкретного контрола его z-order...может вы знаете?
ну try except забыл удалить:)
а i это номер строки в list := tstringlist.create;


 
ketmar ©   (2008-02-14 22:24) [9]

>[7] Leonid Troyanovsky © (2008-02-14 22:15:00)
дык всё равно там EDIT внизу? или я не прав? (очень могу быть не прав, поправь, если что)

---
Understanding is not required. Only obedience.


 
Leonid Troyanovsky ©   (2008-02-14 22:31) [10]


> AlexeyShestchenko   (14.02.08 22:23) [8]

> что то я не нашел инфы по тому как определять у конкретного
> контрола его z-order...может вы знаете?

MSDN тебе в помощь.
Однако, так не ясно, нах оный порядок потребовался.

> а i это номер строки в list := tstringlist.create;

Так и поняли, что это не описка, а баг.

--
Regards, LVT.


 
ketmar ©   (2008-02-14 22:33) [11]

>[10] Leonid Troyanovsky © (2008-02-14 22:31:00)
>так не ясно, нах оный порядок потребовался.

дык. заполнение формы, вестимо (ай, Кэтмар, ай да телепат!)

---
Understanding is not required. Only obedience.


 
Leonid Troyanovsky ©   (2008-02-14 22:34) [12]


> ketmar ©   (14.02.08 22:24) [9]

> дык всё равно там EDIT внизу? или я не прав?

GetClassName покажет "TEdit".
Ну, или то, чем именовали потомка.

--
Regards, LVT.


 
AlexeyShestchenko   (2008-02-14 22:40) [13]

1. Почему i в моем случае баг?
2. Опишу еще раз задачу: мне нужно заполнить edit"ы в другой чужой программе. Я это вижу так при наведении курсора на первый эдит,с которого надо заполнять их, получаем его z order и передвигаемся по ним дальше и заполняем?


 
ketmar ©   (2008-02-14 22:41) [14]

>[12] Leonid Troyanovsky © (2008-02-14 22:34:00)
вот йопт. убивать-убивать-убивать…

---
Understanding is not required. Only obedience.


 
Leonid Troyanovsky ©   (2008-02-14 22:45) [15]


> tmar ©   (14.02.08 22:41) [14]

> вот йопт. убивать-убивать-убивать…

Да ладно, тут все по-честному.
Ну, или как обещано.

--
Regards, LVT.


 
AlexeyShestchenko   (2008-02-14 22:49) [16]

может по моему вопросу напишите что-нибудь полезное?


 
Leonid Troyanovsky ©   (2008-02-14 22:51) [17]


> AlexeyShestchenko   (14.02.08 22:40) [13]

> 1. Почему i в моем случае баг?

Это в любом случае - баг.
Трудно объяснять, особенно, на таком уровне подготовки.

> при наведении курсора на первый эдит,с которого надо заполнять
> их, получаем его z order и передвигаемся по ним дальше и
> заполняем?

При наведении курсора и заполняем указуемый эдит.
Чего еще более?

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-02-14 22:54) [18]


> AlexeyShestchenko   (14.02.08 22:49) [16]

> может по моему вопросу напишите что-нибудь полезное?

Я, например, по любому вопросу пишу (уже давно)
исключительно полезное.

Не все, правда, это могут воспринять :)

--
Regards, LVT.


 
AlexeyShestchenko   (2008-02-14 23:09) [19]

дело в том что мне надо заполнять сразу все эдиты, а не перемещаться курсор к каждому.


 
Leonid Troyanovsky ©   (2008-02-14 23:22) [20]


> AlexeyShestchenko   (14.02.08 23:09) [19]

> дело в том что мне надо заполнять сразу все эдиты, а не
> перемещаться курсор к каждому.

Вот для этого оные эдиты и надо идентифицировать.
Например, по их положению.
Или, скажем, пройти их все предварительно мышью и пометить,
скажем, SetProp.

--
Regards, LVT.


 
AlexeyShestchenko   (2008-02-14 23:52) [21]

Спасибо за ответ.
Делал так уже,но хотелось конечно все автоматом сделать...


 
Leonid Troyanovsky ©   (2008-02-15 11:00) [22]


> AlexeyShestchenko   (14.02.08 23:52) [21]

> Делал так уже,но хотелось конечно все автоматом сделать.

Делов-то.
Если положение контролов неизменно, то для заполняемой формы
достаточно один раз составить карту, а для определения хендлов
контролов использовать ChildWindowFromPoint.

Хранить же хендлы нельзя, бо возможны некие RecreateWnd.
Или, следить за их валидностью с помощью хука.
Хотя без хука, по всей видимости, здесь не обойтись.

--
Regards, LVT.


 
AlexeyShestchenko   (2008-02-15 15:50) [23]

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


 
GrayFace   (2008-02-25 14:38) [24]

Не понял, почему 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


 
Leonid Troyanovsky ©   (2008-02-25 15:13) [25]


> GrayFace   (25.02.08 14:38) [24]

> Не понял, почему i - баг?

Потому, что глобальная переменная.

> Если мне не ходит налево память, у proc должно быть больше
> 1 параметра.

Видимо, вторым идет List1.

--
Regards, LVT.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2009.01.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.006 c
2-1227860921
atom321
2008-11-28 11:28
2009.01.11
челая часть числа


15-1226665897
lorin
2008-11-14 15:31
2009.01.11
ActiveIRC Component


2-1227711457
ekto
2008-11-26 17:57
2009.01.11
запрос


3-1212577949
Igor_34
2008-06-04 15:12
2009.01.11
Запись документа WORD в BLOB-поле


1-1205820119
Прохожий 001
2008-03-18 09:01
2009.01.11
Выделение части текста в TEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский