このプログラムはHSP3の2009年のコンテストに参加した時の物です。
実際はシーケンサの通信用のプログラムとドッキングして内部リーレーの
ON/OFF操作と内部リレーのON/OFF状態表示をする予定でした。
今回は時間が無くて今回は表示部分だけの参加でした。特殊なソフトなので反響は有りませんでした。
もう、忘れて来たのでここにアップしました。(^^);
ここからです。

;-------------------------------------------------------------------------------
;  シーケンサ動作モニター 表示部分作成中
;  表示ランプ ON/OFF時表示色変更可能
;  操作ボタン  操作時表示形状変更記憶
;  2009/09/12  color_pb.hsp

#include "llmod3.hsp"
#include "misc.hsp"
#include "pbstyle.hsp"

;-------------------------------------------------------------------------------
;  module

;四角形描画
#module "line_only_box"
#deffunc boxl int x,int y,int x2,int y2
line x,y,x,y2
line x,y2,x2,y2
line x2,y2,x2,y
line x2,y,x,y
return

;カラーボタン   位置x  位置y  横幅  縦幅   赤色  緑色  青色  文字
#deffunc colorpb int px,int py,int sx,int sy,int r,int g,int b, str moji
  color r, g, b            //ボタンの色
  boxf px,py,px+sx,py+sy        //四角形塗りつぶし
  color: boxl px,py,px+sx,py+sy    //外枠
  color: pos px,py+6: mes moji    //黒色で文字
return
#global
;-------------------------------------------------------------------------------
;  メインプログラム
;
  title "シーケンサ動作モニター  2009/09/12 color_pb090913.hsp"
  dim ID,24

;-------------------------------------------------------------------------------
  // 表示ランプ L
  px=10: py=10: pos px,py            ;位置
  color 000,255,255: boxf px,py,px+80,py+26  ;色の設定
  color: boxl px,py,px+80,py+26: font "MS ゴシック",16,17 : objmode 2  ;文字の設定
  color: pos px,py+6: mes "  ラベル "      ;黒色で文字描画
  objmode 1
  
  // 表示ランプ X
  px=60: py=50: sx=64: sy=26: r=200: g=255: b=255: moji=""
  repeat 8
    colorpb px+sx*cnt, py, sx, sy, r, g, b, "  X"+strf("%02d", cnt)
  loop

  // 表示ランプ Y
  px=60: py+=30: sx=64: sy=26: r=200: g=255: b=255: moji=""
  repeat 8
    colorpb px+sx*cnt, py, sx, sy, r, g, b, "  Y"+strf("%02d", cnt)
  loop

  // 表示ランプ M
  px=60: py+=30: sx=64: sy=26: r=200: g=255: b=255: moji=""
  repeat 8
    colorpb px+sx*cnt, py, sx, sy, r, g, b, "  M"+strf("%02d", cnt)
  loop

  // ボタン配置 X
  pos_x=60: pos_y=200
  for n,0,8,1
    pos  pos_x + n*64, pos_y  : button "X"+strf("%02d", n),*bjump
  next
  // ボタンスタイル変更 X
  nmode = 9: repeat 8 : btnstyle cnt,nmode : loop

  // ボタン配置 Y
  pos_x=60: pos_y=200+24
  for n,0,8,1
    pos  pos_x + n*64, pos_y  : button "Y"+strf("%02d", n),*bjump
  next
  // ボタンスタイル変更 Y
  nmode = 9: repeat 8 : btnstyle cnt+8,nmode : loop

  // ボタン配置 M
  pos_x=60: pos_y=200+48
  for n,0,8,1
    pos  pos_x + n*64, pos_y  : button "M"+strf("%02d", n),*bjump
  next
  // ボタンスタイル変更 Y
  nmode = 9: repeat 8 : btnstyle cnt+16,nmode : loop

  // 操作ボタン
  color: pos 60,400:   button "  ON  ",*bjump_on
  color: pos 60,424:   button "  OFF ",*bjump_off

  stop

*bjump
  // ボタンのID表示
  Obj_ID = stat
  ID(Obj_ID) ^ 1
  pb1_x=10: pb1_y=350: color 240, 240, 240          ; 白色で四角形塗りつぶし
  boxf pb1_x,pb1_y,pb1_x+210,pb1_y+20
  color: pos pb1_x,pb1_y+3: mes " ボタン ObjectID = "+ Obj_ID+" "+ID(Obj_ID)  ; 黒色で文字描画

  // 表示ランプ X の色変更
  if Obj_ID < 8{
    px=60: py=50: sx=64: sy=26
    if ID(Obj_ID) == 1 {r=000: g=255: b=000} else {r=200: g=255: b=255} 
    colorpb px+sx*Obj_ID, py, sx, sy, r, g, b, "  X"+strf("%02d", Obj_ID)
    goto *e
  }
  // 表示ランプ Y の色変更
  if Obj_ID < 16{
    px=60: py=80: sx=64: sy=26
    if ID(Obj_ID) == 1 {r=000: g=255: b=000} else {r=200: g=255: b=255} 
    colorpb px+sx*(Obj_ID-8), py, sx, sy, r, g, b, "  Y"+strf("%02d", Obj_ID-8)
    goto *e
  }
  // 表示ランプ M の色変更
  if Obj_ID < 24{
    px=60: py=110: sx=64: sy=26
    if ID(Obj_ID) == 1 {r=000: g=255: b=000} else {r=200: g=255: b=255} 
    colorpb px+sx*(Obj_ID-16), py, sx, sy, r, g, b, "  M"+strf("%02d", Obj_ID-16)
    goto *e
  }
*e
  
stop

*bjump_on  // 操作ボタン動作 on
  px=10: py=10: pos px,py            ;位置
  color 255,255,000: boxf px,py,px+80,py+26  ;色の設定
  color: boxl px,py,px+80,py+26: font "MS ゴシック",16,17 : objmode 2  ;文字の設定
  color: pos px,py+6: mes "  ラベル "      ;黒色で文字描画
  objmode 1
stop

*bjump_off  // 操作ボタン動作 off
  px=10: py=10: pos px,py            ;位置
  color 000,255,255: boxf px,py,px+80,py+26  ;色の設定
  color: boxl px,py,px+80,py+26: font "MS ゴシック",16,17 : objmode 2  ;文字の設定
  color: pos px,py+6: mes "  ラベル "      ;黒色で文字描画
  objmode 1
stop