Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для 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