Jump to content

Case Checkbox


Vaeb
 Share

Recommended Posts

Hi!

I want to add a window which shows as many checkboxes as $hwmny[0] is.

$hwmny = _FileListToArray("\\srver\root\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort, '*.lnk', 1)
 Select
                Case $hwmny[0] = "0"
                    MsgBox (16,"Error","An diesem Ort sind keine Drucker vorhanden.")
                Case $hwmny[0] = "1"
                    $gui_check_1 = GUICtrlCreateCheckbox($pr2 & $srv3 ,10,10,180,20)
                Case $hwmny[0] > "1"
                    $gui_check_2 = GUICtrlCreateCheckbox($pr2 & $srv3 ,10,30,180,20)
                Case $hwmny[0] > "2"
                    $gui_check_3 = GUICtrlCreateCheckbox($pr2 & $srv3 ,10,50,180,20)
                Case $hwmny[0] > "3"
                    $gui_check_4 = GUICtrlCreateCheckbox($pr2 & $srv3 ,10,70,180,20)
                Case $hwmny[0] > "4"
                    $gui_check_5 = GUICtrlCreateCheckbox($pr2 & $srv3 ,10,90,180,20)
                Case $hwmny[0] > "5"
                    $gui_check_6 = GUICtrlCreateCheckbox($pr2 & $srv3 ,10,110,180,20)
                Case $hwmny[0] > "6"
                    $gui_check_7 = GUICtrlCreateCheckbox($pr2 & $srv3 ,10,130,180,20)
                Case $hwmny[0] > "7"
                    $gui_check_8 = GUICtrlCreateCheckbox($pr2 & $srv3 ,10,150,180,20)
                Case $hwmny[0] > "8"
                    $gui_check_9 = GUICtrlCreateCheckbox($pr2 & $srv3 ,10,170,180,20)
            EndSelect

The problem is, that the script opens as many guis as $hwmny[0] is.

Do any1 know a good way to do what i tried to do?

Greets

Vaeb

Link to comment
Share on other sites

#include <GUIConstants.au3>
$hwmny = _FileListToArray("\\srver\root\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort, '*.lnk', 1)
Dim $gui_check[$hwmny[0] + 1]
GuiCreate("Test", 200, 190)
If $hwmny = 0 Then
MsgBox (16,"Error","An diesem Ort sind keine Drucker vorhanden.")
Else
For $i = 1 to $hwmny[0]
$gui_check[$i] = GUICtrlCreateCheckbox($pr2 & $srv3 ,10,-10 + $i*20,180,20)
Next
EndIf
While 1
$msg = GuiGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
WEnd

This probably isn't the best way to do this and I haven't tested the code, so it may not work.

Edited by poisonkiller
Link to comment
Share on other sites

Hello

Thank you. It worked.

I tried to read the Checkboxes i click.

Unfortunatly, the script doesn't react when i click on $buttoninst

It should install the printers. (it already worked without the checkboxes)

Do any1 find the error?

Func Check()
    Opt("GUICloseOnESC", 1)
    
    $linkname = _FileListToArray("\\srvr\root\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort, '*.lnk', 1)
            For $i = 1 To $linkname[0]
                $pr = StringInStr($linkname[$i], " ", 1)
                $prLen = StringLen($linkname[$i])
                $pr3 = $prLen - $pr
                $pr2 = StringTrimRight($linkname[$i], $pr3)
                $srv = StringInStr($linkname[$i], " ", 1, 1)
                $srv2 = StringTrimLeft($linkname[$i], $srv + 3)
                $srv3 = StringTrimRight($srv2, 4)
                Opt("GUICloseOnESC", 1)
                Dim $gui_check_[$linkname[0] + 1]
                $gui_check_[$i] = GUICtrlCreateCheckbox($pr2 & $srv3 ,10,-10 + $i*20,680,20)
                
            Next
            
            $linkname = _FileListToArray("\\srvr\root\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort, '*.lnk', 1)
            For $i = 1 To $linkname[0]
                $pr = StringInStr($linkname[$i], " ", 1)
                $prLen = StringLen($linkname[$i])
                $pr3 = $prLen - $pr
                $pr2 = StringTrimRight($linkname[$i], $pr3)
                $srv = StringInStr($linkname[$i], " ", 1, 1)
                $srv2 = StringTrimLeft($linkname[$i], $srv + 3)
                $srv3 = StringTrimRight($srv2, 4)
                
                
            $buttoninst = GUICtrlCreateButton("Install", 195, 270)
            GUISetState()
            
            While 1
                $Msg = GUIGetMsg()
                    If $Msg = $buttoninst Then
                        Dim $gui_check_[$linkname[0] + 1]
                        If IsChecked($gui_check_[$i]) Then
                            RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2)
                            RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2 & " /y")
                        EndIf
                    EndIf
            WEnd
                
            Next
                
EndFunc

Func IsChecked($control)
    Return BitAnd(GUICtrlRead($control),$GUI_CHECKED) = $GUI_CHECKED
EndFunc

thx & greets

Vaeb

Link to comment
Share on other sites

Yes I am sure that the runwait lines are working.

As I already said: It already worked without the checkboxes

Btw. nothing is happening too when i put a msgbox in.

I hope some1 find the error.

Greets

Vaeb

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...