Orion9

|
Posted: Wed Jul 15, 2026 13:28 Post subject: |
|
|
sa
Да, вроде лучше стало, но все-равно, кажется, не всегда срабатывает. Нужно это учитывать, т.е. пока придется иметь в виду, что при операциях добавления и удаления, если они приводят к новому количеству строк на панели, экран не всегда может обновиться, нужно вручную его обновлять изменением размера окна ТС. Но чаще все-таки автообновление срабатывает, чем нет.
Вчера пропустил одну строку в функции HBarMergeOne. Нужно удалить лишнее присвоение.
| Code: | # сохранение панели
Local txt = gHBarList.Text
HBarSaveState(txt) |
Оно происходит в самой HBarSaveState()
| Code: | # сохранение панели
Local txt
HBarSaveState(txt) |
Еще одно небольшое изменение в HBarWndProc:
 Hidden text | Code: | If gHBarLoadError Or gHBarList.Count = 0 Then
ShowDragHint("Панель не загружена")
Return DllCall("CallWindowProcW", _
"ptr", gHBarWndProc, "hwnd", hWnd, "uint", uMsg, "wparam", wParam, "lparam", lParam)
Endif
If FileGetTime(gHBarFile) <> gHBarFileTs Then
ShowDragHint("Файл панели изменился")
Return DllCall("CallWindowProcW", _
"ptr", gHBarWndProc, "hwnd", hWnd, "uint", uMsg, "wparam", wParam, "lparam", lParam)
Endif |
С параметром lParam = -1000 не будет ненужного клика над кнопкой.
 Hidden text | Code: | Local InfoMsg
If gHBarLoadError Or gHBarList.Count = 0 Then
InfoMsg = "Панель не загружена"
ElseIf FileGetTime(gHBarFile) <> gHBarFileTs Then
InfoMsg = "Файл панели изменился"
Endif
If InfoMsg <> "" Then
ShowDragHint(InfoMsg)
lParam = -1000
Return DllCall("CallWindowProcW", _
"ptr", gHBarWndProc, "hwnd", hWnd, "uint", uMsg, "wparam", wParam, "lparam", lParam)
EndIf |
Самый надежный способ использования — загрузить файл панели вызовом подсказки над последней кнопкой. Если информация о кнопке правильная, значит все операции с загруженной панелью тоже будут правильные, т.к. карта панели составлена правильно. Но какие-то ошибки все-равно могут быть, пока полностью исключать их нельзя. |
|