Повторное использование ввода GUI в AutoHotKey

Решение (чисто CSS) до сих пор

Если вы оставите height:auto; и используете фиксированные значения max-height, вы можете имитировать переход:

.details-expanded {
    max-height: 300px; /* try to guess a max-height for your content */
}

.details-collapsed {
    height: auto;
    max-height: 0;
    transition: max-height 500ms linear; /* pick a proportional duration */
}

Обратите внимание до длительности перехода и max-height, когда элемент расширяется. Играйте со значениями, пока не получите желаемое поведение.

Таким образом вы можете получить переход между двумя определенными значениями (в приведенном выше примере от 0 до 300), в то время как свойство height будет просто «следовать» «max-height переход и расти до тех пор, пока он не получит размер содержимого.


Демос

DEMO 1 - рабочий пример этого решения

DEMO 2 - просто демонстрация того, что происходит в DEMO 1


Наблюдения

В настоящее время переходы реализуются только между предопределенными значениями, и я предположил, что это связано с тем, что в некоторых случаях двигатель не может угадать начальное или конечное значение. Что делать, если у вас есть переход на высоту, конечное значение которого составляет 50%, но сам переход влияет на высоту родителя? Вероятно, для каждого кадра потребуется несколько расчетов reflow , вызывающих проблемы с производительностью.

Как и в случае с fabb , спецификация для переходов CSS определяет, что процентные значения должны поддерживаться, поэтому это может быть просто вопрос времени, пока двигатели не решат, в каких случаях они идут для поддержки переходов с использованием динамически оцениваемых точек. Тем не менее, я не уверен, что можно считать правильным поведением для значений auto.

1
задан LocketGoma 4 March 2019 в 06:41
поделиться

1 ответ

Если вы хотите повторно использовать один и тот же графический интерфейс в вашем коде, он нужен вам только один раз. Используйте команду GuiControl для обновления определенных элементов управления. Например, если вам нужно очистить переменную «LoopCount» для другого набора кода, вы можете сделать что-то вроде этого:

LoopCount := 0
GuiControl ,, LoopCount , %LoopCount%
Gui , Show

Функция VarSetCapacity используется для установки объема памяти переменная может использовать. В вашем случае, даже если вы очищаете его, оно все еще существует как имя и не может использоваться для более чем одного элемента управления, поскольку AHK использует это имя как один из способов его идентификации.

Из вашего кода похоже, что вы уже понимаете, как использовать Gui , Hide и Gui , Show. Я думаю, что это действительно все, что вам нужно, чтобы выполнить то, что вы просите.

0
ответ дан Evan Elrod 4 March 2019 в 06:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: