Что нового

[Элементы GUI] Statusbar - вывод текста в несколько строк

saavaage

Знающий
Сообщения
171
Репутация
17
Собственно вопрос:
1. можно ли штатными средствами Statusbar организовать вывод в нее текстовой информации в несколько строк (аналог кнопочного стиля $BS_MULTILINE)?
Ничего подобного не нашел. На крайний случай держу в голове возможность вообще перехода на строку состояния через GUICtrlCreateLabel, но может быть все не так сложно?

2. Судя по всему в Statusbar есть жесткое ограничение на кол-во символов в строке (пример это наглядно демонстрирует). Опытным путем вышел на ограничение в 127 символов, включая пробелы. Есть ли возможность это как-то пофиксить?

Вот примерный код:

Код:
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <WindowsConstants.au3>

$gui = GUICreate("Status Bar Create", 500, -1, -1, -1, $WS_SIZEBOX)
$hStatus = _GUICtrlStatusBar_Create ($gui)
_GUICtrlStatusBar_SetText($hStatus, 'Установить для всех разделов одинаковый размер Корзины: от 0 до 15%. Внимание!! После 9%, 0xa=10%, 0xb=11%, 0xc=12%, 0xd=13%, 0xe=14%, 0xf=15%.')
GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    Select
  Case $msg = $GUI_EVENT_RESIZED
   _GUICtrlStatusBar_Resize ($hStatus)
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
    EndSelect
WEnd


PS WindowsXP Pro Rus SP3

Спасибо за помощь.
 
Автор
S

saavaage

Знающий
Сообщения
171
Репутация
17
Пока выкрутился через обычный label

Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$gui = GUICreate("Status Bar Create", 500, -1, -1, -1, $WS_SIZEBOX)
$hStatus = GUICtrlCreateLabel ('Установить для всех разделов одинаковых размер Корзины: от 0 до 15%. Внимание!!После 9%, 0xa=10%, 0xb=11%, 0xc=12%, 0xd=13%, 0xe=14%, 0xf=15%.12345678911111111111 1111111111111111 111111111111111111 11111111111 222222222222 33333333333333333 44444444444444444444444444 55555555555555555555555 6666666666666666666', 0,345,500,30, $BS_MULTILINE+$SS_SUNKEN)

GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
     Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd


Но хотелось бы получить более естественный вариант решения проблемы (используя Statusbar)...
 
Автор
S

saavaage

Знающий
Сообщения
171
Репутация
17
Немного другой вариант на туже тему (через GUIOnEventMode), с использование функции GUICtrlOnHover.au3:

Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUICtrlOnHover.au3>

Opt("GUIOnEventMode", 1)


$hGUI = GUICreate('Тест', 619, 475, -1, -1,  $WS_SIZEBOX)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
$hStatus_Pre = GUICtrlCreateLabel('', 0,418,619,32, $SS_SUNKEN)
$hStatus = GUICtrlCreateLabel('Вывод пояснительной инфо по кнопкам', 10,420,599,28, $BS_MULTILINE+$SS_RIGHT)
GUICtrlSetColor(-1, 0x0066ff)

$icon = GUICtrlCreateIcon("shell32.dll", 10, 150, 20)
_GUICtrl_OnHoverRegister(-1, '_Hover_Func', '_Leave_Hover_Func')
GUICtrlSetCursor(-1, 0)

$combo = GUICtrlCreateCombo('Комбо', 200, 25, 50)
_GUICtrl_OnHoverRegister(-1, '_Hover_Func', '_Leave_Hover_Func')
GUICtrlSetCursor(-1, 0)

$btn = GUICtrlCreateButton('Кнопка', 250, 95, 100, 25)
_GUICtrl_OnHoverRegister(-1, '_Hover_Func', '_Leave_Hover_Func')
GUICtrlSetCursor(-1, 0)

$lbl = GUICtrlCreateLabel("Лэйбл", 250, 200, 330, 100)
_GUICtrl_OnHoverRegister(-1, '_Hover_Func', '_Leave_Hover_Func')
GUICtrlSetCursor(-1, 0)

$ckb = GUICtrlCreateCheckbox("Чекбокс", 105, 65, 70, 25)
_GUICtrl_OnHoverRegister(-1, '_Hover_Func', '_Leave_Hover_Func')
GUICtrlSetCursor(-1, 0)

GUISetState()

While 1
    Sleep(100)
WEnd


Func CLOSEClicked()
   Exit
EndFunc

Func _Hover_Func($CtrlID)
    Switch $CtrlID
        Case $icon
            GUICtrlSetData($hStatus, 'ИКОНКА РАБОТАЕТ!  для всех разделов одинаковых размер Корзины: от 0 до 15%. Внимание!! После 9%, 0xa=10%, 0xb=11%, 0xc=12%, 0xd=13%, 0xe=14%, 0xf=15%.1111111111111111111111 22222222222222222 333333333333101')
        Case $btn
            GUICtrlSetData($hStatus, 'Кнопка Работает!. 1111111111 222222222222222 3 333333333')
		Case $lbl
            GUICtrlSetData($hStatus, 'Лэйбл Работает!!!')
		Case $combo
            GUICtrlSetData($hStatus, 'Комбо Работает!!!')
		Case $ckb
            GUICtrlSetData($hStatus, 'Чекбокс Работает!!!')
    EndSwitch
EndFunc   ;==>_Hover_Func

Func _Leave_Hover_Func($CtrlID)
    GuiCtrlSetData($hStatus, 'Вывод пояснительной инфо по кнопкам')
EndFunc   ;==>_Leave_Hover_Func

Т.к. ответ на главный вопрос (вывод инфо в статусбар в несколько строк) ответ получил, то считаю тему решенной и закрытой.
 
Верх