YKLook説明書 クラス解説 YKLookTimerWatch 機能別   ABC
ページ内リンク一覧   スーパークラス   クラスメソッド   インスタンスメソッド   その他の項目  

YKLookTimerWatch


カウンタ自動表示更新機能付きのタイマーオブジェクトです。
時・分・秒の任意のカウンタを表示・操作できます。
数字の表示属性は、プログラム製作者によりカスタマイズできます。
タイマーイベントの送信時間も任意に設定できます。

このクラスのオブジェクト自体は、GUI表示部品ではありません。
プログラム製作者により指定されたラベルオブジェクトに対してカウンタを表示します。

このクラスを使うときは、 swingtimer をロードしてください。

require 'yklook/swing'
require 'yklook/swingtimer'

注意: このクラスは追加機能です。当社ライセンスに付属します。




クラスメソッド:   new   yk_find_objects   yk_find_objects_frame   yk_look   yk_look_frame
インスタンスメソッド:   yk_add_total   yk_clear   yk_elapsed_time   yk_fire   yk_is_active   yk_reset   yk_set_button_clear   yk_set_button_reset   yk_set_button_start   yk_set_button_stop   yk_set_button_switch   yk_set_label_hour   yk_set_label_min   yk_set_label_sec   yk_set_listener   yk_set_number_icon   yk_set_number_string   yk_set_total   yk_set_trigger   yk_set_updown   yk_start   yk_stop   yk_switch   yk_total
その他の項目: なし


 Object (Ruby 組み込みのクラス。すべてのオブジェクトのスーパークラス)
   ┃
   ┗ YKLookSwingBase (YKLook のすべてのGUIオブジェクトの共通クラス)
      ┃
      ┗ YKLookTimerWatch (このクラス)


new()  
new( sec )

インスタンスを生成します。
引数の sec は整数で、タイマーの設定時間を秒数で指定します。
引数を省略したときは、別途 yk_set_total() で指定してください。

実際にタイマーを開始するには yk_start() を呼び出してください。




yk_find_objects()  
yk_find_objects( tagname )
yk_find_objects( tagname , tagno )

YKLookSwingBase.yk_find_objects の説明をご覧ください。




yk_find_objects_frame( frame )  
yk_find_objects_frame( frame , tagname )
yk_find_objects_frame( frame , tagname , tagno )

YKLookSwingBase.yk_find_objects_frame の説明をご覧ください。




yk_look( tagname )  
yk_look( tagname , tagno )

YKLookSwingBase.yk_look の説明をご覧ください。




yk_look_frame( frame , tagname )  
yk_look_frame( frame , tagname , tagno )

YKLookSwingBase.yk_look_frame の説明をご覧ください。



yk_add_total( sec )  

タイマーの設定時間を加算します。
この設定時間は、カウンタの自動表示更新で使う時間です。
引数の sec は整数で秒数を指定します。
以下の例はいずれも同じ意味になります。

例1
t = YKLookTimerWatch.new( 60 )
例2
t = YKLookTimerWatch.new()
t.yk_set_total( 10 )
t.yk_add_total( 20 )
t.yk_add_total( 30 )
例3
t = YKLookTimerWatch.new()
t.yk_set_total( 60 )




yk_clear()  

タイマーを初期化します。
具体的には以下の処理をおこないます。




yk_elapsed_time()  

タイマーを開始してからの経過秒数を返します。

このメソッドは、コールバック時にのみ正確な値を返します。
このタイマー自体のコールバック時だけでなく、他のGUIオブジェクトのコールバック時でも正確な値を返します。




yk_fire()  

タイマーイベントを送信したときの時間を秒数で返します。
yk_set_updown() の指定によって秒数の意味が変わります。
以下の例を参考にしてください。

t = YKLookTimerWatch.new()
t.yk_set_updown( 'up' )
この例の場合 yk_fire() が返す値は、タイマー開始からの経過時間を返します。

t = YKLookTimerWatch.new()
t.yk_set_updown( 'down' )
この例の場合 yk_fire() が返す値は、タイマー終了までの残り時間を返します。

このメソッドは、このタイマー自体のタイマーイベント送信に伴うコールバック時にのみ正確な値を返します。




yk_is_active()  

タイマーが活動中のときは true を返し、そうでなければ false を返します。
一時停止中のときは true を返します。

このメソッドは、コールバック時にのみ正確な値を返します。
このタイマー自体のコールバック時だけでなく、他のGUIオブジェクトのコールバック時でも正確な値を返します。




yk_reset()  

タイマーをリセットします。
具体的には以下の処理をおこないます。




yk_set_button_clear( prm_button )  

yk_clear() を自動的に呼び出すボタンオブジェクトを指定します。
引数の prm_button は、 YKLookButton クラスのオブジェクトです。
この指定により、ボタンを押すと、コールバック用メソッドを介さずに直接 yk_clear() を実行します。
引数に nil を指定すると、この機能を解除します。

このボタンに対してコールバック用メソッドが指定されているときは、先に yk_clear() を実行し、その後にコールバック用メソッドを呼び出します。

タイマー処理はその特性上、時間的な制約がありますので、コールバックを介さずに直接操作できるようにしています。




yk_set_button_reset( prm_button )  

yk_reset() を自動的に呼び出すボタンオブジェクトを指定します。
引数の prm_button は、 YKLookButton クラスのオブジェクトです。
この指定により、ボタンを押すと、コールバック用メソッドを介さずに直接 yk_reset() を実行します。
引数に nil を指定すると、この機能を解除します。

このボタンに対してコールバック用メソッドが指定されているときは、先に yk_reset() を実行し、その後にコールバック用メソッドを呼び出します。

タイマー処理はその特性上、時間的な制約がありますので、コールバックを介さずに直接操作できるようにしています。




yk_set_button_start( prm_button )  

yk_start() を自動的に呼び出すボタンオブジェクトを指定します。
引数の prm_button は、 YKLookButton クラスのオブジェクトです。
この指定により、ボタンを押すと、コールバック用メソッドを介さずに直接 yk_start() を実行します。
引数に nil を指定すると、この機能を解除します。

このボタンに対してコールバック用メソッドが指定されているときは、先に yk_start() を実行し、その後にコールバック用メソッドを呼び出します。

タイマー処理はその特性上、時間的な制約がありますので、コールバックを介さずに直接操作できるようにしています。




yk_set_button_stop( prm_button )  

yk_stop() を自動的に呼び出すボタンオブジェクトを指定します。
引数の prm_button は、 YKLookButton クラスのオブジェクトです。
この指定により、ボタンを押すと、コールバック用メソッドを介さずに直接 yk_stop() を実行します。
引数に nil を指定すると、この機能を解除します。

このボタンに対してコールバック用メソッドが指定されているときは、先に yk_stop() を実行し、その後にコールバック用メソッドを呼び出します。

タイマー処理はその特性上、時間的な制約がありますので、コールバックを介さずに直接操作できるようにしています。




yk_set_button_switch( prm_button )  

yk_switch() を自動的に呼び出すボタンオブジェクトを指定します。
引数の prm_button は、 YKLookButton クラスのオブジェクトです。
この指定により、ボタンを押すと、コールバック用メソッドを介さずに直接 yk_switch() を実行します。
引数に nil を指定すると、この機能を解除します。

このボタンに対してコールバック用メソッドが指定されているときは、先に yk_switch() を実行し、その後にコールバック用メソッドを呼び出します。

タイマー処理はその特性上、時間的な制約がありますので、コールバックを介さずに直接操作できるようにしています。




yk_set_label_hour( ary )  

カウンタの表示に使うラベル( YKLookLabel クラス)のオブジェクトを指定します。
このメソッドでは、1時間単位のカウンタを表示するためのラベルを指定します。
1時間単位のカウンタが必要なければ、このメソッドを使う必要もありません。
引数の ary は配列で、この要素がラベルオブジェクトです。
以下の例を参考にしてください。

lab = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab )
t = YKLookTimerWatch.new()
t.yk_set_label_hour( [lab] )
この例では、ラベルを1個だけ指定しています。
表示すべきカウンタの値が1桁のときも2桁以上のときもこのラベルに表示します。
yk_set_number_string() yk_set_number_icon() の指定方法によっては、2桁以上になったときの表示が変わります。

lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_hour( [lab1, lab2] )
この例では、ラベルを2個指定することで、2桁の時間表示をおこないます。
表示すべきカウンタの値が3桁以上のときは、最上位のラベル内に複数の桁を表示します。
yk_set_number_string() yk_set_number_icon() の指定方法によっては、3桁以上になったときの表示が変わります。

このラベルを画面上のどこに配置するのかは、プログラム製作者に任されています。
任意の場所に配置してください。
その他、フォントや文字色など、必要に応じて任意の表示属性をラベルに設定してください。

font = YKLookFont.new( nil, 'plain', 48 )
lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
lab1.yk_set_font( font )
lab2.yk_set_font( font )
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_hour( [lab1, lab2] )
この例では、サイズが大きいフォントをラベルに指定しています。




yk_set_label_min( ary )  

カウンタの表示に使うラベル( YKLookLabel クラス)のオブジェクトを指定します。
このメソッドでは、1分単位のカウンタを表示するためのラベルを指定します。
1分単位のカウンタが必要なければ、このメソッドを使う必要もありません。
引数の ary は配列で、この要素がラベルオブジェクトです。
以下の例を参考にしてください。

lab = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab )
t = YKLookTimerWatch.new()
t.yk_set_label_min( [lab] )
この例では、ラベルを1個だけ指定しています。
表示すべきカウンタの値が1桁のときも2桁以上のときもこのラベルに表示します。
1時間単位の表示用ラベルがあるときは、分表示が60以上になることはありません。
yk_set_number_string() yk_set_number_icon() の指定方法によっては、2桁以上になったときの表示が変わります。

lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_min( [lab1, lab2] )
この例では、ラベルを2個指定することで、2桁の分表示をおこないます。
1時間単位の表示用ラベルがあるときは、分表示が60以上になることはありません。
1時間単位の表示用ラベルがなく、表示すべきカウンタの値が3桁以上のときは、最上位のラベル内に複数の桁を表示します。
yk_set_number_string() yk_set_number_icon() の指定方法によっては、3桁以上になったときの表示が変わります。

このラベルを画面上のどこに配置するのかは、プログラム製作者に任されています。
任意の場所に配置してください。
その他、フォントや文字色など、必要に応じて任意の表示属性をラベルに設定してください。

font = YKLookFont.new( nil, 'plain', 48 )
lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
lab1.yk_set_font( font )
lab2.yk_set_font( font )
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_min( [lab1, lab2] )
この例では、サイズが大きいフォントをラベルに指定しています。




yk_set_label_sec( ary )  

カウンタの表示に使うラベル( YKLookLabel クラス)のオブジェクトを指定します。
このメソッドでは、1秒単位のカウンタを表示するためのラベルを指定します。
1秒単位のカウンタが必要なければ、このメソッドを使う必要もありません。
引数の ary は配列で、この要素がラベルオブジェクトです。
以下の例を参考にしてください。

lab = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab )
t = YKLookTimerWatch.new()
t.yk_set_label_sec( [lab] )
この例では、ラベルを1個だけ指定しています。
表示すべきカウンタの値が1桁のときも2桁以上のときもこのラベルに表示します。
1分単位の表示用ラベルがあるときは、秒表示が60を超えることはありません。
yk_set_number_string() yk_set_number_icon() の指定方法によっては、2桁以上になったときの表示が変わります。

lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_sec( [lab1, lab2] )
この例では、ラベルを2個指定することで、2桁の秒表示をおこないます。
1分単位の表示用ラベルがあるときは、秒表示が60を超えることはありません。
1分単位の表示用ラベルがなく、表示すべきカウンタの値が3桁以上のときは、最上位のラベル内に複数の桁を表示します。
yk_set_number_string() yk_set_number_icon() の指定方法によっては、3桁以上になったときの表示が変わります。

このラベルを画面上のどこに配置するのかは、プログラム製作者に任されています。
任意の場所に配置してください。
その他、フォントや文字色など、必要に応じて任意の表示属性をラベルに設定してください。

font = YKLookFont.new( nil, 'plain', 48 )
lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
lab1.yk_set_font( font )
lab2.yk_set_font( font )
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_sec( [lab1, lab2] )
この例では、サイズが大きいフォントをラベルに指定しています。




yk_set_listener( method_name )  

コールバック用のメソッドを文字列またはシンボルで指定します。
nil を指定すると、コールバック用メソッドを未指定にします。
名前の先頭が 'yk' で始まるものは指定できません。

コールバック用のメソッドは、プログラム製作者が YKLookMain YKLookMainFrame のサブクラスに定義する必要があります。
コールバック用のメソッドには引数がひとつあり、 YKLookEventTimer クラスのオブジェクトです。

コールバック用メソッドが呼び出されるのは以下のときです。




yk_set_number_icon( ary )  

カウンタの表示用ラベルに使うアイコン(画像イメージ。 YKLookImage クラスのオブジェクト)を指定します。
引数の ary は配列で、カウンタの0から9に対応するアイコンを指定してください。
デフォルトではアイコンを表示しません。

img0 = YKLookImage.yk_from_file( 'image0.gif' )
img1 = YKLookImage.yk_from_file( 'image1.gif' )
img2 = YKLookImage.yk_from_file( 'image2.gif' )
img3 = YKLookImage.yk_from_file( 'image3.gif' )
img4 = YKLookImage.yk_from_file( 'image4.gif' )
img5 = YKLookImage.yk_from_file( 'image5.gif' )
img6 = YKLookImage.yk_from_file( 'image6.gif' )
img7 = YKLookImage.yk_from_file( 'image7.gif' )
img8 = YKLookImage.yk_from_file( 'image8.gif' )
img9 = YKLookImage.yk_from_file( 'image9.gif' )
n = [ img0, img1, img2, img3, img4,
      img5, img6, img7, img8, img9 ]
t = YKLookTimerWatch.new()
t.yk_set_number_icon( n )
t.yk_set_number_string( [] )
この例では、カウンタの表示がアイコンだけになります。
文字列でのカウンタの表示をしないようにするには、この例のように明示的に文字列の指定を空の配列にする必要があります。

配列の最後( 11 番目の要素。インデックスは 10 )に「無効状態」を表示するためのアイコンを追加指定できます。
これは、カウンタのラベルに表示可能な桁数を超えたときに使います。
例えば、時分表示がなく秒数表示用のラベルだけを2個指定している場合にカウンタが99秒を超えたとき、この「無効状態」のアイコンが指定してあれば、そのアイコンを表示します。

imgx = YKLookImage.yk_from_file( 'image_x.gif' )
n = [ img0, img1, img2, img3, img4,
      img5, img6, img7, img8, img9, imgx ]
t = YKLookTimerWatch.new()
t.yk_set_number_icon( n )
t.yk_set_number_string( [] )
この例では、カウンタの値が表示桁を超えたときに imgx を表示します。

カウンタの数字は文字列で表示し「無効状態」のときだけアイコンを指定するには、それ以外の要素を nil にしてください。
img = YKLookImage.yk_from_file( 'abcd.gif' )
num = [nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,img]
t = YKLookTimerWatch.new()
t.yk_set_number_icon( num )




yk_set_number_string( ary )  

カウンタの表示用ラベルに使う文字を指定します。
引数の ary は配列で、カウンタの0から9に対応する文字列を指定してください。
デフォルトは、 ['0','1','2','3','4','5','6','7','8','9'] です。

n = [ '〇', '一', '二', '三', '四',
      '五', '六', '七', '八', '九' ]
t = YKLookTimerWatch.new()
t.yk_set_number_string( n )
この例では、カウンタの表示が漢数字になります。

配列の最後( 11 番目の要素。インデックスは 10 )に「無効状態」を表示するための文字を追加指定できます。
これは、カウンタのラベルに表示可能な桁数を超えたときに使います。
例えば、時分表示がなく秒数表示用のラベルだけを2個指定している場合にカウンタが99秒を超えたとき、この「無効状態」の文字が指定してあれば、その文字を表示します。

n = ['0','1','2','3','4','5','6','7','8','9','-']
t = YKLookTimerWatch.new()
t.yk_set_number_string( n )
この例では、カウンタの値が表示桁を超えたときに '-' を表示します。

カウンタの表示に文字列ではなくアイコン(画像イメージ)だけを使うときはこのメソッドの引数 ary で要素数0の空の配列を指定してください。




yk_set_total( sec )  

タイマーの設定時間を指定します。
引数の sec は整数で秒数を指定します。

t = YKLookTimerWatch.new()
t.yk_set_total( 180 )
この例では、3分の設定時間です。




yk_set_trigger( sec )  

タイマーの設定時間以外でタイマーイベントを送信する時間を指定します。
引数の sec は常に配列です。配列の要素数は任意です。
この配列の要素は整数で秒数を指定します。
カウンタの表示がこの秒数になったときにタイマーイベントを送信しコールバック用メソッドを呼び出します。
言い換えると、 yk_set_updown() の指定によって秒数の意味が変わります。
以下の例を参考にしてください。

t = YKLookTimerWatch.new()
t.yk_set_updown( 'up' )
t.yk_set_trigger( [90] )
この例では、カウンタの表示が0秒から始まり、設定時間で終わるように表示し、その表示が90秒または1分30秒になったときにタイマーイベントを送信しコールバック用メソッドを呼び出します。
つまりタイマー開始してから90秒後に呼び出します。

t = YKLookTimerWatch.new()
t.yk_set_updown( 'down' )
t.yk_set_trigger( [90] )
この例では、カウンタの表示が設定時間から始まり、0秒で終わるように表示し、その表示が90秒または1分30秒になったときにタイマーイベントを送信しコールバック用メソッドを呼び出します。
つまりタイマー開始後、残り時間が90秒になったときに呼び出します。

このメソッドのデフォルト値は要素数が0の空の配列です。
このとき、タイマーの設定時間以外でタイマーイベントを送信することはありません。

実際に呼び出すコールバック用メソッドの指定には yk_set_listener() を使ってください。




yk_set_updown( mode )  

カウンタの表示を、0秒から始めて設定時間で終わるように表示するか、設定時間から始めて0秒で終わるように表示するかを指定します。
指定するときは、タイマー開始前に指定してください。

引数の mode true または false または以下の文字列のいずれかで指定してください。
指定 意味
true
'UP'
0から始める(カウントアップタイマー)
false
'DOWN'
0で終わる(カウントダウンタイマー)
文字列で指定するときの英字の大文字小文字はどちらでも受け付けます。
YKLook 内部では英字の先頭1文字だけを見ています。
デフォルトは false で、0で終わるカウントダウンタイマーです。

このメソッドは yk_set_trigger() yk_fire() の意味も変えます。




yk_start()  

タイマーを開始します。
カウンタの自動表示更新をおこないます。
タイマーを停止しない限り、タイムアウトするまで更新しつづけます。
タイムアウトする時間は、 yk_set_total() yk_add_total() で指定した設定時間が経過したときです。
タイムアウトしたら、自動的に yk_reset() を実行します。

もしタイマーが yk_stop() により一時停止していたときは、タイマーを再開します。
一時停止していても、再開ではなくタイマーの設定時間の最初から開始したいときは、先に yk_reset() を呼び出してください。




yk_stop()  

タイマーを停止します。厳密に言うと一時停止です。
このとき、タイマーの経過秒数は維持したままですので、この状態で yk_start() を実行すると、この秒数からタイマーを再開します。
経過秒数をリセットするには yk_reset() を実行してください。




yk_switch()  

タイマーが開始されているときは、タイマーを停止(厳密には一時停止)します。
タイマーが停止または一時停止のときは、タイマーを開始(再開も含む)します。




yk_total()  

タイマーの設定時間を返します。
これは、 yk_set_total() yk_add_total() で指定された値を返します。



なし



ページ内リンク一覧   スーパークラス   クラスメソッド   インスタンスメソッド   その他の項目  
YKLook説明書 クラス解説 YKLookTimerWatch 機能別   ABC


Copyright (c) 2003-2010 YorozuKotowariYa Ltd.