VNRed_OK
29-04-2016, 17:00
Всем доброго здоровья.
Есть 2 формы с Radio. Первый вариант создавался раньше, с фиксированным набором Radio, и работает с требуемым результатом.
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$iLeft = @DesktopWidth/2-115
$iTop = 10
$Window = GUICreate("Pass", 230, 174,$iLeft, $iTop)
$B_Show = GUICtrlCreateButton("Показать", 152, 144, 73, 17)
GUICtrlSetState(-1, $GUI_DISABLE)
$Group1 = GUICtrlCreateGroup("", 5, 28,220,90)
$iRadio1 = GUICtrlCreateRadio("Аа", 24, 40, 73, 17)
$iRadio2 = GUICtrlCreateRadio("Бб", 24, 64, 73, 17)
$iRadio3 = GUICtrlCreateRadio("Вв", 24, 88, 73, 17)
$iRadio4 = GUICtrlCreateRadio("Гг", 120, 40, 73, 17)
$iRadio5 = GUICtrlCreateRadio("Дд", 120, 64, 73, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE; $nCancel
Exit
Case $iRadio1 To $iRadio5
$vaar =GUICtrlRead($nMsg,1)
GUICtrlSetState($B_Show,$GUI_ENABLE)
MsgBox(0,'',$vaar)
EndSwitch
WEnd
Но со временем немного поменялись условия и набор Radio необходимо создавать динамически - Периодически необходимо разное колличество этих Button-ов. Во втором варианте это реализовано
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$sPath_ini = @HomeDrive & "\Example.ini"
$iLeft = @DesktopWidth/2-115
$iTop = 10
$iLeftR =10
$iTopR = 35
$sRead = IniRead($sPath_ini, "Section", "Key", "NotFound")
$iRadio = StringSplit($sRead, ",")
$Window = GUICreate("Pass", 230, 174,$iLeft, $iTop)
$B_Show = GUICtrlCreateButton("Показать", 152, 144, 73, 17)
GUICtrlSetState(-1, $GUI_DISABLE)
$Group1 = GUICtrlCreateGroup("", 5, 28,220,90)
For $i = 1 To $iRadio[0]
$iItem = GUICtrlCreateRadio($iRadio[$i], $iLeftR, $iTopR)
$iTopR += 20
If $iTopR > 100 Then
$iTopR = 35
$iLeftR += 75
EndIf
Next
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE; $nCancel
Exit
Case $iItem
$vaar =GUICtrlRead($nMsg,1)
GUICtrlSetState($B_Show,$GUI_ENABLE)
MsgBox(0,'',$vaar)
EndSwitch
WEnd
Вот только ответ получаю от последнего созданного, а надо бы от каждого, как в первом. Есть ли возможность всё это дело поправить?
Есть 2 формы с Radio. Первый вариант создавался раньше, с фиксированным набором Radio, и работает с требуемым результатом.
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$iLeft = @DesktopWidth/2-115
$iTop = 10
$Window = GUICreate("Pass", 230, 174,$iLeft, $iTop)
$B_Show = GUICtrlCreateButton("Показать", 152, 144, 73, 17)
GUICtrlSetState(-1, $GUI_DISABLE)
$Group1 = GUICtrlCreateGroup("", 5, 28,220,90)
$iRadio1 = GUICtrlCreateRadio("Аа", 24, 40, 73, 17)
$iRadio2 = GUICtrlCreateRadio("Бб", 24, 64, 73, 17)
$iRadio3 = GUICtrlCreateRadio("Вв", 24, 88, 73, 17)
$iRadio4 = GUICtrlCreateRadio("Гг", 120, 40, 73, 17)
$iRadio5 = GUICtrlCreateRadio("Дд", 120, 64, 73, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE; $nCancel
Exit
Case $iRadio1 To $iRadio5
$vaar =GUICtrlRead($nMsg,1)
GUICtrlSetState($B_Show,$GUI_ENABLE)
MsgBox(0,'',$vaar)
EndSwitch
WEnd
Но со временем немного поменялись условия и набор Radio необходимо создавать динамически - Периодически необходимо разное колличество этих Button-ов. Во втором варианте это реализовано
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$sPath_ini = @HomeDrive & "\Example.ini"
$iLeft = @DesktopWidth/2-115
$iTop = 10
$iLeftR =10
$iTopR = 35
$sRead = IniRead($sPath_ini, "Section", "Key", "NotFound")
$iRadio = StringSplit($sRead, ",")
$Window = GUICreate("Pass", 230, 174,$iLeft, $iTop)
$B_Show = GUICtrlCreateButton("Показать", 152, 144, 73, 17)
GUICtrlSetState(-1, $GUI_DISABLE)
$Group1 = GUICtrlCreateGroup("", 5, 28,220,90)
For $i = 1 To $iRadio[0]
$iItem = GUICtrlCreateRadio($iRadio[$i], $iLeftR, $iTopR)
$iTopR += 20
If $iTopR > 100 Then
$iTopR = 35
$iLeftR += 75
EndIf
Next
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE; $nCancel
Exit
Case $iItem
$vaar =GUICtrlRead($nMsg,1)
GUICtrlSetState($B_Show,$GUI_ENABLE)
MsgBox(0,'',$vaar)
EndSwitch
WEnd
Вот только ответ получаю от последнего созданного, а надо бы от каждого, как в первом. Есть ли возможность всё это дело поправить?