Что нового

Вывод значений разных функций в одно поле Edit

joparezzz

Новичок
Сообщения
65
Репутация
0
Каким образом можно вывести в одно поле Edit (можно применить другой элемент) результаты разных функций?
Сейчас у меня результаты выводятся в разные поля.
Код:
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <UpdownConstants.au3>

Global $iDn1, $iDk1
Global $iDn2, $iDk2, $nOutput2, $nCheckbox2, $nInputn2, $nInputk2, $nUDn2, $nUDk2
Global $iDn3, $iDk3, $nOutput3, $nCheckbox3, $nInputn3, $nInputk3, $nUDn3, $nUDk3

$hGUI = GUICreate('Кабельные вводы', 980, 250, -1, -1, -1, $WS_CLIPCHILDREN)
$nInputn1 = GUICtrlCreateInput('23', 10, 10, 50, 20)
$nUDn1    = GUICtrlCreateUpdown(-1, $UDS_ALIGNLEFT)
			GUICtrlSetLimit(-1, 99, 1)
$nInputk1 = GUICtrlCreateInput('33', 75, 10, 50, 20)
$nUDk1    = GUICtrlCreateUpdown(-1, $UDS_ALIGNRIGHT)
			GUICtrlSetLimit(-1, 99, 1)
$nCheckbox1 = GUICtrlCreateCheckbox('', 130, 10, 20, 20)
$nOutput1 = GUICtrlCreateEdit('', 160, 10, 400, 50)


GUISetState()

Dim $TCM = 	[["ТСМ 20/0+5-12", 5, 12], _
			["ТСМ 30/0+13-23", 13, 23], _
			["ТСМ 40/0+23-33", 23, 33], _
			["ТСМ 60/0+34-51", 34, 51], _
			["ТСМ 90/0+52-78", 52, 78], _
			["ТСМ 120/0+79-99", 79, 99]]

While 1
    $nDn1 = GUICtrlRead($nInputn1)
    $nDk1 = GUICtrlRead($nInputk1)
    If $nDn1 <> $iDn1 Or $nDk1 <> $iDk1 Then
		CabTCM_Index($nDn1, $nDk1, $nOutput1)
        $iDn1 = $nDn1
        $iDk1 = $nDk1
    EndIf

    $nDn2 = GUICtrlRead($nInputn2)
    $nDk2 = GUICtrlRead($nInputk2)
    If $nDn2 <> $iDn2 Or $nDk2 <> $iDk2 Then
		CabTCM_Index($nDn2, $nDk2, $nOutput2)
        $iDn2 = $nDn2
        $iDk2 = $nDk2
    EndIf

    $nDn3 = GUICtrlRead($nInputn3)
    $nDk3 = GUICtrlRead($nInputk3)
    If $nDn3 <> $iDn3 Or $nDk3 <> $iDk3 Then
		CabTCM_Index($nDn3, $nDk3, $nOutput3)
        $iDn3 = $nDn3
        $iDk3 = $nDk3
    EndIf


    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit

        Case $nCheckbox1
            If BitAND(GUICtrlRead($nCheckbox1), $GUI_CHECKED) Then
                $nInputn2 = GUICtrlCreateInput('13', 10, 40, 50, 20)
                $nUDn2    = GUICtrlCreateUpdown(-1, $UDS_ALIGNLEFT)
                            GUICtrlSetLimit(-1, 99, 1)
                $nInputk2 = GUICtrlCreateInput('23', 75, 40, 50, 20)
                $nUDk2    = GUICtrlCreateUpdown(-1, $UDS_ALIGNRIGHT)
                            GUICtrlSetLimit(-1, 99, 1)
                $nCheckbox2 = GUICtrlCreateCheckbox('', 130, 40, 20, 20)
				$nOutput2 = GUICtrlCreateEdit('', 160, 80, 400, 50)
            Else
                GUICtrlDelete($nInputn2)
                GUICtrlDelete($nInputk2)
                GUICtrlDelete($nCheckbox2)
                GUICtrlDelete($nUDn2)
                GUICtrlDelete($nUDk2)
				GUICtrlDelete($nOutput2)
            EndIf

        Case $nCheckbox2
            If BitAND(GUICtrlRead($nCheckbox2), $GUI_CHECKED) Then
                $nInputn3 = GUICtrlCreateInput('', 10, 70, 50, 20)
                $nUDn3    = GUICtrlCreateUpdown(-1, $UDS_ALIGNLEFT)
                            GUICtrlSetLimit(-1, 99, 1)
                $nInputk3 = GUICtrlCreateInput('', 75, 70, 50, 20)
                $nUDk3    = GUICtrlCreateUpdown(-1, $UDS_ALIGNRIGHT)
                            GUICtrlSetLimit(-1, 99, 1)
                $nCheckbox3 = GUICtrlCreateCheckbox('', 130, 70, 20, 20)
				$nOutput3 = GUICtrlCreateEdit('', 160, 150, 400, 50)
				GUICtrlSetState ($nCheckbox1,  $GUI_DISABLE)
            Else
                GUICtrlDelete($nInputn3)
                GUICtrlDelete($nInputk3)
                GUICtrlDelete($nCheckbox3)
                GUICtrlDelete($nUDn3)
                GUICtrlDelete($nUDk3)
				GUICtrlDelete($nOutput3)
				GUICtrlSetState ($nCheckbox1,  $GUI_ENABLE)
            EndIf

    EndSwitch
WEnd


Func CabTCM_Index($pDn, $pDk, $pOutput)
  If Number($pDn) > Number($pDk) Or $pDn < $TCM[0][1] Or $pDk > $TCM[UBound($TCM) - 1][2] Then Return GUICtrlSetData($pOutput, "Некорректный диапазон")
  GUICtrlSetData($pOutput, '∅' & $pDn & '–' & $pDk & ':' & @TAB)
  For $i = 0 To UBound($TCM) - 1
    If $pDk <= $TCM[$i][2] Then
	  For $i = $i To 0 Step -1
		  If $pDn >= $TCM[$i][1] Then
			GUICtrlSetData($pOutput, $TCM[$i][0], 1)
		    ExitLoop 2
		  Else
			GUICtrlSetData($pOutput, $TCM[$i][0] & ', ', 1)
		  EndIf
	  Next
	  Else
	EndIf
  Next
EndFunc
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Создать многострочный "Edit" и передавать в него результат выполнения функций в отдельной строке.
Удобнее, как по мне в этом случае использовать вместо "Edit" "ListView".
 
Верх