Jump to content
secman

ComboList changes when mouse rolls over

Recommended Posts

Hi,

I have an issue with a script being used for a Toddler group register. 

I list the kids, with their carer and additional carer in ComboLists so a number of carers can be registered per kid. 

When page down to a second page of kids, the carers are correctly displayed but when I roll the mouse over the combo boxes it reverts to those on the first page.

I am using the following style codes with the combo boxes - BitOR($CBS_DROPDOWN, $CBS_SIMPLE) and they are only holding 2 or 3 entries.

Here is the code for the pagedisplay function which is called for each line of the registration page (10 lines, currently 55 kid records)) 

Func PageDisp($L)

;Clears display once all records displayed
    If $L > $KidsFound Then
        $Label2[$L] = GUICtrlCreateLabel(" ", 75, $v, 280, 29)
        $Label352[$L] = GUICtrlCreateLabel("", 1040, $v, 100, 29)
        $Label152[$L] = GUICtrlCreateLabel("", 380, $v, 220, 29)
        $Label252[$L] = GUICtrlCreateLabel("",  650, $v, 220, 29);
        Return
    Endif
    $Kid2d = $Kid1d[$L] ; sets value to find additional carers
If $Kid1a[$L] <> "" then
    $Label2[$L] = GUICtrlCreateLabel("(" & $L & ")" & $Kid1a[$L] & " " & $Kid1b[$L] , 75, $v, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
        If $Kid1e[$L] <> "" then
            $Combo[$L] = GUICtrlCreateCombo("(" & $L & ")"  & $Kid1e[$L], 380, $v, 220, 29, BitOR($CBS_DROPDOWN, $CBS_SIMPLE ))
            GUICtrlSetData(-1, $Kid1e[$L] & "|" & $Kid1f[$L], $Kid1e[$L])
            GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI")
            GUICtrlSetBkColor(-1, 0xFFFFFF)
            $Label352[$L] = GUICtrlCreateLabel($Kid1c[$L], 1040, $v, 100, 29)
            if $Kid1f[$L] <> "" then
                FindCarer($Kid2d) ;finds additional carers 
                $Combo2[$L] = GUICtrlCreateCombo("(" & $L & ")" & "",  650, $v, 220, 29, BitOR($CBS_DROPDOWN,$CBS_SIMPLE ))
                GUICtrlSetData(-1, $Combo2List[$L], "")
                GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI")
                GUICtrlSetBkColor(-1, 0xFFFFFF)
                If StringRight($Kid1e[$L],3) = "[L]" Then
                    $Label152[$L] = GUICtrlCreateLabel("", 380, $v, 220, 29)
                    $Label252[$L] = GUICtrlCreateLabel("Leader",  650, $v, 220, 29);
                    GUICtrlSetColor(-1, 0x0000FF)
                Endif
            Else
                $Label252[$L] = GUICtrlCreateLabel("(" & $L & ")" & " No Additional Carers",  650, $v, 220, 29);
            EndIf
        EndIf
        GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI")
        GUICtrlSetBkColor(-1, 0xFFFFFF)
        CheckReg()
        If $Kid1c[$L] = "Registered" Then
            $Label52[$L] = GUICtrlCreateLabel($Kid1c[$L], 1040, $v, 100, 29)
            $Label152[$L] =GUICtrlCreateLabel ($Kid1f[$L],  650, $v, 220, 29);
            GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
            GUICtrlSetBkColor(-1, 0xFFFFFF)
            If StringRight($Kid1e[$L],3) = "[L]" Then
                $Label252[$L] = GUICtrlCreateLabel("", 380, $v, 220, 29)
                $Label152[$L] = GUICtrlCreateLabel("Leader",  650, $v, 220, 29);
                GUICtrlSetColor(-1, 0x0000FF)
            Endif
        Endif
    Endif

EndFunc

I hope someone can point me in the right direction as I can't see how this is happening

Many thanks 

Share this post


Link to post
Share on other sites

Hi,

I have created a mush reduced script that demonstrates the issue with some junk data. If you run the script, click page down and roll your mouse over the second and third columns (Main Carer and Extra Carer the data changes back to that on page one. I can see why this should happen. In the full program I need to cope wit h100 records on 10 pages so this has to be sorted. Any suggestions would be gratefully received.

#cs ----------------------------------------------------------------------------
Script Information      COMPILE as x86 for compatibiliy (32-bit)
    AutoIt Version:     3.3.14.2
    Author: Alan Pattle - June 2016 -
    System Name:    Kids Check-In - Kids Registration System - Little Lights
#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here
#include <GUIConstants.au3>
#include <Array.au3>
#include <MsgBoxConstants.au3>
#include <Date.au3>
#include <StaticConstants.au3>
#include <file.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListBox.au3>
#include <OutlookEX.au3>
#include <GUIListViewEx.au3>
#include <ButtonConstants.au3>
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
#include <WinAPI.au3>
#include <INet.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <DateTimeConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <Misc.au3>

;++ VARIABLES +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Global $version ;system version from KCIInfoLL
Global $build = "0088" ; Version of this module
Global $var
Global $INFOFILE = "KCIInfo.TXT"
;Global $UserFile = "Users.CSV"
Global $Valid = "False"
Global $UserName ; = "APATTLE"
Global $Password
Global $UserInput, $Users, $UserType, $AdminMenu, $RegMenu
Global $PassInput
Global $DataFile
Global $DataFile1
Global $HomeDir
Global $CarerFile
Global $data, $data0, $tdata
Global $s, $x, $N, $Q, $Y, $L, $K, $Q1, $v, $vr
Global $Ls, $Lx, $LN, $LQ, $LY, $LL, $LK, $LQ1
Global $Line, $Line2, $Line3
Global $systemname= "Registration System", $UserFile, $tClasses, $Classes, $ClassesFile, $ThisClass, $tChildren, $Children, $ChildrenFile, $CLRecords, $CHRecords, $AttndFile
Global $Kids, $KidNo, $KidName, $Kid, $Child, $Child1, $Kid2d, $Kid2e, $Kid2f
Global $ClCode, $ClName, $ClOrg, $ClRun, $ClDay, $ClTime, $ClDate
Global $ComboList1, $Combolist1Def, $ComboList2, $Combolist2Def
Global $ComboList5, $Combolist5Def, $ComboList5, $Combolist5Def
Global $ComboList10, $Combolist10Def
Global $Combo1, $Combo2, $Combo10, $Combo5
Global $ComboList30, $Combolist30Def, $Combo30
Global $ComboList40, $Combolist40Def, $Combo40
Global $ComboList[101], $Combo[101]
Global $Combo2List[101], $Combo2[101]
Global $ComboList41, $Combolist41Def, $Combo41
Global $ComboList42, $Combolist42Def, $Combo42
Global $Kid1a[101], $Kid1b[101], $Kid1c[101], $Kid1d[101], $Kid1e[101], $Kid1f[101], $Kid1enew[101], $Kid1fnew[101], $KidsFound = 0, $KidsReg = 0, $KidsCarReg = 0
Global $Page1 = "xx", $Page2 = "xx", $Page3 = "xx", $CurPage = "1", $Page4 = "xx", $Page5 = "xx"
Global $Form1_1, $Form1_2, $FormAC, $FormReg
Global $KidFName, $KidSName, $KidDoB, $KidP1FName, $KidP1SName, $KidP1Phone, $KidP2FName, $KidP2SName, $KidP2Phone, $KidClass1, $KidClass2, $KidClass3, $KidClass4
Global $KidGender, $KidSchYr, $KidAddress1, $KidAddress2, $KidPostCode, $KidPhone, $KidEmail, $KidSpConds, $KidPhoto, $KidHBCNo
Global $CareKidNo, $CareFName, $CareSName, $CarePhone, $CareEmail, $CareClass1, $CareClass2, $CareRole, $MRecords, $CarerRecords, $AddCarer, $CarersReg
Global $Next = "No", $No
Global $Button1FK
Global $Labels[200], $RecNo, $Check
Global $idCheckbox, $TODAYONLY, $iWeekday, $iWeekName
Global $DateFile[8][5], $DFDate, $DFDayName, $DFDay, $DFMonth, $DFYear, $TDate, $Date1
Global $LeadInit, $LeadFName, $LeadSName, $LeadDBS, $LeadDBSRenew, $LeadClass1, $LeadClass2, $LeadClass3, $LeadClass4, $LeadClass5, $LeadClass6, $Leaders, $tLeaders, $LRecords, $Leader, $Leadra[11], $Leadrb[11], $Leadc[11]
Global $LLabels[11], $FormRegLeaders, $RegButton, $Label152, $ButtonStatus1, $ButtonStatus2, $FormStatus2, $Label152[100], $Label252[100], $Label52[100], $Label2[100], $Label352[100]
Global $NetFilePath
Global $iFileExists, $CheckNet, $g_idMemo, $LRegFiles, $LRegRecords, $LFileName, $hSearch, $RegLeaders
Global $hDLL = DllOpen("user32.dll")
Global $RLine
Global $Status[100][2], $StatusLine[100], $StRef, $StChild, $StCarer1, $StCarer2, $StDate


;++ VARIABLES END +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ReadInfo()
FiletoArray()
;DateFileCreate()
;Login()
;If $Valid = "True" Then
    Registration()
;EndIf

Exit

;++ FUNCTIONS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Func Registration()
    #Region ### START Koda GUI section ### Form=c:\ap\scripts\kids check in\registration.kxf
    $FormReg = GUICreate("Registration" & " - System Version: " & $version & " - Build No: " & $build, 1500, 770, -1, -1)
    GUISetFont(11, 400, 0, "Segoe UI")
    $Label1 = GUICtrlCreateLabel($systemname , 0, 0, 1500, 60, BitOR($SS_CENTER, $WS_BORDER))
    GUICtrlSetFont(-1, 24, 400, 0, "Segoe Print")
    GUICtrlSetColor(-1, 0x000080)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Group1 = GUICtrlCreateGroup("Children - Page " & $CurPage & " Records found " & $KidsFound, 10, 69,1540, 620)
    GUICtrlSetColor(-1, 0x0000FF)
    $Labelshead1 = GUICtrlCreateLabel("Main Carer                                                  Extra Carer                              ", 430, 83, 680, 20)
    GUICtrlSetFont(-1, 11, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1,($GUI_BKCOLOR_TRANSPARENT))
    $Labels2 = GUICtrlCreateLabel($Kid1a[1] & " " & $Kid1b[1], 75, 110, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[52] = GUICtrlCreateLabel($Kid1c[1], 1040, 110, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label3 = GUICtrlCreateLabel($Kid1a[2] & " " & $Kid1b[2], 75, 170, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[53] = GUICtrlCreateLabel($Kid1c[2], 1040, 170, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label4 = GUICtrlCreateLabel($Kid1a[3] & " " & $Kid1b[3], 75, 230, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[54] = GUICtrlCreateLabel($Kid1c[3], 1040, 229, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label5 = GUICtrlCreateLabel($Kid1a[4] & " " & $Kid1b[4], 75, 290, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[55] = GUICtrlCreateLabel($Kid1c[4], 1040, 289, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label6 = GUICtrlCreateLabel($Kid1a[5] & " " & $Kid1b[5], 75, 350, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[56] = GUICtrlCreateLabel($Kid1c[5], 1040, 349, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label7 = GUICtrlCreateLabel($Kid1a[6] & " " & $Kid1b[6], 75, 410, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[57] = GUICtrlCreateLabel($Kid1c[6], 1040, 409, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label8 = GUICtrlCreateLabel($Kid1a[7] & " " & $Kid1b[7], 75, 470, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[58] = GUICtrlCreateLabel($Kid1c[7], 1040, 469, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label9 = GUICtrlCreateLabel($Kid1a[8] & " " & $Kid1b[8], 75, 530, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[59] = GUICtrlCreateLabel($Kid1c[8], 1040, 529, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label10 = GUICtrlCreateLabel($Kid1a[9] & " " & $Kid1b[9], 75, 590, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[60] = GUICtrlCreateLabel($Kid1c[9], 1040, 589, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label11 = GUICtrlCreateLabel($Kid1a[10] & " " & $Kid1b[10], 75, 650, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[61] = GUICtrlCreateLabel($Kid1c[10], 1040, 649, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Button11 = GUICtrlCreateButton("Page Up", 1208, 580, 100, 50)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0x00FFFF)
    $Button13 = GUICtrlCreateButton("Page Down", 1208, 640, 100, 50)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0x00FFFF)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $RegClose = GUICtrlCreateButton("CLOSE", 1368, 640, 100, 50)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlSetBkColor(-1, 0xA6CAF0)

    GUISetState(@SW_SHOW)
    Reset()
    FindKids()
    ShowKids()
    #EndRegion ### END Koda GUI section ###
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE, $RegClose
                Exit
                    ShowKids()
            Case $Button11
                If $CurPage = "5" Then
                    $CurPage = "4"
                ElseIf $CurPage = "4" Then
                    $CurPage = "3"
                ElseIf $CurPage = "3" Then
                    $CurPage = "2"
                ElseIf $CurPage = "2" Then
                    $CurPage = "1"
                EndIf
                ShowKids()
            Case $Button13
                If $CurPage = "1" Then
                    $CurPage = "2"
                ElseIf $CurPage = "2" Then
                    $CurPage = "3"
                ElseIf $CurPage = "3" Then
                    $CurPage = "4"
                ElseIf $CurPage = "4" Then
                    $CurPage = "5"

                EndIf
                ShowKids()

        EndSwitch
Wend
EndFunc   ;==>Registration


Func CurPage()
            If $CurPage = "1" Then
                    $Q = $L - 51
                ElseIf $CurPage = "2" Then
                    $Q = $L - 41
                ElseIf $CurPage = "3" Then
    ;               $Q = 21
                    $Q = $L - 31
                ElseIf $CurPage = "4" Then
                    $Q = $L - 21
                ElseIf $CurPage = "5" Then
                    $Q = $L - 11
                    Endif
    EndFunc ;====> CurPage()

Func PageDisp($L)
    If $L > $KidsFound Then
        $Label2[$L] = GUICtrlCreateLabel(" ", 75, $v, 280, 29)
        $Label352[$L] = GUICtrlCreateLabel("", 1040, $v, 100, 29)
        $Label152[$L] = GUICtrlCreateLabel("", 380, $v, 220, 29)
        $Label252[$L] = GUICtrlCreateLabel("",  650, $v, 220, 29);
    Return
    Endif
$Kid2d = $Kid1d[$L]
If $Kid1a[$L] <> "" then
    $Label2[$L] = GUICtrlCreateLabel("(" & $L & ")" & $Kid1a[$L] & " " & $Kid1b[$L] , 75, $v, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
        If $Kid1e[$L] <> "" then
            $Combo[$L] = GUICtrlCreateCombo("(" & $L  & ")"  & $Kid1e[$L], 380, $v, 220, 29, BitOR($CBS_DROPDOWN, $CBS_SIMPLE ))
            GUICtrlSetData(-1, $Kid1e[$L] & "|" & $Kid1f[$L], $Kid1e[$L])
            GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI")
            GUICtrlSetBkColor(-1, 0xFFFFFF)
            $Label352[$L] = GUICtrlCreateLabel($Kid1c[$L], 1040, $v, 100, 29)
            if $Kid1f[$L] <> "" then
                $Combo2[$L] = GUICtrlCreateCombo("(" & $L & ")" & "",  650, $v, 220, 29, BitOR($CBS_DROPDOWN,$CBS_SIMPLE ))
                GUICtrlSetData(-1, $Combo2List[$L], "")
                GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI")
                GUICtrlSetBkColor(-1, 0xFFFFFF)
                If StringRight($Kid1e[$L],3) = "[L]" Then
                    $Label152[$L] = GUICtrlCreateLabel("", 380, $v, 220, 29)
                    $Label252[$L] = GUICtrlCreateLabel("Leader",  650, $v, 220, 29);
                    GUICtrlSetColor(-1, 0x0000FF)
                Endif
            Else
                $Label252[$L] = GUICtrlCreateLabel("(" & $L & ")" & " No Additional Carers",  650, $v, 220, 29);
            EndIf
        EndIf
        GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI")
        GUICtrlSetBkColor(-1, 0xFFFFFF)
    ;   CheckReg()
        If $Kid1c[$L] = "Registered" Then
            $Label52[$L] = GUICtrlCreateLabel($Kid1c[$L], 1040, $v, 100, 29)
            $Label152[$L] =GUICtrlCreateLabel ($Kid1f[$L],  650, $v, 220, 29);
            GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
            GUICtrlSetBkColor(-1, 0xFFFFFF)
            If StringRight($Kid1e[$L],3) = "[L]" Then
                $Label252[$L] = GUICtrlCreateLabel("", 380, $v, 220, 29)
                $Label152[$L] = GUICtrlCreateLabel("Leader",  650, $v, 220, 29);
                GUICtrlSetColor(-1, 0x0000FF)
            Endif
        Endif
    Endif

EndFunc

Func ShowKids()
    If $CurPage = "XX" Then Return
    $LabelStatus4 = GUICtrlCreateLabel("Leaders", 30,723, 62, 24)
    $LabelStatus2 = GUICtrlCreateLabel($RegLeaders, 90, 723, 300, 28)
    GUICtrlSetColor(-1, 0x0000FF)
    $LabelStatus1 = GUICtrlCreateLabel("Kids Registered",550, 723, 116, 24)
    $LabelStatus3 = GUICtrlCreateLabel($KidsReg, 650, 723, 65, 28)
    GUICtrlSetColor(-1, 0x0000FF)
    $LabelStatus6 = GUICtrlCreateLabel("Carers Registered", 750, 723, 133, 24)
    $LabelStatus4 = GUICtrlCreateLabel($KidsCarReg, 870, 723, 65, 28)
    GUICtrlSetColor(-1, 0x0000FF)
    $Group1 = GUICtrlCreateGroup("Children - Page " & $CurPage & " Records found " & $KidsFound, 10, 69,1540, 620)
    If $CurPage = "1" Then
        $v = 110
        For $L = 1 To 10
            PageDisp($L)
            $v = $v + 60
        Next
    ElseIf $CurPage = "2" Then
        $v = 110
        For $L = 11 To 20
            PageDisp($L)
            $v = $v + 60
        Next
    ElseIf $CurPage = "3" Then
        $v = 110
        For $L = 21 To 30
            PageDisp($L)
            $v = $v + 60
        Next
    ElseIf $CurPage = "4" Then
        $v = 110
        For $L = 31 To 40
            PageDisp($L)
            $v = $v + 60
        Next
    ElseIf $CurPage = "5" Then
        $v = 110
        For $L = 41 To 50
            PageDisp($L)
            $v = $v + 60
        Next
    EndIf
    GUISetState(@SW_SHOW)
EndFunc   ;==>ShowKids

Func CheckCLDay()
    For $d = 1 to 7
        If $ClDay = $DateFile[$d][1] Then
            $ClDate = $DateFile[$d][2] & "/" & $DateFile[$d][3] & "/" & $DateFile[$d][4]
            Return
        EndIf
    Next
Endfunc

Func FindKids()
    $KidsFound = 0
    For $x = 1 To 100
        $Kid1a[$x] = ""
        $Kid1b[$x] = ""
        $Kid1c[$x] = ""
        $Kid1d[$x] = ""
        $Kid1e[$x] = ""
        $Kid1f[$x] =  ""
    Next
    $No = 0
    $h = UBound($Children, $UBOUND_ROWS)
    $w = UBound($Children, $UBOUND_COLUMNS)
    For $x = 1 To 25
            $Kid1a[$No] = $Children[$x - 1][0]
            $Kid1b[$No] = $Children[$x - 1][1]
            $Kid1d[$No] = $Children[$x - 1][6]
            $Kid1e[$No] = $Children[$x - 1][3] & " " & $Children[$x - 1][4]
            $Kid1f[$No] = $Children[$x - 1][5] & " " & $Children[$x - 1][6]
            $Kid2d = $Kid1d[$No]
            $Kid2f = $Kid1f[$No]
            $No = $No + 1
    Next
    $KidsFound = $No
    If $No < 11 Then
        $Page1 = "1"
    ElseIf $No > 10 And $No < 21 Then
        $Page2 = "2"
    ElseIf $No > 20 And $No < 31 Then
        $Page3 = "3"
    ElseIf $No > 30 And $No < 41 Then
        $Page4 = "4"
    ElseIf $No > 40 And $No < 51 Then
        $Page5 = "5"
    ElseIf $No > 50 And $No < 61 Then
        $Page3 = "6"
    ElseIf $No > 60 And $No < 71 Then
        $Page4 = "7"
    ElseIf $No > 70 And $No < 81 Then
        $Page5 = "8"
    ElseIf $No > 80 And $No < 91 Then
        $Page4 = "9"
    ElseIf $No > 90 And $No < 101 Then
        $Page5 = "10"
    EndIf
    $CurPage = "1"
EndFunc   ;==>FindKids

Func Reset()
    For $N = 0 To 100
        $Kid1a[$N] = ""
        $Kid1b[$N] = ""
        $Kid1c[$N] = ""
        $Kid1d[$N] = ""
        $Kid1e[$N] = ""
        $Kid1f[$N] = ""
    Next
EndFunc   ;==>Reset

Func ReadInfo()
    If Not _FileReadToArray($INFOFILE, $data) Then
        MsgBox(4096, "Search Error", " Error reading Info Settings File to Array error:" & @error)
    EndIf
    $s = $data[0]
    Global $data0[$s][2]
    Global $tdata[$s]
    For $x = 1 To $s
        $tdata = StringSplit($data[$x], ",")
        $t = UBound($tdata, $UBOUND_ROWS)
        For $N = 1 To $t - 1
            $data0[$x - 1][$N - 1] = $tdata[$N]
        Next
    Next
    Global $version = "Beta 00.00"
    Global $systemname = "Registration System"
    Global $HomeDir = "\"
    Global $DataFile = " "
    Global $DataFile1 = " "
    Global $UserFile = " "
    Global $ChildrenFile = " "
    Global $ClassesFile = " "
    Global $LogFile = " "
    Global $MFfile = "Male|Female "
    Global $SchYrFile = "Baby|Todl|Nurs|PreS|Yr0|Yr1|Yr2|Yr3"
    Global $YN = "Yes|No"
    Global $LeadersFile = " "
    Global $CarerFile = " "
EndFunc   ;==>ReadInfo

Func FiletoArray()
    ReadInfo()
    $Combolist1 = ""
    $ComboList2 = ""
    $ComboList5 = ""
    $ComboList6 = $MFfile
    $ComboList7 = $SchYrFile
    $ComboList8 = $YN
    $CLRecords = ""
    $CHRecords = ""
    ; Read the CSV file into an array.
    SplashTextOn("Loading Data", "Processing ..... ", 200, 50, -1, -1)
    $ComboList5 = ""

    For $x = 1 To $s
        $ComboList1 = "LL001" & "|" & "Little Lights" & "|" &   "CHURCH"     & "|" &"Tuesday" & "|" &   "9:30-12:00" & "|" &    "Betty and Marg" & "|" &    "CHURCH"
        $ComboList5 = $ComboList1
    Next
    Global $Children[25][7]
    For $s = 0 to 24
            $Children[$s][0] = "Amy" & $s
            $Children[$s][1]  = "Smith" & $s
            $Children[$s][2] = "Mum" & $s
            $Children[$s][3]  = "" & $s
            $Children[$s][4] = "Dad" & $s
            $Children[$s][5]  =  "" & $s
            $Children[$s][6]  = $s +100
    Next
    _ArraySort($Children,0, 0, 0,0)
    SplashOff()
EndFunc   ;==>FiletoArray

This is the script. I haven't posted like this before so am not sure why the last bit is in red??

 

Thanks

Share this post


Link to post
Share on other sites

This is not runable reproducing script.

It throws error: Search Error
 Error reading Info Settings File to Array error:1
 +

Quote

"z.au3" (406) : ==> Subscript used on non-accessible variable.:
$s = $data[0]
$s = $data^ ERROR
>Exit code: 1    Time: ...

 

Edited by Zedna

Share this post


Link to post
Share on other sites

Sorry about that. Forgot to check that it run in another folder. I have posted the corrected version below'

I have created a much reduced script that demonstrates the issue with some junk data. If you run the script, click page down and roll your mouse over the second and third columns (Main Carer and Extra Carer the data changes back to that on page one. I can see why this should happen. In the full program I need to cope wit h100 records on 10 pages so this has to be sorted. Any suggestions would be gratefully received.

Thanks

#cs ----------------------------------------------------------------------------
Script Information      COMPILE as x86 for compatibiliy (32-bit)
    AutoIt Version:     3.3.14.2
    Author: Alan Pattle - June 2016 -
    System Name:    Kids Check-In - Kids Registration System - Little Lights
#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here
#include <GUIConstants.au3>
#include <Array.au3>
#include <MsgBoxConstants.au3>
#include <Date.au3>
#include <StaticConstants.au3>
#include <file.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListBox.au3>
#include <OutlookEX.au3>
#include <GUIListViewEx.au3>
#include <ButtonConstants.au3>
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
#include <WinAPI.au3>
#include <INet.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <DateTimeConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <Misc.au3>

;++ VARIABLES +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Global $version ;system version from KCIInfoLL
Global $build = "0088" ; Version of this module
Global $var
Global $INFOFILE = "KCIInfo.TXT"
;Global $UserFile = "Users.CSV"
Global $Valid = "False"
Global $UserName ; = "APATTLE"
Global $Password
Global $UserInput, $Users, $UserType, $AdminMenu, $RegMenu
Global $PassInput
Global $DataFile
Global $DataFile1
Global $HomeDir
Global $CarerFile
Global $data, $data0, $tdata
Global $s, $x, $N, $Q, $Y, $L, $K, $Q1, $v, $vr
Global $Ls, $Lx, $LN, $LQ, $LY, $LL, $LK, $LQ1
Global $Line, $Line2, $Line3
Global $systemname= "Registration System", $UserFile, $tClasses, $Classes, $ClassesFile, $ThisClass, $tChildren, $Children, $ChildrenFile, $CLRecords, $CHRecords, $AttndFile
Global $Kids, $KidNo, $KidName, $Kid, $Child, $Child1, $Kid2d, $Kid2e, $Kid2f
Global $ClCode, $ClName, $ClOrg, $ClRun, $ClDay, $ClTime, $ClDate
Global $ComboList1, $Combolist1Def, $ComboList2, $Combolist2Def
Global $ComboList5, $Combolist5Def, $ComboList5, $Combolist5Def
Global $ComboList10, $Combolist10Def
Global $Combo1, $Combo2, $Combo10, $Combo5
Global $ComboList30, $Combolist30Def, $Combo30
Global $ComboList40, $Combolist40Def, $Combo40
Global $ComboList[101], $Combo[101]
Global $Combo2List[101], $Combo2[101]
Global $ComboList41, $Combolist41Def, $Combo41
Global $ComboList42, $Combolist42Def, $Combo42
Global $Kid1a[101], $Kid1b[101], $Kid1c[101], $Kid1d[101], $Kid1e[101], $Kid1f[101], $Kid1enew[101], $Kid1fnew[101], $KidsFound = 0, $KidsReg = 0, $KidsCarReg = 0
Global $Page1 = "xx", $Page2 = "xx", $Page3 = "xx", $CurPage = "1", $Page4 = "xx", $Page5 = "xx"
Global $Form1_1, $Form1_2, $FormAC, $FormReg
Global $KidFName, $KidSName, $KidDoB, $KidP1FName, $KidP1SName, $KidP1Phone, $KidP2FName, $KidP2SName, $KidP2Phone, $KidClass1, $KidClass2, $KidClass3, $KidClass4
Global $KidGender, $KidSchYr, $KidAddress1, $KidAddress2, $KidPostCode, $KidPhone, $KidEmail, $KidSpConds, $KidPhoto, $KidHBCNo
Global $CareKidNo, $CareFName, $CareSName, $CarePhone, $CareEmail, $CareClass1, $CareClass2, $CareRole, $MRecords, $CarerRecords, $AddCarer, $CarersReg
Global $Next = "No", $No
Global $Button1FK
Global $Labels[200], $RecNo, $Check
Global $idCheckbox, $TODAYONLY, $iWeekday, $iWeekName
Global $DateFile[8][5], $DFDate, $DFDayName, $DFDay, $DFMonth, $DFYear, $TDate, $Date1
Global $LeadInit, $LeadFName, $LeadSName, $LeadDBS, $LeadDBSRenew, $LeadClass1, $LeadClass2, $LeadClass3, $LeadClass4, $LeadClass5, $LeadClass6, $Leaders, $tLeaders, $LRecords, $Leader, $Leadra[11], $Leadrb[11], $Leadc[11]
Global $LLabels[11], $FormRegLeaders, $RegButton, $Label152, $ButtonStatus1, $ButtonStatus2, $FormStatus2, $Label152[100], $Label252[100], $Label52[100], $Label2[100], $Label352[100]
Global $NetFilePath
Global $iFileExists, $CheckNet, $g_idMemo, $LRegFiles, $LRegRecords, $LFileName, $hSearch, $RegLeaders
Global $hDLL = DllOpen("user32.dll")
Global $RLine
Global $Status[100][2], $StatusLine[100], $StRef, $StChild, $StCarer1, $StCarer2, $StDate


;++ VARIABLES END +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ReadInfo()
FiletoArray()
;DateFileCreate()
;Login()
;If $Valid = "True" Then
    Registration()
;EndIf

Exit

;++ FUNCTIONS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Func Registration()
    #Region ### START Koda GUI section ### Form=c:\ap\scripts\kids check in\registration.kxf
    $FormReg = GUICreate("Registration" & " - System Version: " & $version & " - Build No: " & $build, 1500, 770, -1, -1)
    GUISetFont(11, 400, 0, "Segoe UI")
    $Label1 = GUICtrlCreateLabel($systemname , 0, 0, 1500, 60, BitOR($SS_CENTER, $WS_BORDER))
    GUICtrlSetFont(-1, 24, 400, 0, "Segoe Print")
    GUICtrlSetColor(-1, 0x000080)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Group1 = GUICtrlCreateGroup("Children - Page " & $CurPage & " Records found " & $KidsFound, 10, 69,1540, 620)
    GUICtrlSetColor(-1, 0x0000FF)
    $Labelshead1 = GUICtrlCreateLabel("Main Carer                                                  Extra Carer                              ", 430, 83, 680, 20)
    GUICtrlSetFont(-1, 11, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1,($GUI_BKCOLOR_TRANSPARENT))
    $Labels2 = GUICtrlCreateLabel($Kid1a[1] & " " & $Kid1b[1], 75, 110, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[52] = GUICtrlCreateLabel($Kid1c[1], 1040, 110, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label3 = GUICtrlCreateLabel($Kid1a[2] & " " & $Kid1b[2], 75, 170, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[53] = GUICtrlCreateLabel($Kid1c[2], 1040, 170, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label4 = GUICtrlCreateLabel($Kid1a[3] & " " & $Kid1b[3], 75, 230, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[54] = GUICtrlCreateLabel($Kid1c[3], 1040, 229, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label5 = GUICtrlCreateLabel($Kid1a[4] & " " & $Kid1b[4], 75, 290, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[55] = GUICtrlCreateLabel($Kid1c[4], 1040, 289, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label6 = GUICtrlCreateLabel($Kid1a[5] & " " & $Kid1b[5], 75, 350, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[56] = GUICtrlCreateLabel($Kid1c[5], 1040, 349, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label7 = GUICtrlCreateLabel($Kid1a[6] & " " & $Kid1b[6], 75, 410, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[57] = GUICtrlCreateLabel($Kid1c[6], 1040, 409, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label8 = GUICtrlCreateLabel($Kid1a[7] & " " & $Kid1b[7], 75, 470, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[58] = GUICtrlCreateLabel($Kid1c[7], 1040, 469, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label9 = GUICtrlCreateLabel($Kid1a[8] & " " & $Kid1b[8], 75, 530, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[59] = GUICtrlCreateLabel($Kid1c[8], 1040, 529, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label10 = GUICtrlCreateLabel($Kid1a[9] & " " & $Kid1b[9], 75, 590, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[60] = GUICtrlCreateLabel($Kid1c[9], 1040, 589, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Label11 = GUICtrlCreateLabel($Kid1a[10] & " " & $Kid1b[10], 75, 650, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Labels[61] = GUICtrlCreateLabel($Kid1c[10], 1040, 649, 100, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Button11 = GUICtrlCreateButton("Page Up", 1208, 580, 100, 50)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0x00FFFF)
    $Button13 = GUICtrlCreateButton("Page Down", 1208, 640, 100, 50)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
    GUICtrlSetBkColor(-1, 0x00FFFF)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $RegClose = GUICtrlCreateButton("CLOSE", 1368, 640, 100, 50)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlSetBkColor(-1, 0xA6CAF0)

    GUISetState(@SW_SHOW)
    Reset()
    FindKids()
    ShowKids()
    #EndRegion ### END Koda GUI section ###
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE, $RegClose
                Exit
                    ShowKids()
            Case $Button11
                If $CurPage = "5" Then
                    $CurPage = "4"
                ElseIf $CurPage = "4" Then
                    $CurPage = "3"
                ElseIf $CurPage = "3" Then
                    $CurPage = "2"
                ElseIf $CurPage = "2" Then
                    $CurPage = "1"
                EndIf
                ShowKids()
            Case $Button13
                If $CurPage = "1" Then
                    $CurPage = "2"
                ElseIf $CurPage = "2" Then
                    $CurPage = "3"
                ElseIf $CurPage = "3" Then
                    $CurPage = "4"
                ElseIf $CurPage = "4" Then
                    $CurPage = "5"

                EndIf
                ShowKids()

        EndSwitch
Wend
EndFunc   ;==>Registration


Func CurPage()
            If $CurPage = "1" Then
                    $Q = $L - 51
                ElseIf $CurPage = "2" Then
                    $Q = $L - 41
                ElseIf $CurPage = "3" Then
    ;               $Q = 21
                    $Q = $L - 31
                ElseIf $CurPage = "4" Then
                    $Q = $L - 21
                ElseIf $CurPage = "5" Then
                    $Q = $L - 11
                    Endif
    EndFunc ;====> CurPage()

Func PageDisp($L)
    If $L > $KidsFound Then
        $Label2[$L] = GUICtrlCreateLabel(" ", 75, $v, 280, 29)
        $Label352[$L] = GUICtrlCreateLabel("", 1040, $v, 100, 29)
        $Label152[$L] = GUICtrlCreateLabel("", 380, $v, 220, 29)
        $Label252[$L] = GUICtrlCreateLabel("",  650, $v, 220, 29);
    Return
    Endif
$Kid2d = $Kid1d[$L]
If $Kid1a[$L] <> "" then
    $Label2[$L] = GUICtrlCreateLabel("(" & $L & ")" & $Kid1a[$L] & " " & $Kid1b[$L] , 75, $v, 280, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
        If $Kid1e[$L] <> "" then
            $Combo[$L] = GUICtrlCreateCombo("(" & $L  & ")"  & $Kid1e[$L], 380, $v, 220, 29, BitOR($CBS_DROPDOWN, $CBS_SIMPLE ))
            GUICtrlSetData(-1, $Kid1e[$L] & "|" & $Kid1f[$L], $Kid1e[$L])
            GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI")
            GUICtrlSetBkColor(-1, 0xFFFFFF)
            $Label352[$L] = GUICtrlCreateLabel($Kid1c[$L], 1040, $v, 100, 29)
            if $Kid1f[$L] <> "" then
                $Combo2[$L] = GUICtrlCreateCombo("(" & $L & ")" & "",  650, $v, 220, 29, BitOR($CBS_DROPDOWN,$CBS_SIMPLE ))
                GUICtrlSetData(-1, $Combo2List[$L], "")
                GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI")
                GUICtrlSetBkColor(-1, 0xFFFFFF)
                If StringRight($Kid1e[$L],3) = "[L]" Then
                    $Label152[$L] = GUICtrlCreateLabel("", 380, $v, 220, 29)
                    $Label252[$L] = GUICtrlCreateLabel("Leader",  650, $v, 220, 29);
                    GUICtrlSetColor(-1, 0x0000FF)
                Endif
            Else
                $Label252[$L] = GUICtrlCreateLabel("(" & $L & ")" & " No Additional Carers",  650, $v, 220, 29);
            EndIf
        EndIf
        GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI")
        GUICtrlSetBkColor(-1, 0xFFFFFF)
    ;   CheckReg()
        If $Kid1c[$L] = "Registered" Then
            $Label52[$L] = GUICtrlCreateLabel($Kid1c[$L], 1040, $v, 100, 29)
            $Label152[$L] =GUICtrlCreateLabel ($Kid1f[$L],  650, $v, 220, 29);
            GUICtrlSetFont(-1, 14, 400, 0, "Segoe UI")
            GUICtrlSetBkColor(-1, 0xFFFFFF)
            If StringRight($Kid1e[$L],3) = "[L]" Then
                $Label252[$L] = GUICtrlCreateLabel("", 380, $v, 220, 29)
                $Label152[$L] = GUICtrlCreateLabel("Leader",  650, $v, 220, 29);
                GUICtrlSetColor(-1, 0x0000FF)
            Endif
        Endif
    Endif

EndFunc

Func ShowKids()
    If $CurPage = "XX" Then Return
    $LabelStatus4 = GUICtrlCreateLabel("Leaders", 30,723, 62, 24)
    $LabelStatus2 = GUICtrlCreateLabel($RegLeaders, 90, 723, 300, 28)
    GUICtrlSetColor(-1, 0x0000FF)
    $LabelStatus1 = GUICtrlCreateLabel("Kids Registered",550, 723, 116, 24)
    $LabelStatus3 = GUICtrlCreateLabel($KidsReg, 650, 723, 65, 28)
    GUICtrlSetColor(-1, 0x0000FF)
    $LabelStatus6 = GUICtrlCreateLabel("Carers Registered", 750, 723, 133, 24)
    $LabelStatus4 = GUICtrlCreateLabel($KidsCarReg, 870, 723, 65, 28)
    GUICtrlSetColor(-1, 0x0000FF)
    $Group1 = GUICtrlCreateGroup("Children - Page " & $CurPage & " Records found " & $KidsFound, 10, 69,1540, 620)
    If $CurPage = "1" Then
        $v = 110
        For $L = 1 To 10
            PageDisp($L)
            $v = $v + 60
        Next
    ElseIf $CurPage = "2" Then
        $v = 110
        For $L = 11 To 20
            PageDisp($L)
            $v = $v + 60
        Next
    ElseIf $CurPage = "3" Then
        $v = 110
        For $L = 21 To 30
            PageDisp($L)
            $v = $v + 60
        Next
    ElseIf $CurPage = "4" Then
        $v = 110
        For $L = 31 To 40
            PageDisp($L)
            $v = $v + 60
        Next
    ElseIf $CurPage = "5" Then
        $v = 110
        For $L = 41 To 50
            PageDisp($L)
            $v = $v + 60
        Next
    EndIf
    GUISetState(@SW_SHOW)
EndFunc   ;==>ShowKids

Func CheckCLDay()
    For $d = 1 to 7
        If $ClDay = $DateFile[$d][1] Then
            $ClDate = $DateFile[$d][2] & "/" & $DateFile[$d][3] & "/" & $DateFile[$d][4]
            Return
        EndIf
    Next
Endfunc

Func FindKids()
    $KidsFound = 0
    For $x = 1 To 100
        $Kid1a[$x] = ""
        $Kid1b[$x] = ""
        $Kid1c[$x] = ""
        $Kid1d[$x] = ""
        $Kid1e[$x] = ""
        $Kid1f[$x] =  ""
    Next
    $No = 0
    $h = UBound($Children, $UBOUND_ROWS)
    $w = UBound($Children, $UBOUND_COLUMNS)
    For $x = 1 To 25
            $Kid1a[$No] = $Children[$x - 1][0]
            $Kid1b[$No] = $Children[$x - 1][1]
            $Kid1d[$No] = $Children[$x - 1][6]
            $Kid1e[$No] = $Children[$x - 1][3] & " " & $Children[$x - 1][4]
            $Kid1f[$No] = $Children[$x - 1][5] & " " & $Children[$x - 1][6]
            $Kid2d = $Kid1d[$No]
            $Kid2f = $Kid1f[$No]
            $No = $No + 1
    Next
    $KidsFound = $No
    If $No < 11 Then
        $Page1 = "1"
    ElseIf $No > 10 And $No < 21 Then
        $Page2 = "2"
    ElseIf $No > 20 And $No < 31 Then
        $Page3 = "3"
    ElseIf $No > 30 And $No < 41 Then
        $Page4 = "4"
    ElseIf $No > 40 And $No < 51 Then
        $Page5 = "5"
    ElseIf $No > 50 And $No < 61 Then
        $Page3 = "6"
    ElseIf $No > 60 And $No < 71 Then
        $Page4 = "7"
    ElseIf $No > 70 And $No < 81 Then
        $Page5 = "8"
    ElseIf $No > 80 And $No < 91 Then
        $Page4 = "9"
    ElseIf $No > 90 And $No < 101 Then
        $Page5 = "10"
    EndIf
    $CurPage = "1"
EndFunc   ;==>FindKids

Func Reset()
    For $N = 0 To 100
        $Kid1a[$N] = ""
        $Kid1b[$N] = ""
        $Kid1c[$N] = ""
        $Kid1d[$N] = ""
        $Kid1e[$N] = ""
        $Kid1f[$N] = ""
    Next
EndFunc   ;==>Reset

Func ReadInfo()
    Global $version = "Beta 00.00"
    Global $systemname = "Registration System"
    Global $HomeDir = "\"
    Global $DataFile = " "
    Global $DataFile1 = " "
    Global $UserFile = " "
    Global $ChildrenFile = " "
    Global $ClassesFile = " "
    Global $LogFile = " "
    Global $MFfile = "Male|Female "
    Global $SchYrFile = "Baby|Todl|Nurs|PreS|Yr0|Yr1|Yr2|Yr3"
    Global $YN = "Yes|No"
    Global $LeadersFile = " "
    Global $CarerFile = " "
EndFunc   ;==>ReadInfo

Func FiletoArray()
    ReadInfo()
    $Combolist1 = ""
    $ComboList2 = ""
    $ComboList5 = ""
    $ComboList6 = $MFfile
    $ComboList7 = $SchYrFile
    $ComboList8 = $YN
    $CLRecords = ""
    $CHRecords = ""
    $ComboList5 = ""
    For $x = 1 To $s
        $ComboList1 = "LL001" & "|" & "Little Lights" & "|" &   "CHURCH"     & "|" &"Tuesday" & "|" &   "9:30-12:00" & "|" &    "Betty and Marg" & "|" &    "CHURCH"
        $ComboList5 = $ComboList1
    Next
    ;Generate Data
    Global $Children[25][7]
    For $s = 0 to 24
            $Children[$s][0] = "Amy" & $s
            $Children[$s][1]  = "Smith" & $s
            $Children[$s][2] = "Mum" & $s
            $Children[$s][3]  = "Smith" & $s
            $Children[$s][4] = "Dad" & $s
            $Children[$s][5]  =  "Smith" & $s
            $Children[$s][6]  = $s +100
    Next
    _ArraySort($Children,0, 0, 0,0)
EndFunc   ;==>FiletoArray

 

Share this post


Link to post
Share on other sites

Your whole GUI concept is totally wrong.

Don't use GUICtrlCreateLabel() GUICtrlCreateCombo() in ShowKids() and PageDisp()

Instead use only GUICtrlSetData() there.

So you have to create labels/comboboxes only once at start and later only change (reset or set) their data/content by GUICtrlSetData()

 

This is also related to your "mouse over problem" because you create more and more controls (label/combobox) over and over at the same place on GUI and they overlap.

 

EDIT:

I recommend to use ListView control instead of bunch label/comboboxes and buttons page up/page down, look at similar topic here:

 

Edited by Zedna

Share this post


Link to post
Share on other sites

@Zedna is perfectly right.  Also :

If you are to create multiple Gui objects with the same font, size and bk color,  use the general form of it GUISetFont (...) and GUISetBkColor (...)

You could also create your multiple labels in a loop instead of creating them one after the other. 

Those 2 measures would greatly reduce the length of your script and would increase its readability.

I suggest you revise your script accordingly and submit us the result, so we can further optimise your code (if you wish too ofc).

Share this post


Link to post
Share on other sites

Many thanks @Zedna and @Nine I will look into modifying the script inline with your suggestions. 

I will get back to you if I need any more assistance.

Share this post


Link to post
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

  • Similar Content

    • By t0nZ
      Often I need to create a panel to monitor a lot of things (users, files, items etc) so I use this piece of code to create a dynamic grid of buttons.
      The number of buttons is variable, and it's related to the size of the gui, the size of the buttons and the distance between buttons.
      Every "button" is a set of three with a real button stacked on the top of two labels, imagine reading a .CSV file or an array or a database and displaying all the things using the labels (Text and COLOR too) and clickin' on the relative button you can call further info on the item or call a particular function.
      So you can decide the number of the buttons, the width of the buttons, and also the distance  between buttons.
      It's quick and dirty, simple  and very improvable (I know..) so fell free to play with the code.
      ;TEST ;GOL-Grill ;Grill test/template ; (c) 2019 NSC ; V.0.6 #Region ;************ Includes ************ #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> #include <EditConstants.au3> #include <ProgressConstants.au3> #include <_GOLLOG.au3>; NSC first UDF #EndRegion ;************ Includes ************ Dim $agButton[1] Global $ButtonU, $rProgress, $form1, $labeltot, $ntotButtonS ; the number of buttons is variable based on the guisize, the button size and button distance, three examples.... ;Global $guiwidth = 850, $guiheight = 500, $buttonW = 150, $buttonHDistance = 10, $buttonVDistance = 20 ; SMALL GUI / BIG BUTTONS <- try it ! Global $guiwidth = 1500, $guiheight = 700, $buttonW = 90 , $buttonHDistance = 29, $buttonVDistance = 3; BIG GUI / SMALL BUTTONS ;Global $guiwidth = 1200, $guiheight = 800, $buttonW = 300, $buttonHDistance = 30, $buttonVDistance = 7; last two variables are horizontal and vertical distance between buttons Global $ver = "V.0.6" Gollog(">>>>> START") Dim $aResult[11] = [10, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] ; this is an example, it can be an array, a DB, a .text file read in real time. Gui() Gollog("start analyzing...") Monitor() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE CLOSEClicked() Exit Case $ButtonU Monitor() Case Else For $i = 1 To $ntotButtonS If $nMsg = $agButton[$i] Then $Bhit = GUICtrlRead($agButton[$i]) infoB($Bhit) EndIf Next EndSwitch WEnd Func Gui() $form1 = GUICreate("Buttons on a grill " & $ver & " (c) NSC 2019", $guiwidth, $guiheight, 90, 10) $ButtonU = GUICtrlCreateButton("Update", 2, 2, 170, 50) $labeltot = GUICtrlCreateLabel("Total found", 5, 55) $Gollogedit = GUICtrlCreateEdit("", 2, $guiheight - 255, 180, 250, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_BORDER)) $rProgress = GUICtrlCreateProgress($guiwidth - 18, 5, 16, $guiheight - 7, BitOR($PBS_SMOOTH, $PBS_VERTICAL, $WS_BORDER)) GUICtrlSetColor(-1, 0x00FF00) GUICtrlSetBkColor(-1, 0x000000) GUISetState(@SW_SHOW) EndFunc ;==>Gui Func Monitor() GUIDelete($form1) Gui() $leftSTART = 186 ;left align $topSTART = 5 ;start from top $lineDOWN = 45 + $buttonVDistance ; vertical line distance 45 is buttons very near $extraHSTEP = 3 ; extra line distance $buttonSEMIH = 15 ; height of one of the 3 vertical impiled semibuttons $separatorSEMIH = 2 ;vertical distance between 3 semibuttons $separatorW = 2 ;aux horizontal distance ;---------- derived measures $rightLIMIT = $guiwidth - 123 ; right limit befor Carriage Return $leftINCREMENT = $buttonHDistance + $buttonW ; horizontal increment button after button $leftSTEP = $leftSTART ;incremental horizontal $topSTEP = $topSTART ;incremental vertical $foundB = $aResult[0] GUICtrlSetData($labeltot, "Found n°" & $foundB) $ntotButtonS = 0 $nomorebuttons = 0 For $i = 1 To $foundB Local $itemFound = $aResult[$i] ;\TA1000 Gollog($itemFound) GUICtrlCreateGroup('', $leftSTEP, $topSTEP - 3, $buttonW + 3, 50) ;______first-----------------------------_______line___________________UNO________11111_____\\\\\\\\\\------------ Local $textbutton = "button n°" & $i _ArrayAdd($agButton, GUICtrlCreateButton($textbutton, $leftSTEP + $separatorSEMIH, $topSTEP + $extraHSTEP, $buttonW, $buttonSEMIH, $BS_flat)) GUICtrlSetBkColor(-1, 0xccffcc) ;green, sort of GUICtrlSetFont(-1, 7, -1, -1, 'verdana') GUICtrlSetColor(-1, 0x000000) ;___second__________line___________________DUE ________222222-------------------------------------------------------------------- Local $textLINE2 = $itemFound GUICtrlCreateLabel($textLINE2, $leftSTEP + $separatorW, $topSTEP + $buttonSEMIH + $separatorSEMIH, $buttonW, $buttonSEMIH, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetBkColor(-1, 0xD2D7A8) GUICtrlSetFont(-1, 7, -1, -1, 'verdana') GUICtrlSetColor(-1, 0x000000) ; __third______line________tre___________________________________________________________333333-3333333-333333333-333333-33333-33333-3333-------------------------------- Local $textLINE3 = "line3" GUICtrlCreateLabel($textLINE3, $leftSTEP + $separatorW, $topSTEP + $buttonSEMIH + $buttonSEMIH + $separatorSEMIH, $buttonW, $buttonSEMIH, BitOR($SS_CENTER, $SS_CENTERIMAGE)) ; NSC modify GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetFont(-1, 7, -1, -1, 'verdana') GUICtrlSetColor(-1, 0x000000) $ntotButtonS += 1 GUICtrlSetData($rProgress, (100 * $ntotButtonS / $foundB)) If $leftSTEP + $buttonW < $rightLIMIT Then ; $leftSTEP += $leftINCREMENT ;53 Else $leftSTEP = $leftSTART $topSTEP += $lineDOWN If $topSTEP >= $guiheight - 50 Then $nomorebuttons = 1 Gollog("displayed " & $ntotButtonS & " buttons") Gollog("NO more buttons !") EndIf EndIf Sleep(100) ; REMOVE is only for demo Next While $nomorebuttons = 0 ; draw empty buttons (nice to do) $ntotButtonS += 1 _ArrayAdd($agButton, GUICtrlCreateButton("B-" & $ntotButtonS, $leftSTEP + $separatorSEMIH, $topSTEP + $extraHSTEP, $buttonW, $buttonSEMIH, $BS_flat)) If $leftSTEP + $buttonW < $rightLIMIT Then ; $leftSTEP += $leftINCREMENT Else $leftSTEP = $leftSTART $topSTEP += $lineDOWN If $topSTEP >= $guiheight - 50 Then $nomorebuttons = 1 Gollog("displayed " & $ntotButtonS & " buttons") Gollog("NO more buttons !") EndIf EndIf WEnd GUISetState(@SW_SHOW) EndFunc ;==>Monitor Func infoB($Bhit) ; this function act on the pressed button, it's an example so assign the task you need. gollog("infoB -> " & $Bhit) EndFunc ;==>infoB Func CLOSEClicked() MsgBox(64, "exit", "program exiting", 1) Gollog("<---STOP") Exit EndFunc ;==>CLOSEClicked You will need also the Include from this post for the LOG (Gollog) instructions, but you can also just remove the gollog and the EDIT box.
      Look at the screenshot, It's from an APP made using this code.

      21/11/2019 V.0.6
      Script lightly updated with better management of buttons size and distance.
       
    • By Fenzik
      Hello,
      i searched the forum for something near, but with no success...
      I have Combobox control with $CBS_DROPDOWNLIST style with some items (for example (one, two, nine).
      When i want to select the item, using keyboard, the items are selected only on First letter base (for example when i type "on", Nine is selected).
      Is there some trick to force the combobox with $CBS_DROPDOWNLIST style to accept more than the First letter during selecting the items from the list?
      Mi wanted result is the same as for example - when you type "fir" on the desktop, Firefox is automatically selected.
      Thank you so much.
      Fenzik
    • By therks
      I'm trying to implement a scrolling list of controls. I have it sort of working using the GUIScrollBars_Ex UDF by @Melba23 found here. I also want to be able to tab through the controls, which I have accomplished by adding $WS_EX_CONTROLPARENT to the child GUI. The problem is that with that style applied, the scrollbar doesn't act like a scrollbar, instead it acts as a title bar to the child GUI letting you drag the it around (and you can even "maximize" it by double clicking).
      Any ideas?
      #include <GUIConstants.au3> #include "GUIScrollbars_Ex.au3" $iButtonCount = 30 $hParent = GUICreate('Example', 300, 230) $hChild = GUICreate('', 300, 200, 0, 0, BitOR($WS_CHILD, $WS_TABSTOP), $WS_EX_CONTROLPARENT, $hParent) For $i = 0 To $iButtonCount GUICtrlCreateButton('Button in list', 0, $i*30, 300, 30) Next GUISwitch($hParent) GUICtrlCreateButton('More Buttons', 0, 200, 150, 30) GUICtrlCreateButton('More Buttons', 150, 200, 150, 30) GUISetState(@SW_SHOW, $hParent) GUISetState(@SW_SHOW, $hChild) _GUIScrollbars_Generate($hChild, 100, $iButtonCount * 30+20) While GUIGetMsg() <> $GUI_EVENT_CLOSE WEnd  
    • By Saravanan2213
      Hi everyone,
      i just need your help. i have script for cleaning browsing history and other unwanted file but the problem is i don't want to see the GUI i have attached below. It should not show anything on the screen. is it possible to do it in autoit. thanks in advance.
       
      So for i have tried flag
      Run("rundll32.exe InetCpl.cpl,ClearMyTracksByProcess 255", "", @SW_HIDE)
      @SW_DISABLE
       
      Looking forward your help.........

    • By Pickpocketz88
      First I would just like to say HELLO! to anyone reading. It has been a while since I've posted to the Forums but I'm always crawling around.
      Now to the matter at hand. I have been looking high and low for a simplistic answer my burned out brain can find but to no avail. I've only recently upped my AutoIt skill and only by a little bit such as ordering my script neatly with my own UDFs and using Global/Dim more often to make my GUI creation understandable and easy to keep things orderly. My current problem however is figuring out how to make my newest endeavor work which is my own "Debugger". I've made a GUI with an Edit Control to display what my Variables are holding and other information from a concurrently running Script. I have access to all of the scripts I'm attempting to connect but I'm dumbfounded on how I would separately read variable information from one running script into another. I'll provide my "Debugger" script that I want to read variables into and a "Meta Script" I'd want to pass info from.
      #Region Include Files #include <AutoItConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ColorConstantS.au3> #EndRegion #Region AutoIt Options ;Opt("TrayAutoPause", 0) ;Opt("TrayMenuMode", 3) #EndRegion #Region Hotkeys HotKeySet("{ESC}", "ExitProgram") HotKeySet("{PGDN}", "PauseProgram") HotKeySet("!1", "Snippet_1") HotKeySet("!2", "Snippet_2") HotKeySet("!3", "Snippet_3") HotKeySet("!4", "Snippet_4") HotKeySet("!5", "Snippet_5") HotKeySet("!6", "Snippet_6") HotKeySet("!7", "Snippet_7") HotKeySet("!8", "Snippet_8") HotKeySet("!9", "Snippet_9") #EndRegion #Region Global Variables #Region Globals Global $gMain, $ctrlEdit ;, $gParent #EndRegion #Region $gMain Params Dim $gMainW = @DesktopWidth / 2 Dim $gMainH = @DesktopHeight / 2 Dim $gMainX = (@DesktopWidth / 2) - ($gMainW / 2) Dim $gMainY = (@DesktopHeight / 2) - ($gMainH / 2) Dim $gMainStyle = $WS_POPUP Dim $gMainStyleEx = -1 ;Dim $gMainParent = $gParent #EndRegion #Region $ctrlEdit Params Dim $ctrlEditW = Round($gMainW * 0.98) Dim $ctrlEditH = Round($gMainH * 0.98) Dim $ctrlEditX = ($gMainW - $ctrlEditW) / 2 Dim $ctrlEditY = ($gMainH - $ctrlEditH) / 2 Dim $ctrlEditStyle = -1 Dim $ctrlEditStyleEx = -1 #EndRegion #EndRegion #Region GUI Initialization ;$gParent = GUICreate("", -1, -1, -1, -1, -1, $WS_EX_TOOLWINDOW) $gMain = GUICreate("", $gMainW, $gMainH, $gMainX, $gMainY, $gMainStyle, $gMainStyleEx) GUISetBkColor($COLOR_BLACK, $gMain) $ctrlEdit = GUICtrlCreateEdit("MainW: " & $gMainW & @CRLF & "MainH: " & $gMainH & @CRLF & "EditW: " & $ctrlEditW & @CRLF & "EditH: " & $ctrlEditH, $ctrlEditX, $ctrlEditY, $ctrlEditW, $ctrlEditH, $ctrlEditStyle, $ctrlEditStyleEx) GUISetState(@SW_SHOW, $gMain) #EndRegion MainFunction() #Region Main Function (GUI) Func MainFunction() While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then Exit EndIf WEnd EndFunc #EndRegion #Region Functions Func Functions() EndFunc #EndRegion #Region Program 1 Func Snippet_1() EndFunc #EndRegion #Region Program 2 Func Snippet_2() EndFunc #EndRegion #Region Program 3 Func Snippet_3() EndFunc #EndRegion #Region Program 4 Func Snippet_4() EndFunc #EndRegion #Region Program 5 Func Snippet_5() EndFunc #EndRegion #Region Program 6 Func Snippet_6() EndFunc #EndRegion #Region Program 7 Func Snippet_7() EndFunc #EndRegion #Region Program 8 Func Snippet_8() EndFunc #EndRegion #Region Program 9 Func Snippet_9() EndFunc #EndRegion #Region Pause/Exit Functions Func PauseProgram() While 1 Sleep(1000) WEnd EndFunc Func ExitProgram() Exit EndFunc #EndRegion Pause/Exit Functions #Region Snippets #CS #CE #EndRegion #Region Other Information #CS #CE #EndRegion That's the Debugger script. Please forgive anything ignorant but point it out if you will, I'll take any pointers to get better! (I usually use a Select to get $GUI_EVENT_CLOSE but this is early on)
      Now if I made another script with a basic GUI similar to this and wanted to read say the GUI Width ($gMainW) into the Debugger Edit Control could I do it? If so, could I do it for every variable I have in a script? I read something about the Run function and adding the variables as an option parameter I believe which I think I could do with an array to keep it from being super long and ugly but would that be the only way to do this? Any information is going to be appreciated and thank you in advance for your time!
       
      Edit: Sadly it just dawned on me that I could make a UDF that will create a child window that will do this instead of having a separate script trying to invade another... I'll still be keeping an eye on this for any comments but I apologize if I wasted your time!
×
×
  • Create New...