    ##
    ##  s_Phi::SCREEN.rb  
    ##
    ##  sample script for 
    ##      Phi::SCREEN.width,Phi::SCREEN.height
    ##      Form.width,height,top,left,client_height,client_width
    ##
    ##  by tk、2000-06-19(月)
    ##
require 'phi'
include  Phi

    ##
    ##  フォントを変更する。
    ##  デフォールトのフォントはプロポーショナル（※１）なので、
    ##  メモで表示したときに「=」の位置が合わなくなる。
    ##  ＷＩＮのバージョンによっては３の倍数でなければならない。
    ##
    ##  form.font にセットすればすべてのフォントが変わる。
    ##
    ##  ※１：プロポーショナル、文字によって幅が異なるフォント。
    ##
font = Font.new
##font.name = 'ＭＳ ゴシック'
font.name = 'ＭＳ 明朝'
font.size = 12

form = Form.new
form.caption = 'Phi::SCREEN と Form の top,left,width,height'
form.icon = Icon.new.load 'icon1.ico'
form.font = font
form.height = Phi::SCREEN.height / 2

button = Button.new(form,'button')
button.caption = 'hello'
button.height=30

memo1 = Memo.new(form, 'memo1')

def form.on_resize
  print "resize\n"
end

    ##
    ##  ボタンクリックのハンドラ
    ##
    ##
def button.on_click
 
    ##
    ##  form.top を変更すると
    ##  Phi::SCREEN の上部からのドット数が変わる。
    ##  つまり、フォームがだんだん下がっていく。
    ##
    ##  button の parent は form のこと。
    ##  Ruby のスコープ管理のため、parent で form を参照する。
    ##
  parent.top += 10

    ##
    ##  form の横幅を変えるには width に入れるだけでよい。
    ##
    ##  Screen は定数なので大文字で始まる。ご注意あれ。
    ##
    ##  なお、Phi::SCREEN.width を見れば「解像度」が分かる。
    ##
  w = Phi::SCREEN.width - parent.left
  if parent.width == w
     parent.width = w / 2
  else
     parent.width = w
  end

    ##
    ##  メモ窓に現在の情報を書き出す。
    ##
    ##  「%」は「format」の簡略記述法。
    ##
  parent.memo1.lines.clear
  parent.memo1.lines.add( "Phi::SCREEN.width  = %d" % Phi::SCREEN.width )
  parent.memo1.lines.add( "Phi::SCREEN.height = %d" % Phi::SCREEN.height )
  parent.memo1.lines.add( "form.top    = %d" % parent.top )
  parent.memo1.lines.add( "form.left   = %d" % parent.left )
  parent.memo1.lines.add( "form.height = %d" % parent.height )
  parent.memo1.lines.add( "form.width  = %d" % parent.width )
  parent.memo1.lines.add( "form.client_height = %d" % parent.client_height)
  parent.memo1.lines.add( "form.client_width  = %d" % parent.client_width)
  parent.memo1.lines.add( "button.top    = %d" % parent.button.top)
  parent.memo1.lines.add( "button.height = %d" % parent.button.height)

  parent.memo1.lines.add( "memo.top      = %d" % parent.memo1.top)
  parent.memo1.lines.add( "memo.height   = %d" % parent.memo1.height)
  parent.memo1.lines.add( "memo.top + height == form.client_height のはず")
    ##
    ##  上の記述では「parent.memo1.lines」がうるさいので、
    ##  次のようにしてもよい。
    ##  「parent.memo1.lines」というオブジェクトを取り出して使う。
    ##
    ##o = parent.memo1.lines    ##  OK
    ##o.clear
    ##o.add( "Phi::SCREEN.width  = %d" % Phi::SCREEN.width )
    ##
end

    ##
    ##  バグ対策。AL_TOP の順番が逆になってしまう不具合がある。
    ##
button.align = AL_TOP
memo1.align = AL_CLIENT

print "start s_screen.rb\n"

form.show
mainloop

print "terminated s_screen.rb\n"
