1 (изменено: InFlames, 2011-02-02 02:12:26)

Тема: AHK: формирование DDL при клике на нем

Как обновить DropDownList при нажатии на нем.
Если указывать опцию gLabel, то она будет выполняться только при выборе одного из пунктов. А мне необходимо, что бы обновление списка выполнялось именно в момент нажатия на DDL.

Переменная List может меняться (в данном случае я ее меняю вручную клавишами 1 и 2), и мне надо, что бы открывая DDL загружался текущий список.

Хочу добиться следующего эффекта:
Запускаем скрипт. Список пуст. Нажимаем 1, нажимаем на DDL, должен быть загружен первый список.
Закрываем DDL.
Нажимаем 2, нажимаем на DDL, должен быть загружен второй список.

Gui Add, DropDownList, vDDL w120, %List%
Gui show
return

1::
List=1|2|3
return

2::
List=a|b|c
return

2

Re: AHK: формирование DDL при клике на нем

А почему бы не обновлять список уже при нажатии 1 или 2?
И будет готовый список при нажатии на ddl

3

Re: AHK: формирование DDL при клике на нем

Что означает нажатие? Если клик, то MouseGetPos определит, на каком контроле кликнули.

4

Re: AHK: формирование DDL при клике на нем

pant-79, нажатия 1 и 2 сделаны для имитации изменения списков. Эти списки могут меняться сами по себе. Например, содержимое папки. Т.к. получение списка файлов *.txt может занять некоторое время, я хочу, что бы эта процедура выполнялась только при нажатии на контрол DDL.

Допустим, мы получаем список всех *.txt файлов, которые находятся рядом со скриптом.
Этот список формируется при запуске скрипта один раз. Далее часть файлов может быть удалена.
Мне надо (без применения таймеров) обновить этот список в момент нажатия на контрол DDL.

upd:
Вот нашел решение. Список формируется именно в момент нажатия на контрол DDL.

Gui Add, DropDownList, vDDL w120, %List%
Gui show
OnMessage(0x201,"WM_LBUTTONDOWN")
return

WM_LBUTTONDOWN()
{
    global
    list=
    If a_guicontrol != DDL
        return
    Loop, %a_scriptdir%/*.txt
    {
        StringTrimRight, name, A_LoopFileName, 4
        list.=name "|"
    }
    StringTrimRight, list, list, 1    
    GuiControl,, DDL, |%list%
}

5

Re: AHK: формирование DDL при клике на нем

Извините, просто не хочется создавать новых тем, а вопрос именно про DDL. Можно ли как-то если есть один ДДЛ, по верх него вывести еще один, точно такой же, ну например просто с другим содержимым, но чтобы нижний через него как бы не просвечивался, а то вывести поверх то я смог но при наведении мышки на этом всем происходит как бы проступление первого ДДЛ через второй и второй уже нигде не виден.

6

Re: AHK: формирование DDL при клике на нем

Смотрите в справочных данных для элементов управлению опцию Hide.

7 (изменено: AleksLee, 2012-11-28 15:14:56)

Re: AHK: формирование DDL при клике на нем

Огромное спасибо, то что надо! Все заработало. А то мучился долго! СПАСИБО!!