たとえば12個のボタンを配置して、”vA01GL_btnMonth01″~”vA01GL_btnMonth12″のように名前をつけて、これらのボタン名を変更するにはどうするか。ユーザの会計期に合わせて12個のボタン名を動的に変えるような場合だ。
あらかじめボタンに”vA01_btonMonth01″などと名前をつけておく。ループでそれらのオブジェクトポインタを取得してタイトルを変更する。
// ボタンの名前を、会計年度に合わせる ex. vA01_btnMonth01
C_TEXT($btnPrefix)
$btnPrefix:="A01_btnMonth"
C_LONGINT($begin_month)
$begin_month:=Month of(vA01_varBEGIN_DATE )
C_LONGINT($btnNr)
C_TEXT($btnName)
C_POINTER($btnPtr)
C_LONGINT($realMonth)
For ($btnNr;1;12)
$btnName:=$btnPrefix+String($btnNr;"00") //これで数値の部分が2桁固定になる。
$btnPtr:=OBJECT Get pointer(Object named;$btnName)
$realMonth:=zz_Month_fromBegin ($begin_month;$btnNr)
OBJECT SET TITLE(*;$btnName;String($realMonth))
End for
このように「オブジェクトの名前からポインタを取得して…」というパターンを覚えてしまうと、そのあとのハンドリングは楽になる。最初にボタンを配置するときに名前をつけていくのはかったるいけどしょうがないね。