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

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

Аватара для Creat0R

Must AutoIt


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

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


Цитата Pozia:
В связи с этим вопрос как изменить интервал между строками и можно ли как то окно сделать в два или даже три столбца? »
Как раз для таких случаев есть _GUIScrollBars*:

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

$hGUI = GUICreate('I''m a crasy dentist', 300, 350)
$hButton = GUICtrlCreateButton('Create file', 5, 317, 70, 25)

Global $aLabels, $aInput_Vals, $aiInputs, $iCount, $iScroll_Max
Global $sFile = @ScriptDir & '\file.ext'

$aLabels &= 'Диаметр окружности впадин зубьев, df|'
$aLabels &= 'Делительный диаметр, d|'
$aLabels &= 'Диаметр окружности вершин зубьев, da|'
$aLabels &= 'Ширина, b|'
$aLabels &= 'Диаметр ступицы, dst|'
$aLabels &= 'Длина ступицы, Lst|'
$aLabels &= 'Толщина венца, hv|'
$aLabels &= 'Диаметр расположения отверстий, dro|'
$aLabels &= 'Диаметр отверстий, do|'

$aInput_Vals &= '[mm]p9=|'
$aInput_Vals &= '[mm]p10=|'
$aInput_Vals &= '[mm]p11=|'
$aInput_Vals &= '[mm]p12=|'
$aInput_Vals &= '[mm]p13=|'
$aInput_Vals &= '[mm]p14=|'
$aInput_Vals &= '[mm]p15=|'
$aInput_Vals &= '[mm]p16=|'
$aInput_Vals &= '[mm]p17=|'

$aLabels = StringRegExpReplace($aLabels, '\|$', '')
$aLabels = StringSplit($aLabels, '|')

$aInput_Vals = StringRegExpReplace($aInput_Vals, '\|$', '')
$aInput_Vals = StringSplit($aInput_Vals, '|')

Dim $iCount = $aInput_Vals[0]
Dim $aiInputs[$iCount+1]

$hData_GUI = GUICreate("Data GUI", 290, 300, 0, 0, $WS_CHILD, $WS_EX_CLIENTEDGE+$WS_EX_DLGMODALFRAME, $hGUI)

For $i = 1 To $iCount
    $sVal = StringRegExpReplace(FileReadLine($sFile, $i), "^.*=(.*)$", "\1")
    If $sVal = "" Then $sVal = $i

    GUICtrlCreateLabel($aLabels[$i], 10, 10 + ($i-1) * 28, 180, 15)
    $aiInputs[$i] = GUICtrlCreateInput($sVal, 220, 10 + ($i-1) * 28, 50, 17, $ES_NUMBER)
Next

GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")

_GUIScrollBars_Init($hData_GUI)
_GUIScrollBars_SetScrollInfoMax($hData_GUI, $SB_HORZ, 0)
_GUIScrollBars_SetScrollInfoMax($hData_GUI, $SB_VERT, $iCount * 2)

GUISetState(@SW_SHOW, $hData_GUI)
GUISetState(@SW_SHOW, $hGUI)

GUISwitch($hGUI)

While 1
    $Msg = GUIGetMsg()

    Switch $Msg
        Case $GUI_EVENT_CLOSE
            GUIDelete($hGUI)
            ExitLoop
        Case $hButton
            $hWrite = FileOpen($sFile, 2)

            For $i = 1 To $iCount
                FileWriteLine($hWrite, $aInput_Vals[$i] & GUICtrlRead($aiInputs[$i]))
            Next

            FileClose($hWrite)
    EndSwitch
WEnd

Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)
    #forceref $Msg, $wParam, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $index = -1, $yChar, $yPos
    Local $Min, $Max, $Page, $Pos, $TrackPos

    For $x = 0 To UBound($aSB_WindowInfo) - 1
        If $aSB_WindowInfo[$x][0] = $hWnd Then
            $index = $x
            $yChar = $aSB_WindowInfo[$index][3]
            ExitLoop
        EndIf
    Next
    If $index = -1 Then Return 0

    ; Get all the vertial scroll bar information
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    ; Save the position for comparison later on
    $yPos = DllStructGetData($tSCROLLINFO, "nPos")
    $Pos = $yPos
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")

    Switch $nScrollCode
        Case $SB_TOP ; user clicked the HOME keyboard key
            DllStructSetData($tSCROLLINFO, "nPos", $Min)

        Case $SB_BOTTOM ; user clicked the END keyboard key
            DllStructSetData($tSCROLLINFO, "nPos", $Max)

        Case $SB_LINEUP ; user clicked the top arrow
            DllStructSetData($tSCROLLINFO, "nPos", $Pos - 1)

        Case $SB_LINEDOWN ; user clicked the bottom arrow
            DllStructSetData($tSCROLLINFO, "nPos", $Pos + 1)

        Case $SB_PAGEUP ; user clicked the scroll bar shaft above the scroll box
            DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)

        Case $SB_PAGEDOWN ; user clicked the scroll bar shaft below the scroll box
            DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)

        Case $SB_THUMBTRACK ; user dragged the scroll box
            DllStructSetData($tSCROLLINFO, "nPos", $TrackPos)
    EndSwitch

;~    // Set the position and then retrieve it.  Due to adjustments
;~    //   by Windows it may not be the same as the value set.

    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    ;// If the position has changed, scroll the window and update it
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")

    If ($Pos <> $yPos) Then
        _GUIScrollBars_ScrollWindow($hWnd, 0, $yChar * ($yPos - $Pos))
        $yPos = $Pos
    EndIf

    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_VSCROLL

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

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

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

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

Отправлено: 03:18, 22-12-2009 | #13