mIRC Home    About    Download    Register    News    Help

Print Thread
#157082 21/08/06 11:57 PM
Joined: Aug 2004
Posts: 7,252
R
RusselB Offline OP
Hoopy frood
OP Offline
Hoopy frood
R
Joined: Aug 2004
Posts: 7,252
In the following dialog, if I click an item in one of the lists, the edit box at the top of that list becomes editable. So far so good. The problem is, that I want to have the data that is entered in the edit box replace the item that is highlighted in the list. While I know how to do this (using /did -o <name> <id> <line> <text>), I'm running into difficulties figuring out where in the code it should go. For that reason, I've included the full dialog
Code:
 menu * {
  Observer : dialog $iif(!$dialog(Observer),-md,-ev) Observer Observer
}
dialog Observer {
  title Observer
  size -1 -1 755 385
  option pixels
  text "Route", 3, 124 4 60 16, center
  combo 4, 124 20 60 100, edit drop sort
  text "Account", 1, 4 4 120 16, center
  combo 2, 4 20 120 100, edit drop sort
  text "Name", 5, 190 6 50 15
  edit "", 6, 240 5 300 20
  text "Address", 7, 240 25 335 16, center
  edit "", 8, 240 42 40 20, center
  edit "", 50, 280 42 225 20
  edit "", 52, 505 42 70 20
  text "Apt", 9, 575 25 45 15, center
  edit "", 10, 575 42 45 20, right
  edit "", 48, 620 42 60 20
  text "Phone", 11, 545 6 30 15
  edit "", 12, 575 5 84 20
  text "Special Directions", 13, 190 64 50 40, center
  edit "", 14, 240 64 505 40, multi
  box "Deliveries", 15, 4 120 70 90
  check "Daily", 16, 6 134 50 16
  check "MP/LL", 17, 6 150 50 16
  check "Sat. Only", 18, 6 166 64 16
  check "Vacation", 19, 6 182 64 16
  box "Billing", 20, 72 120 60 90
  radio "PIO", 21, 74 134 40 16, group
  radio "CMP", 22, 74 150 40 16
  radio "Mthly", 23, 74 166 44 16
  radio "Bi-Wkly", 24, 74 182 54 16
  text "Start", 25, 190 124 100 14, center
  list 26, 190 140 100 240, size
  text "Stop", 27, 290 124 100 14, center
  list 28, 290 140 100 240, size
  text "Deliveries", 29, 390 124 54 14, center
  list 30, 390 140 54 240, size
  text "Billing", 31, 444 124 50 14, center
  list 32, 444 140 50 240, size
  text "Payment Amount &amp;&amp; Date", 33, 598 124 150 14, center
  list 34, 598 140 50 240, size
  list 35, 648 140 100 240, size
  edit "", 37, 598 104 50 20
  text "Balance", 38, 648 106 50 16, center
  edit "", 39, 698 104 50 20, read
  button "OK", 40, 134 124 50 18, ok
  button "Save", 41, 134 144 50 18
  button "Apply", 42, 134 164 50 18, default
  text "Paid To", 43, 4 44 100 16, center
  edit "", 44, 4 60 100 20, right
  text "Expiry", 45, 4 80 100 16, center
  edit "", 46, 4 94 100 20, read right
  button "Cancel", 36, 134 184 50 18, cancel
  text "Postal", 47, 620 25 60 15, center
  edit "", 53, 190 104 100 20, read
  edit "", 54, 290 104 100 20, read
  edit "", 55, 390 104 54 20, read
  edit "", 56, 444 104 50 20, read
  edit "", 57, 494 104 54 20, read
  text "Days", 58, 494 124 54 14, center
  list 59, 494 140 54 240, size
  edit "", 60, 548 104 50 20, read
  list 61, 548 140 50 240, size
  text "Charge", 62, 548 124 50 15, center
}
on *:dialog:Observer:close:*:{
  .hsave -o Observer Observer.hsh
  .timerexpiry off
}
on *:dialog:Observer:init:*:{
  unset %saved
  if !$hget(Observer) { .hmake Observer 100 }
  if $exists(Observer.hsh) { .hload Observer Observer.hsh }
  did -ra $dname 44 $adate
  .timerexpiry -m 0 500 expiry $dname
  didtok $dname 4 32 $hget(Observer,Rtes)
  did -c $dname 16,21
}
on *:dialog:Observer:edit:44:{
  unset %saved
  .timerexpiry -m 0 500 expiry $dname
}
alias expiry {
  var %date = $ctime($+($gettok($did($1,44),2,47),/,$gettok($did($1,44),1,47),/,$gettok($did($1,44),3,47)))
  $iif(%date,did -ra $1 46 $asctime($calc(1814400 + %date),mm/dd/yyyy))
}
alias error {
  dialog -t $1-
  .timer -d 1 10 dialog -t $1 Observer
}

on *:dialog:Observer:sclick:40-42:{
  if !%saved {
    $iif($did(4) isnum,set %rte $did(4),error $dname Rte # error)
    .hadd -m Observer Rtes $addtok($hget(Observer,Rtes),%rte,32)
    $iif($did(2) isnum,set %acct $did(2),error $dname Account # error)
    set %name $replace($did(6),$chr(44),$chr(32))
    set %lname $gettok(%name,$iif(%name == $did(6),-1,1),32)
    if !%lname { error $dname Name Missing  }
    set %fname $iif($remove(%name,%lname),$v1,-)
    set %phone $iif(!$did(12),(000)000-0000,$v1)
    set %street.num $did(8)
    set %street.name $did(50)
    set %street.dir $iif(!$did(52),-,$v1)
    if %street.num !isnum || !%street.name { error $dname Address Incomplete }
    set %apt $iif(!$did(10),-,$v1)
    set %postal $iif(!$did(48),-,$v1)
    set %special.directions $iif(!$did(14),-,$v1)
    set %paid.to $did(44)
    set %start.date $iif($did(26).lines &gt; 1,$did(26,$calc($did(26).lines - 1)),$adate)
    set %end.date $iif(!$did(26).lines,-,$iif($did(28).lines &gt; 1,$did(28,$calc($did(28).lines - 1)),$adate))
    did -ra $dname 53 %start.date
    did -a $dname 26 $did(53)
    did -ra $dname 54 %end.date
    did -i $dname 28 1 $did(54)
    did -ra $dname 55 %deliveries
    did -a $dname 30 $did(55)
    did -ra $dname 56 %billing
    did -a $dname 32 $did(56)
    did -ra $dname 57 $days(%start.date,%end.date)
    did -a $dname 59 $did(57)
    did -ra $dname 60 $charge($days)
    did -a $dname 61 $did(60)
    did -a $dname 34 $iif($did(37),$v1,-)
    did -a $dname 35 $iif($did(37),$adate,-)
    did -ra $dname 39 $dollar($calc($did(39) + $did(61) - $did(37)))
    .hadd -m Observer $+(%rte,.,Accounts) $addtok($hget(Observer,$+(%rte,.,Accounts)),%acct,32)
    .hadd -m Observer $+(%acct,.,Name) %fname %lname
    .hadd -m Observer $+(%acct,.,Phone) %phone
    .hadd -m Observer $+(%acct,.,Address) %street.num %street.name %street.dir
    .hadd -m Observer $+(%acct,.,Apt) %apt
    .hadd -m Observer $+(%acct,.,Postal) %postal
    .hadd -m Observer $+(%acct,.,SD) %special.directions
    .hadd -m Observer $+(%acct,.,Paid) %paid.to
    set %columns 26,28,30,32,59,61,34,35
    var %a = 1, %b = $numtok(%columns,44)
    while %a &lt;= %b {
      .hadd -m Observer $+(%acct,.,$gettok(%columns,%a,44)) $didtok($dname,$gettok(%columns,%a,44),32)
      inc %a
    }
    did -r $dname 37
  }
  set %saved $true
}

alias days {
  var %day.1 = $ctime($+($gettok($1,2,47),/,$gettok($1,1,47),/,$gettok($1,3,47)))
  var %day.2 = $ctime($+($gettok($2,2,47),/,$gettok($2,1,47),/,$gettok($2,3,47)))
  return $iif($int($calc((%day.2 - %day.1) / 28800 * 3)) &gt; 0,$v1,0)
}
alias charge {
  return $dollar($round($calc($1 / 14 * $iif($did(16).state,6.74,$iif($did(18).state,2.96,0))),2))
}
alias dollar {
  if $1 == $int($1) {
    return $+($,$1,.00)
  }
  elseif $calc($1 * 10) == $int($calc($1 * 10)) {
    return $+($,$1,0)
  }
  else return $+($,$1)
}

on *:dialog:Observer:sclick:21-24:{
  unset %saved
  set %billing $did($did)
  set %old.billing $iif($did(32).lines &gt; 1,$did(32,$calc($did(32).lines - 1)))
}
on *:dialog:Observer:sclick:16-19:{
  unset %saved
  if ($did == 16 || $did == 18) &amp;&amp; $did($did).state {
    did -u $dname 16-19
    did -c $dname $did
  }
  set %deliveries $+($did(16).state,$did(17).state,$did(18).state,$did(19).state)
  set %old.deliveries
}
on *:dialog:Observer:sclick:4:{
  unset %saved
  set %rte $did(4)
  did -r $dname 2
  didtok $dname 2 32 $hget(Observer,$+(%rte,.,Accounts))
}
on *:dialog:Observer:sclick:2:{
  unset %saved
  set %acct $did(2)
  did -ra $dname 6 $hget(Observer,$+(%acct,.,Name))
  did -ra $dname 12 $iif($hget(Observer,$+(%acct,.,Phone)) != -,$v1)
  did -ra $dname 8 $gettok($hget(Observer,$+(%acct,.,Address)),1,32)
  did -ra $dname 52 $iif($gettok($hget(Observer,$+(%acct,.,Address)),-1,32) != -,$v1)
  did -ra $dname 50 $gettok($hget(Observer,$+(%acct,.,Address)),2--1,32)
  did -ra $dname 10 $iif($hget(Observer,$+(%acct,.,Apt)) != -,$v1)
  did -ra $dname 48 $iif($hget(Observer,$+(%acct,.,Postal)) != -, $v1)
  did -ra $dname 14 $iif($hget(Observer,$+(%acct,.,SD)) != -,$v1)
  did -ra $dname 44 $hget(Observer,$+(%acct,.,Paid))
  set %columns 26,28,30,32,59,61,34,35
  var %a = 1, %b = $numtok(%columns,44)
  while %a &lt;= %b {
    did -r $dname $gettok(%columns,%a,44)
    didtok $dname $gettok(%columns,%a,44) 32 $hget(Observer,$+(%acct,.,$gettok(%columns,%a,44)))
    if %a == 6 {
      inc %charges $hget(Observer,$+(%acct,.,$gettok(%columns,%a,44)))
    }
    elseif %a == 7 {
      inc %payments $hget(Observer,$+(%acct,.,$gettok(%columns,%a,44)))
    }
    inc %a
  }
  did -ra $dname 39 $dollar($calc(%charges - %payments))
}
on *:dialog:Observer:edit:6,12,8,50,52,10,48,14,37,53,54,55,56,57,60:{
  unset %saved
}
on *:dialog:Observer:sclick:26:{
  set %edit $did $did($did).sel
  did -n $dname 53
  did -m $dname 54-57,60
}
on *:dialog:Observer:sclick:28:{
  set %edit $did $did($did).sel
  did -n $dname 54
  did -m $dname 53,55-57,60
}
on *:dialog:Observer:sclick:30:{
  set %edit $did $did($did).sel
  did -n $dname 55
  did -m $dname 53,54,56,57,60
}
on *:dialog:Observer:sclick:32:{
  set %edit $did $did($did).sel
  did -n $dname 56
  did -m $dname 53-55,57,60
}
on *:dialog:Observer:sclick:59:{
  set %edit $did $did($did).sel
  did -n $dname 57
  did -m $dname 53-56,60
}
on *:dialog:Observer:sclick:61:{
  set %edit $did $did($did).sel
  did -n $dname 60
  did -m $dname 53-57
}
on *:dialog:Observer:sclick:34:{
  set %edit $did $did($did).sel
}
 

#157083 22/08/06 12:38 AM
Joined: Jan 2004
Posts: 1,358
L
Hoopy frood
Offline
Hoopy frood
L
Joined: Jan 2004
Posts: 1,358
Code:
on *:dialog:Observer:edit:EDITNUMBER:did -o &lt;name&gt; &lt;id&gt; &lt;line&gt; $did(EDITNUMBER)


EDITNUMBER is the id of the edit box you're typing into.

#157084 22/08/06 01:37 AM
Joined: Aug 2004
Posts: 7,252
R
RusselB Offline OP
Hoopy frood
OP Offline
Hoopy frood
R
Joined: Aug 2004
Posts: 7,252
thanks..not sure why I didn't realize that earlier, it was so obvious once it was pointed out.


Link Copied to Clipboard