hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
チェックボックスいろいろ - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

小ワザ

チェックボックスいろいろ

全てをonにするチェックボックス

サンプル

本家BBSで出てきたネタです。
全てのチェックボックスをONにするチェックボックスです。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
|
|
|
|
|
|
|
|
|
!
 
 
-
|
|
|
|
!
 
 
-
|
-
|
|
!
-
|
-
|
|
!
!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ;--------------------------------------------------------------------
 ;
 ;	全てをonにするチェックボックス(v2.61)
 ;
 ;--------------------------------------------------------------------
     objsize 100,20 : objmode 1
 
     sdim menu , 64 , 64
     menu = "すべて選択" , "なす" , "ピーマン" , "にんじん" , "きのこ"
     sdim like , 256
     dim chkMap, 5
     dim chkMapMem, 5
 
     mes "野菜で好きなものにチェックしてください."
 
     cntObj = 0
     chkbox menu.cntObj , chkMap.cntObj : cntObj++
 
     chkbox menu.cntObj , chkMap.cntObj : cntObj++
     chkbox menu.cntObj , chkMap.cntObj : cntObj++
     chkbox menu.cntObj , chkMap.cntObj : cntObj++
     chkbox menu.cntObj , chkMap.cntObj : cntObj++
 
     button "決定" , *ok
 
     fall = 0
 
 *check
     await 0
     ;全てのチェックボックスをonにする
     if (fall = 0) & (chkMap.0 = 1){
         ;onにする前の状態を記憶
         repeat cntObj - 1, 1
             chkMapMem.cnt = chkMap.cnt
         loop
         ;全てon
         repeat cntObj - 1 , 1
             objprm cnt , 1
         loop
         fall = 1
     }
 
     ;全てのチェックボックスを元に戻す
     if (fall = 1) & (chkMap.0 = 0){
         repeat cntObj - 1, 1
             objprm cnt, chkMapMem.cnt
         loop
         fall = 0
     }
 
     ;「すべて選択」チェックボックスの間接的操作
     if chkMap.1*chkMap.2*chkMap.3*chkMap.4 ! 0 {
         ;選択項目が全てonの場合
         if fall=0 {
             objprm 0 , 1
             fall = 1
         }
     } else {
         ;選択項目のどれかがoffの場合
         if fall = 1{
             objprm 0 , 0
             fall = 0
         }
     }
 
     goto *check
 
 stop
 
 
 
 *ok
     like = ""
     repeat cntObj - 1 , 1
         if chkMap.cnt = 1 : like += menu.cnt + "\n"
     loop
 
     if like = "" : like = "なし"
     dialog like , 0 , "好きな野菜"
     goto *check
 ;--------------------------------------------------------------------
  • 全てを同時にON/OFFするだけならボタンで十分のような気がしますが、ここはあえてチェックボックスでやっていきます。
  • 「すべてを選択」チェックボックスには、対象となるチェックボックスの状態も返されるものとします。
  • 「すべてを選択」のチェックをはずしても、対象となるチェックボックスが強制的にOFFにされないようにしています。
    • 理由:間違えて「すべてを選択」を選択してしまった場合、元に戻すのがめんどくさいから。

 各チェックボックスの状態を取得し、選択状態を フラグfallで管理。objprm でチェックボックスのon/offを切り替えています。

コメント

コメント


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2007-04-08 (日) 02:39:03 (2436d)