Orion9

|
Posted: Thu Jan 16, 2025 00:08 Post subject: |
|
|
AkulaBig, я понял.
Просто я почувствовал то же самое, что, вероятно, чувствовали и вы: не смог до конца понять, что мне нужно, и внятно сформулировать задачу Причину этого описал выше - склеенная панель несет больше проблем, чем пользы. Малейший рассинхрон - и можно окончательно запутаться в трех соснах трех панелях: главной, вспомогательной и объединенной. Что самое плохое - склеенную панель уже не так просто разобрать на части, как ее собрать.
Но может быть для вашей задачи это и не нужно? Может быть, вам просто достаточно сделать две одинаковые главные панели и переключаться между ними по кругу: одна - официальная, другая - черновая. На вторую вы и будете докидывать кнопки, которые используются только для вашей работы, а первая будет оставаться в нетронутом виде. И алгоритм от этого будет гораздо проще, а значит и круче ))
Переключение по кругу между тремя панелями:
Code: | # Alt+F1
SetHotkeyAction /K:A /H:F1 MainBarCycle
Func MainBarCycle()
Static j = -1, aBarName = List("Main","Help", "Vertical")
j += 1
j = (j > aBarName.Count - 1 ? 0 : j)
bar = "%COMMANDER_PATH%\Bars\" & aBarName[j] & ".bar"
IniWrite /R %COMMANDER_INI% "Buttonbar" "Buttonbar" %bar%
SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
SendCommand 2901
SendCommand 2901
sleep(50)
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
WinRedraw(1)
ShowHint("Включена: " & aBarName[j] & ".bar")
Sleep(800)
WinSetState(23)
EndFunc
|
Если не нужно запоминать панель в wincmd.ini и посылать cm_VisButtonBar для обновления изменений в окне ТС, то можно просто загружать ее командой OPENBAR, как это сделано постом выше, т.е CommandExec("em_open_bar", aBarName[j] & ".bar")
Code: | [em_open_bar]
cmd=OPENBAR
param=%|COMMANDER_PATH|\Bars\%A0 |
Но тогда при выходе, главная панель будет оставаться одной и той же. |
|