Thanks, that helps.

I've everything working now except for one last detail. As I said, I wanted the checkboxes to disable the editboxes, and not allow the next editbox to be opened unless the previous has data in it. This is working, but I can't seem to make the edit boxes disable at the start if they have no data. I think this is because of how the %chan [ $+ [ %c ] ] isn't being set to null properly because there is no corresponding variable in the ini file. How can you write a null variable to an ini? Trying $null just returns not enough parameters.

Yes, I've noticed something atypical about mIRC scripting. Unlike C++ and other languages, it seems to actually care about whitespace. It's rather annoying as my usual coding style has very few spaces in it.

Here's the new code, load it up and the dialog will come up. The sequential order works fine, and the disabling does too, they just don't start disabled...

Code:
;********************
;*Setup dialog table*
;********************

dialog scad_setup_t {
  title "Scrim Advertisment 1.0 Setup"
  size -1 -1 128 130
  option dbu
  tab "Channels", 1, 0 0 128 130
  check "1:", 11, 4 17 16 10, tab 1 left
  check "2:", 12, 4 28 16 10, tab 1 left
  check "3:", 13, 4 39 16 10, tab 1 left
  check "4:", 14, 4 50 16 10, tab 1 left
  check "5:", 15, 4 61 16 10, tab 1 left
  check "6:", 16, 4 72 16 10, tab 1 left
  check "7:", 17, 4 83 16 10, tab 1 left
  check "8:", 18, 4 94 16 10, tab 1 left
  check "9:", 19, 4 105 16 10, tab 1 left
  check "10:", 110, 2 116 18 10, tab 1 left
  edit "", 111, 24 17 72 10, tab 1 autohs limit 255
  edit "", 112, 24 28 72 10, tab 1 autohs limit 255
  edit "", 113, 24 39 72 10, tab 1 autohs limit 255
  edit "", 114, 24 50 72 10, tab 1 autohs limit 255
  edit "", 115, 24 61 72 10, tab 1 autohs limit 255
  edit "", 116, 24 72 72 10, tab 1 autohs limit 255
  edit "", 117, 24 83 72 10, tab 1 autohs limit 255
  edit "", 118, 24 94 72 10, tab 1 autohs limit 255
  edit "", 119, 24 105 72 10, tab 1 autohs limit 255
  edit "", 1110, 24 116 72 10, tab 1 autohs limit 255
  tab "Theme", 2
  text "Insert your theme here. Note that the last colours of the left and middle theme sections should be the colours you want the text to be.", 20, 4 20 118 20, tab 2
  text "Left:", 21, 9 44 12 8, tab 2 right
  text "Middle:", 23, 4 56 17 8, tab 2 right
  text "Right:", 25, 6 68 15 8, tab 2 right
  edit "", 22, 25 43 97 10, tab 2
  edit "", 26, 25 68 97 10, tab 2
  edit "", 24, 25 55 97 10, tab 2
  tab "Messages", 3
  text "Clan Acronym:", 30, 4 17 35 8, tab 3
  text "Match size:", 32, 4 39 27 8, tab 3
  text "Server:", 34, 4 83 18 8, tab 3
  text "Map:", 36, 4 61 12 8, tab 3
  text "Contact info:", 38, 4 105 32 8, tab 3
  edit "", 31, 4 26 118 10, tab 3
  edit "", 33, 4 48 118 10, tab 3
  edit "", 35, 3 70 118 10, tab 3
  edit "", 37, 4 92 118 10, tab 3
  edit "", 39, 4 114 92 10, tab 3
  tab "Other", 4
  check "Join channels as they are messaged", 60, 4 17 98 10, tab 4
  button "Ok", 5, 102 114 22 12, ok
}

;************************
;*Read INI file on start*
;************************

alias readsettings {
  set %joinchans $readini(scad.ini,general,joinchans)

  set %numchans $readini(scad.ini,channels,numchans)
  var %c = 1
  while (%c <= %numchans) {
    set %chan [ $+ [ %c ] ] $readini(scad.ini,channels,chan [ $+ [ %c ] ])
    inc %c
  }

  set %tl $replace($readini(scad.ini,theme,left),~c,,~b,,~u,,~o,)
  set %tm $replace($readini(scad.ini,theme,mid),~c,,~b,,~u,,~o,)
  set %tr $replace($readini(scad.ini,theme,right),~c,,~b,,~u,,~o,)

  set %name $readini(scad.ini,info,name)
  set %size $readini(scad.ini,info,size)
  set %map $readini(scad.ini,info,map)
  set %serv $readini(scad.ini,info,serv)
  set %info $readini(scad.ini,info,info)
  set %slook $readini(scad.ini,info,slook)
  set %sfind $readini(scad.ini,info,sfind)
  set %rlook $readini(scad.ini,info,rlook)
  set %rfind $readini(scad.ini,info,rfind)
  set %icanr $readini(scad.ini,info,icanr)
  set %pmme $readini(scad.ini,info,pmme)

  set %smessage $readini(scad.ini,messages,smessage)
  set %sumessage $readini(scad.ini,messages,sumessage)
  set %rmessage $readini(scad.ini,messages,rmessage)
  set %rumessage $readini(scad.ini,messages,rumessage)
  set %ramessage $readini(scad.ini,messages,ramessage)
}
alias startsetup {
  readsettings
  /dialog -m scad_setup scad_setup_t
}
on *:LOAD: {
  /echo 4 Scrim Advertisement Script v1.0 By ReK_
  startsetup
}
on *:START: {
  readsettings
}

;***************
;*Dialog events*
;***************

on *:dialog:scad_setup:init:*: {
  if (%joinchans == 1) /did -c scad_setup 60

  var %c = 1
  while (%c <= %numchans) {
    /did -m scad_setup 11 $+ %c
    if (%chan [ $+ [ %c ] ] != $null) {
        /did -c scad_setup 1 $+ %c
        /did -na scad_setup 11 $+ %c %chan [ $+ [ %c ] ]
    }
    inc %c
  }

  /did -a scad_setup 22 %tl
  /did -a scad_setup 24 %tm
  /did -a scad_setup 26 %tr

  /did -a scad_setup 31 %name
  /did -a scad_setup 33 %size
  /did -a scad_setup 35 %map
  /did -a scad_setup 37 %serv
  /did -a scad_setup 39 %info
}

on *:dialog:scad_setup:sclick:5: {
  /writeini -n scad.ini general joinchans $did(60).state

  writeini -n scad.ini messages smessage %tl %name %slook %tm %size %tm %serv %tm %map %tm %info %tr
  writeini -n scad.ini messages sumessage %tl %sfind %tr
  writeini -n scad.ini messages rmessage %tl %name %rlook %tm %info %tr
  writeini -n scad.ini messages rumessage %tl %rfind %tr
  writeini -n scad.ini messages ramessage %tl %icanr %tm %pmme %tr

  remini scad.ini channels
  var %c = 1
  var %i = 0
  while (%c <= 10) {
    if ($did(scad_setup,1 $+ %c).state == 1 && $did(scad_setup,11 $+ %c) != $null) {
      writeini -n scad.ini channels chan [ $+ [ %c ] ] $did(scad_setup,11 $+ %c)
      inc %i
    }
    elseif ($did(scad_setup,1 $+ %c).state == 0 || $did(scad_setup,11 $+ %c) == $null) {
      ;writeini -n scad.ini channels chan [ $+ [ %c ] ] $null
    }
    inc %c
  }
  /writeini -n scad.ini channels numchans %i

  remini scad.ini theme
  remini scad.ini info
  if ($did(scad_setup,22)) writeini -n scad.ini theme left $replace($did(scad_setup,22),,~c,,~b,,~u,,~o)
  if ($did(scad_setup,24)) writeini -n scad.ini theme mid $replace($did(scad_setup,24),,~c,,~b,,~u,,~o)
  if ($did(scad_setup,26)) writeini -n scad.ini theme right $replace($did(scad_setup,26),,~c,,~b,,~u,,~o)

  if ($did(scad_setup,31)) writeini -n scad.ini info name $did(scad_setup,31)
  if ($did(scad_setup,33)) writeini -n scad.ini info size $did(scad_setup,33)
  if ($did(scad_setup,35)) writeini -n scad.ini info map $did(scad_setup,35)
  if ($did(scad_setup,37)) writeini -n scad.ini info serv $did(scad_setup,37)
  if ($did(scad_setup,39)) writeini -n scad.ini info info $did(scad_setup,39)
  writeini -n scad.ini info slook is looking for a scrim
  writeini -n scad.ini info sfind Scrim found
  writeini -n scad.ini info rlook is looking for a ringer
  writeini -n scad.ini info rfind Ringer found
  writeini -n scad.ini info icanr I can ring
  writeini -n scad.ini info pmme PM me

  readsettings
}

on *:dialog:scad_setup:sclick:11: {
  if ($did(scad_setup,11).state == 1) /did -n scad_setup 111
  else /did -mr scad_setup 111
}
on *:dialog:scad_setup:sclick:12: {
  if ($did(scad_setup,12).state == 1 && $did(111) != $null) /did -n scad_setup 112
  else {
    /did -u scad_setup 12
    /did -mr scad_setup 112
  }
}
on *:dialog:scad_setup:sclick:13: {
  if ($did(scad_setup,13).state == 1 && $did(112) != $null) /did -n scad_setup 113
  else {
    /did -u scad_setup 13
    /did -mr scad_setup 113
  }
}
on *:dialog:scad_setup:sclick:14: {
  if ($did(scad_setup,14).state == 1 && $did(113) != $null) /did -n scad_setup 114
  else {
    /did -u scad_setup 14
    /did -mr scad_setup 114
  }
}
on *:dialog:scad_setup:sclick:15: {
  if ($did(scad_setup,15).state == 1 && $did(114) != $null) /did -n scad_setup 115
  else {
    /did -u scad_setup 15
    /did -mr scad_setup 115
  }
}
on *:dialog:scad_setup:sclick:16: {
  if ($did(scad_setup,16).state == 1 && $did(115) != $null) /did -n scad_setup 116
  else {
    /did -u scad_setup 16
    /did -mr scad_setup 116
  }
}
on *:dialog:scad_setup:sclick:17: {
  if ($did(scad_setup,17).state == 1 && $did(116) != $null) /did -n scad_setup 117
  else {
    /did -u scad_setup 17
    /did -mr scad_setup 117
  }
}
on *:dialog:scad_setup:sclick:18: {
  if ($did(scad_setup,18).state == 1 && $did(117) != $null) /did -n scad_setup 118
  else {
    /did -u scad_setup 18
    /did -mr scad_setup 118
  }
}
on *:dialog:scad_setup:sclick:19: {
  if ($did(scad_setup,19).state == 1 && $did(118) != $null) /did -n scad_setup 119
  else {
    /did -u scad_setup 19
    /did -mr scad_setup 119
  }
}
on *:dialog:scad_setup:sclick:110: {
  if ($did(scad_setup,110).state == 1 && $did(119) != $null) /did -n scad_setup 1110
  else {
    /did -u scad_setup 110
    /did -mr scad_setup 1110
  }
}


"So long and thanks for all the fish"