Hmm.. Teşekkür ederim yol gösterimin için. Bu sayede Hash Tablolarında kullanılan $hget(name/N) identifierin öncelikli olarak N kıstasına baktığını anladım. Yani hem 7 adında bir tablo, hem de 7'den fazla tablo varsa $hget(7) yaptığında 7. tabloya gidiyor. Bu mantıkla giderek bazı düzenlemeler yaptım;
Kod: Kodu kopyalamak için üzerine çift tıklayın!
menu status,channel,query {
-
Hash Tabloları: dialog $iif(!$dialog(hash_table),-m hash_table,-v) hash_table
}
dialog hash_table {
title "Hash Tablo Görüntüleyici/Düzenleyici"
size -1 -1 245 165
option dbu
box "Tablolar:", 1, 5 5 75 110
list 4, 10 15 65 85, size extsel hsbar
button "Seçilenleri Sil", 16, 25 102 35 10
box "Parçalar:", 2, 85 5 75 110
list 5, 90 15 65 85, size extsel hsbar
button "Seçilenleri Sil", 17, 105 102 35 10
box "Veriler:", 3, 165 5 75 110
list 6, 170 15 65 85, size extsel hsbar
button "Seçilenleri Sil", 18, 185 102 35 10
box "", 7, 5 115 235 45
text - Düzenlemeyi istediğiniz değere listeden çift tıklayın. $crlf $+ - Bağımsız eklemek için 'Temizle' butonuna basın., 8, 10 142 180 14, disable
text "Tablo:", 9, 11 122 25 8
edit "", 12, 10 130 60 10, autohs
text "Parça:", 10, 71 122 25 8
edit "", 13, 70 130 60 10, autohs
text "Veri:", 11, 131 122 25 8
edit "", 14, 130 130 60 10, autohs
button "Ekle/Düzenle", 15, 195 125 40 12
button "Temizle", 20, 195 141 40 12
}
alias -l hash_tablo { did -r hash_table 4,5,6 | var %x = 1 | while $hget(%x) { did -az hash_table 4 $hget(%x) | inc %x } | hash_parça $1 $2 }
alias -l hash_parça {
did -r hash_table 5,6
if $1 { var %y = 1 | while $hget(%y) { if $hget(%y) == $1 { set %hash1 %y | break } | else inc %y } }
var %x = 1 | while $hget(%hash1,%x).item {
did -az hash_table 5 $hget(%hash1,%x).item
did -az hash_table 6 $hget(%hash1,%x).data
inc %x
}
$iif($2,did -c hash_table 4 $didwm(hash_table,4,$2)) | unset %hash1
}
on *:dialog:hash_table:init:*:hash_tablo
on *:dialog:hash_table:sclick:4:hash_parça $did(4,$did(4).sel)
on *:dialog:hash_table:sclick:5:{
did -u $dname 6
if $did(6,0).lines != 0 { var %x = 1 | while $did(5,%x).sel { did -ck $dname 6 $did(5,%x).sel | inc %x } }
}
on *:dialog:hash_table:sclick:6:{ did -c $dname 5 $did(6).sel }
on *:dialog:hash_table:dclick:4:{
did -re $dname 12,13,14
did -u $dname 5,6
did -a $dname 12 $did(4,$did(4).sel)
did -b $dname 13,14
}
on *:dialog:hash_table:dclick:5:{
did -re $dname 12,13,14
did -u $dname 6
did -a $dname 12 $did(4,$did(4).sel)
did -a $dname 13 $did(5,$did(5).sel)
did -b $dname 12,14
}
on *:dialog:hash_table:dclick:6:{
did -re $dname 12,13,14
did -ab $dname 12 $did(4,$did(4).sel)
did -ab $dname 13 $did(5,$did(5).sel)
did -a $dname 14 $did(6,$did(6).sel)
}
on *:dialog:hash_table:sclick:16-18:{
if $did == 16 { var %x = 1 | while $did(4,$did(4,%x).sel) { .hfree $did(4,$did(4,%x).sel) | inc %x } | hash_tablo }
if $did == 17 { var %x = 1 | while $did(5,%x).sel { .hdel $did(4,$did(4).sel).text $did(5,$did(5,%x).sel) | inc %x }
hash_parça $did(4,$did(4).sel).text $did(4,$did(4).sel).text }
if $did == 18 { var %x = 1 | while $did(6,%x).sel { .hadd $did(4,$did(4).sel).text $did(5,$did(6,%x).sel) | inc %x }
hash_parça $did(4,$did(4).sel).text $did(4,$did(4).sel).text }
}
on *:dialog:hash_table:sclick:15:{
if $did(12).enabled && $did(13).enabled && $did(14).enabled {
var %q = 1 | while $hget(%q) {
if $hget(%q) == $did(12) { $iif($did(13),.hadd $did(12) $did(13) $iif($did(14),$did(14))) | set -u %hash2 1 | break } | else inc %q }
if !%h { .hmake $did(12) $iif($did(13), $did(13) $iif($did(14), $did(14))) }
hash_tablo $did(12) $did(12) | did -re $dname 12,13,14
}
if (!$did(13).enabled && !$did(14).enabled) {
if $did(4,$did(4).sel) { var %e = 1 | while $hget(%e) { if $hget(%e) == $did(4,$did(4).sel) { set -u2 %hash3 %e | break } | else inc %e } }
var %x = 1 | while $hget(%hash3,%x).item {
.hadd -m $did(12) $hget(%hash3,%x).item $hget(%hash3,%x).data
inc %x
}
.hfree $did(4,$did(4).sel) | hash_tablo $did(12) $did(12) | did -re $dname 12,13,14
}
if (!$did(12).enabled && !$did(14).enabled) { .hadd -m $did(12) $did(13) | hash_parça $did(12) $did(12) | did -re $dname 12,13,14 }
if (!$did(12).enabled && !$did(13).enabled) { .hadd -m $did(12) $did(13) $did(14) | hash_parça $did(12) $did(12) | did -re $dname 12,13,14 }
}
on *:dialog:hash_table:sclick:20:{ did -u $dname 4,5,6 | did -re $dname 12,13,14 | hash_tablo }
.. gibi bir çok farklı seçeneği denedim ve hepsinde de istenilen sonucu veriyor.
1. mesajımı değiştirmeye gücüm elvermediğinden başlığı inceleyecek ve kodu kullanacak olan arkadaşlar bu mesajımdaki kodu alır ve kullanırlarsa daha verimli sonuçlar elde edeceklerdir.
Umarım ki işinize yarar. İyi paylaşımlar.