Конференция "WinAPI" » порядок нахождения
 
  • AlexeyShestchenko (14.02.08 21:41) [0]
    Перебыираю все компоненты на чужой форме и если там есть edit то добавляю в него текст. но тут создал для теста форму с 10 эдитами и обнаружил что перебираться эдиты начинаются с последнего и соответстввенно добавляться начинают с последнего и по убывающей что не верно в моем случае, как сделать чтобы перебор был с конца или как решить мой вопрос?
    буду благодарен за ответы.
    Забыл сказать что использую
    EnumChildWindows
    proc
    GetClassName
  • ketmar © (14.02.08 21:48) [1]
    натурально, в 17-й строке ошибка.

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

    ---
    Understanding is not required. Only obedience.
  • Leonid Troyanovsky © (14.02.08 21:51) [2]

    > AlexeyShestchenko   (14.02.08 21:41)  

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

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

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

    --
    Regards, LVT.
  • AlexeyShestchenko (14.02.08 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 © (14.02.08 22:08) [4]

    > AlexeyShestchenko   (14.02.08 21:58) [3]

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

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

    --
    Regards, LVT.
  • ketmar © (14.02.08 22:09) [5]
    >[3] AlexeyShestchenko (2008-02-14 21:58:00)
    это что за класс такой — TEdit? O_o

    ---
    Understanding is not required. Only obedience.
  • Leonid Troyanovsky © (14.02.08 22:13) [6]

    > AlexeyShestchenko   (14.02.08 21:58) [3]

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

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

    --
    Regards, LVT.
  • Leonid Troyanovsky © (14.02.08 22:15) [7]

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

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

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

    --
    Regards, LVT.
  • AlexeyShestchenko (14.02.08 22:23) [8]
    что то я не нашел инфы по тому как определять у конкретного контрола его z-order...может вы знаете?
    ну try except забыл удалить:)
    а i это номер строки в list := tstringlist.create;
  • ketmar © (14.02.08 22:24) [9]
    >[7] Leonid Troyanovsky © (2008-02-14 22:15:00)
    дык всё равно там EDIT внизу? или я не прав? (очень могу быть не прав, поправь, если что)

    ---
    Understanding is not required. Only obedience.
  • Leonid Troyanovsky © (14.02.08 22:31) [10]

    > AlexeyShestchenko   (14.02.08 22:23) [8]

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

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

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

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

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

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

    ---
    Understanding is not required. Only obedience.
  • Leonid Troyanovsky © (14.02.08 22:34) [12]

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

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

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

    --
    Regards, LVT.
  • AlexeyShestchenko (14.02.08 22:40) [13]
    1. Почему i в моем случае баг?
    2. Опишу еще раз задачу: мне нужно заполнить edit'ы в другой чужой программе. Я это вижу так при наведении курсора на первый эдит,с которого надо заполнять их, получаем его z order и передвигаемся по ним дальше и заполняем?
  • ketmar © (14.02.08 22:41) [14]
    >[12] Leonid Troyanovsky © (2008-02-14 22:34:00)
    вот йопт. убивать-убивать-убивать…

    ---
    Understanding is not required. Only obedience.
  • Leonid Troyanovsky © (14.02.08 22:45) [15]

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

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

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

    --
    Regards, LVT.
  • AlexeyShestchenko (14.02.08 22:49) [16]
    может по моему вопросу напишите что-нибудь полезное?
  • Leonid Troyanovsky © (14.02.08 22:51) [17]

    > AlexeyShestchenko   (14.02.08 22:40) [13]

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

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

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

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

    --
    Regards, LVT.
  • Leonid Troyanovsky © (14.02.08 22:54) [18]

    > AlexeyShestchenko   (14.02.08 22:49) [16]

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

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

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

    --
    Regards, LVT.
  • AlexeyShestchenko (14.02.08 23:09) [19]
    дело в том что мне надо заполнять сразу все эдиты, а не перемещаться курсор к каждому.
 
Конференция "WinAPI" » порядок нахождения
Есть новые Нет новых   [134431   +15][b:0.001][p:0.001]