Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Tip (GUICtrlSetTip) в n строк/Авторазбиение Tip на строки заданной длины

Ответить
Настройки темы
[решено] Tip (GUICtrlSetTip) в n строк/Авторазбиение Tip на строки заданной длины

Ветеран


Сообщения: 904
Благодарности: 162


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: saavaage
Дата: 19-09-2010
Описание: корректировка заголовка
Проблема:
есть, положим, простейший скрипт с подсказкой:

Код: Выделить весь код
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

$hMain_GUI = GUICreate("OPPPPP", 619, 442, 189, 122)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

$Tab1 = GUICtrlCreateTab(8, 16, 601, 377)
$DriverErrors = GUICtrlCreateTabItem("XXXXXXXXXX")

GUICtrlCreateGroup("YYYYYYYYYYYYYYYY", 14, 40, 255, 345)

GUICtrlCreateLabel('Подсказка. Наведи мышку!', 300, 250, 250, 45)
GUICtrlSetTip(-1, 'Внимание! Для показа защищенных системных файлов, необходимо отмениь скрытие папок и файлов!')

GUICtrlCreateTabItem("")
GUISetState()

While 1
    Sleep(100)
WEnd

Func CLOSEClicked()
  Exit
EndFunc
Как сделать, чтобы подсказка выводилась в несколько строк? Как сделать, чтобы длина строки подсказки была определенной длины?

PS в справке ничего подобного не нашел . Версия Autoit 3.3.6.1

Заранее спасибо за любую помощь.

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 15:41, 19-09-2010

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата saavaage:
Как сделать, чтобы подсказка выводилась в несколько строк? »
Добавить @CRLF там где нужно разделить строку.

Цитата saavaage:
Как сделать, чтобы длина строки подсказки была определенной длины? »
StringLeft($sTip, N)?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:03, 19-09-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 904
Благодарности: 162

Профиль | Отправить PM | Цитировать


Creat0R, спасибо. Я был невнимателен: пробовал использовать @CRLF, но забывал ставить после @CRLF знак &.
Итак, правильный вариант :

Код: Выделить весь код
GUICtrlSetTip(-1, 'Внимание! Для показа защищенных системных файлов,' & @CRLF & 'необходимо отмениь скрытие папок и файлов!')
Creat0R, по второму вопросу я был немного неточен.
Я хотел узнать, можно ли, задав длину подсказки, получить автоматический вывод текста подсказки в несколько строк?
То есть, у меня срока подсказки содержит 500 символов. Я задаю длину в 50 и получаю на мониторе подсказку в 10 строк? при этом разбиение происходит по словам - если граница строки приходится на слово, то слово не бьется, а перенос на следующую строку происходит после его окончания. Не уверен, но, возможно, это можно реализовать через регулярные выражения + @CRLF?

-------
мы рождены, чтоб сказку сделать былью


Последний раз редактировалось saavaage, 19-09-2010 в 16:54.


Отправлено: 16:25, 19-09-2010 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата saavaage:
срока подсказки содержит 500 символов. Я задаю длину в 50 и получаю на мониторе подсказку в 10 строк? при этом разбиение происходит по словам - если граница строки приходится на слово, то слово не бьется, а перенос на следующую строку происходит после его окончания. »
Пример:

Код: Выделить весь код
$sStr = 'В соответствии со статьей 21 Закона от 21.07.1997 г. N 122-ФЗ "О государственной регистрации прав на недвижимое имущество и сделок с ним" срок исправления технических ошибок, допущенных при государственной регистрации прав, не должен превышать трех календарных дней с момента обнаружения ошибки или получения заявления от любого заинтересованного лица в письменной форме об исправлении технических ошибок. До получения заявителем документов после проведения государственной регистрации прав срок исправления технических ошибок осуществляется в течение дня, отведенного для получения документов.'

#include <GUIConstantsEx.au3>

$hGUI = GUICreate("_StringAlignment", 250, 150)

GUICtrlCreateCheckbox("Закон 122-ФЗ", 20, 20)
GUICtrlSetTip(-1, _StringAlignment($sStr, 50, 4))

GUISetState(@SW_SHOW, $hGUI)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _StringAlignment($sStr, $iWidth, $iIndent = 0, $iMaxExpand = -1, $fLastExpand = 0)
    Local $Part, $Pos, $Count = 0, $Prev = 0, $Stop = 0, $Result = '', $Tab = ''

    If $iIndent > 0 Then
        For $i = 1 To $iIndent
            $Tab &= @TAB
        Next
    EndIf
    $sStr = $Tab & StringStripWS($sStr, 7)
    Do
        $Pos = StringInStr($sStr, ' ', 0, 1, $Prev + 1)
        If Not $Pos Then
            $Pos = StringLen($sStr)
            $Stop = 1
        EndIf
        If $Pos > $iWidth + 1 Then
            $Part = StringLeft($sStr, $Prev - 1)
            $sStr = StringTrimLeft($sStr, $Prev)
            $Result &= _StringExpand($Part, $iWidth, $iMaxExpand) & @CRLF
            $Prev = $Pos - $Prev
            $Count += 1
        Else
            $Prev = $Pos
        EndIf
    Until $Stop
    If ($fLastExpand) And ($Count) Then
        $sStr = _StringExpand($sStr, $iWidth, $iMaxExpand)
    EndIf
    $Result &= $sStr
    If $iIndent > 0 Then
        $Result = StringReplace($Result, $Tab, StringReplace($Tab, @TAB, ' '), 1)
    EndIf
    Return $Result
EndFunc   ;==>_StringAlignment

Func _StringExpand($sStr, $iWidth, $iMaxExpand)
    Local $aWord, $Add, $Num, $Space

;   $sStr = StringStripWS($sStr, 7)
    $aWord = StringSplit($sStr, ' ')
    If $aWord[0] < 2 Then
        Return $sStr
    EndIf
    $Num = $iWidth - (StringLen($sStr) - $aWord[0] + 1)
    $Add = Mod($Num, $aWord[0] - 1)
    $Num = ($Num - $Add) / ($aWord[0] - 1)
    If ($iMaxExpand > 0) And ($Num >= $iMaxExpand) Then
        $Num = $iMaxExpand
        $Add = 0
    EndIf
    $Space = StringFormat('%' & $Num & 's', '')
    For $i = 1 To $Add
        $aWord[$i] &= ' '
    Next
    $sStr = $aWord[1]
    For $i = 2 To $aWord[0]
        $sStr &= $Space & $aWord[$i]
    Next
    Return $sStr
EndFunc   ;==>_StringExpand

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:24, 19-09-2010 | #4


Ветеран


Сообщения: 904
Благодарности: 162

Профиль | Отправить PM | Цитировать


Creat0R, если бы можно было, нажал бы спасибо 3 раза. Спасибо! Тема решена.

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 17:39, 19-09-2010 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Tip (GUICtrlSetTip) в n строк/Авторазбиение Tip на строки заданной длины

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Delphi - строки! nolx Программирование и базы данных 0 31-05-2010 19:28
MySQL - Автозамена строки из другой строки - trigger? procedure ? BugZZ Программирование и базы данных 0 18-09-2009 09:51
[решено] Visual Tool Tip(добавление в автозагрузку) KillHunter Автоматическая установка приложений 2 15-05-2008 18:54
строки в С++ rodman Программирование и базы данных 7 02-07-2004 12:54
Строки в С\С++ netmax Программирование и базы данных 30 03-11-2003 18:57




 
Переход