View previous topic :: View next topic |
Author |
Message |
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Wed May 22, 2024 13:19 Post subject: |
|
|
Понравился один момент, так пусть не затеряется.)
Первый хинт - основной, который нужен по-умолчанию.
Второй хинт - редкий, специфический, но тоже релевантный для определенной задачи. Показывается, если после появления первого зажать Shift:
Code: | SetHotkeyAction /H:F1 F1HintText
Func F1HintText()
ShowHint(FirstHint())
sleep(500)
If IsPressed (0x10) Then ShowHint(SecondtHint())
EndFunc |
|
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Thu May 23, 2024 12:51 Post subject: |
|
|
Loopback
Наткнулся на проблемы с функцией StrLeft: почему-то больше 127 символов она не принимает, т.е.
MsgBox(StrLeft(hint, 127)) - работает.
MsgBox(StrLeft(hint, 128)) - не работает.
Разумеется, числа могут быть как и больше, так и меньше (у меня строка вообще-то больше 1000 символов). При этом со StrMid такой проблемы нет:
MsgBox(StrMid(hint, 1, 1000)) - ОК. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1329
|
(Separately) Posted: Thu May 23, 2024 14:17 Post subject: |
|
|
Orion9 wrote: | Наткнулся на проблемы с функцией StrLeft |
Да, подтверждаю. Довольно интересный и неожиданный баг с приведением типов. Надо будет проверить остальные функции.
Собственно, вот поэтому и хотелось бы выпустить следующую бету, чтобы такие мелкие, но неприятные косяки править оперативно. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Thu May 23, 2024 19:06 Post subject: |
|
|
Loopback
Беты бывают опасны, это да. Особенно когда в них меняют внутренний механизм уже более-менее рабочих функций. Недавний пример с ShowPopupMenu это показывает. Но выпускать их все же стоит, иначе вам одному будет гораздо сложнее все протестировать. Это я к тому, что нет необходимости 1,5-2 года доводить до ума очередную версию готового релиза, все-равно до конца безупречной она не будет. Если в проекте теплится жизнь, можно раз в несколько месяцев или раз в полгода радовать нас бетой
А тем временем, довёл до ума функцию показа только тех переменных окружения, которые создаются во время работы/старта ТС плагином Autorun.
Hidden text Code: | ControlSetMouseAction /L /K:C /B:1 17 ShowSetEnviroments
Global Envrs
ProcessExecGetOutput /OEM Envrs %COMSPEC% "/c SET"
If Not StrPos(Envrs, "COMMANDER_HANDLE") > 0 Then
SetEnv SET_SNAPSHOT %Envrs%
Endif
SetEnv COMMANDER_PID %AUTORUN_TCPID%
SetEnv COMMANDER_HANDLE %AUTORUN_TCHANDLE%
Func ShowSetEnviroments()
EnvrsHint(SET_SNAPSHOT, 60)
Sleep(500)
If IsPressed (0x10) Then EnvrsHint(Envrs, 60)
If IsPressed (0x11) Then EnvrsHint(SET_SNAPSHOT, 90)
EndFunc
Func EnvrsHint(SetVar, Length)
Local out, hint, line, i
ProcessExecGetOutput /OEM out %COMSPEC% "/c SET"
i=1
while i < 200
line=StrPart(out, auCRLF, i)
If ERROR = 1 Then Break
If StrPos(line, "SET_SNAPSHOT") > 0 Or StrPos(SetVar, line) > 0 Then
i = i + 1
Continue
Endif
If StrLen(line) > Length Then
line = StrLeft(line, Length)
Endif
hint = hint & line & auLF
i = i + 1
Wend
i = StrLen(hint) - 1
ShowHint(StrMid(hint, 1, i))
EndFunc |
Теперь еще и с зажимом Shift, Ctrl есть опции. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1329
|
(Separately) Posted: Fri May 24, 2024 15:29 Post subject: |
|
|
Orion9 wrote: | Особенно когда в них меняют внутренний механизм уже более-менее рабочих функций. |
Это да, не люблю трогать такие вещи. Хотя что-то базовое еще придется трогать. Но это не до ближайшей беты, иначе тестирование затянется навечно.
Orion9 wrote: | Это я к тому, что нет необходимости 1,5-2 года доводить до ума очередную версию готового релиза, все-равно до конца безупречной она не будет. |
Тут немного другой случай, дело совсем не в перфекционизме. Но после выхода ближайшей беты надеюсь прийти к более равномерному выпуску версий. Orion9 wrote: | А тем временем, довёл до ума функцию показа только тех переменных окружения, которые создаются во время работы/старта ТС плагином Autorun. |
Попробовал, интересное решение. Возможно, возьму на вооружение, но только с тем же модификатором, который изначально вызывает хинт (в данном случае Ctrl). Перескакивать на другой модификатор лично мне что-то не очень удобно.
Кстати, стоит упомянуть, что метод работает, только если этот код размещен до других установок переменных окружения через Autorun. Иначе показывает только COMMANDER_HANDLE |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Sat May 25, 2024 19:45 Post subject: |
|
|
Loopback
Я в тот момент очень торопился, на потом откладывать не хотел - в итоге пост получился недописанным.
Да, нужно размещать код сразу за LoadLibrary в шапке основного конфига и перед объявлениями других переменных окружения.
Поскольку ТС при перезагрузке командой cm_Exit 9 тянет за собой все переменные окружения, пришлось создать дополнительную проверку на переменную COMMANDER_HANDLE, которая не существует при первой загрузке, хотя при последующих перезагрузках ее содержимое меняется.
Но мне понравилось больше то, что фактически там сейчас три разных хинта. Если вызвать первый хинт с Ctrl, он покажется. Но если при этом не отпускать Ctrl, то покажется второй, более широкий хинт. Если же сразу после показа первого нажать Shift, то всплывет третий, маленький, который отобразит только изменения в переменных, характерные для этой конкретной сессии/перезагрузки.
Прикольная фича, я считаю. Уже взял ее на вооружение в заголовке, поскольку там теперь два хинта - один с технической информацией о файлах. Надеюсь, завтра всё доделать, да и пора закрывать тему с заголовком.
P.s. А с хинтом можно поступить еще интереснее. Повесить его на F1, к примеру. Тогда после нажатия на F1, если сразу зажать шифт после этого, то на экране всплывет второй хинт вслед за первым. Я, кстати, так и сделал c хинтом заголовка) |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2599
|
(Separately) Posted: Tue May 28, 2024 17:48 Post subject: |
|
|
Наверное, я слишком многого хочу . Нельзя ли сделать так, чтобы после появления подсказки для заданного элемента окна, она не исчезала при перемещении мышки, пока её указатель находится внутри данного элемента (например, в пределах функциональной кнопки или заголовка)? По аналогии с подсказкой для кнопок панели инструментов. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Tue May 28, 2024 21:59 Post subject: |
|
|
sa
А если использовать ShowHint?
Code: | ControlSetHint /F /D:100 /H:2 0 "TitleHintText"
Func TitleHintText()
ShowHint(GetInfoData())
EndFunc |
Приемлемо, но все же не то... Или пойдет? |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2599
|
(Separately) Posted: Tue May 28, 2024 23:37 Post subject: |
|
|
Orion9 wrote: | но все же не то... |
Да, не то! Для закрытия потребуется клик или нажатие ESC, а не просто перемещение указателя на другой объект (другую кнопку в случае панели инструментов TC).
Удобнее просто замереть (если рука крепка). |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Wed May 29, 2024 00:42 Post subject: |
|
|
sa wrote: | Удобнее просто замереть (если рука крепка). |
Смешно)) |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1329
|
(Separately) Posted: Wed May 29, 2024 23:26 Post subject: |
|
|
sa wrote: | Наверное, я слишком многого хочу |
Хотел утром ответить что да, потом посмотрел - а почему бы и нет
Версия Tweaks от 29.05.2024
Вроде выглядит и неплохо, но не уверен, стоит ли делать так по умолчанию, поэтому включается временным ключом /R в ControlSetHint. На маленьких кнопках ок, но вот на больших функциональных как по мне спорно. Кроме того с опцией /O работать не будет. В общем, надо еще погонять, в случае чего ключ можно инвертировать. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Thu May 30, 2024 00:02 Post subject: |
|
|
Loopback
Quote: | Вроде выглядит и неплохо, но не уверен, стоит ли делать так по умолчанию |
На мой взгляд, не стоит. Для каких-то задач , наверное, пригодится, но этот ключ нарушает привычную логику. Попробовал сейчас в деле, т.ч. исхожу не только из теории.
А что имеется в виду "с опцией /O работать не будет"? |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2599
|
(Separately) Posted: Thu May 30, 2024 09:41 Post subject: |
|
|
Loopback wrote: | а почему бы и нет |
Я подозревал, что с Autorun всё возможно .
Спасибо! Работает немного иначе, чем в варианте с тоталовскими подсказками для кнопок панели инструментов, но это даже и лучше: можно не только по области функциональной кнопки или заголовка перемещать указатель, но и по полю самой подсказки. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1329
|
(Separately) Posted: Thu May 30, 2024 23:40 Post subject: |
|
|
Orion9 wrote: | но этот ключ нарушает привычную логику |
Да не, если и нарушает, то только когда используются разные подходы одновременно. Если на всех контролах будет одинаково, то нормально. Но я что-то не уверен, что мне больше нравится новый вариант. Вообще, может и не нужна эта опция для каждого контрола отдельно, сделать одну общую на всё...
Orion9 wrote: | А что имеется в виду "с опцией /O работать не будет"? |
При включенной опции /O этот метод работать не будет, т.к. фокус уходит к подсказке.
sa wrote: | Я подозревал, что с Autorun всё возможно |
Если бы, но впечатление, конечно же, обманчивое Не в каждом случае можно легко достигнуть результата.
sa wrote: | Работает немного иначе, чем в варианте с тоталовскими подсказками |
Очевидно, что со стороны меньше возможностей контроля. Многие вещи, которые легко делаются изнутри программы, намного сложнее и "костыльнее", если навешивать их извне. Особенно в случае с Delphi. Но не думаю, что это критично. |
|
Back to top |
|
|
yozhik
Joined: 04 May 2014 Posts: 219 Location: Электросталь
|
(Separately) Posted: Fri May 31, 2024 00:15 Post subject: |
|
|
Loopback
У меня на кнопку назначен хинт и меню по ПКМ. Подвожу курсор к кнопке, жму ПКМ, появляется меню, затем всплывает хинт поверх меню. И в таком сочетании куда курсором уже ни двигай, хинт не закрывается, пока не щёлкнешь по пункту меню или где ещё в окне ТК, или Esc-ом меню не закроешь:
Возможно ли это как-то отследить, чтобы при открытом меню хинт не всплывал?
Loopback wrote: | При включенной опции /O этот метод работать не будет, т.к. фокус уходит к подсказке. |
Где-то что-то я опять прозевал... а где эта опция /O ? _________________ Amo ergo sum |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|