04-03-2013, 04:39 PM
ファイル参照用のコントロールとして、下記のようなファイルパスを表示するTextFieldと、
ファイルダイアログを表示するCommandButton を持つHBox を作成しようと思います。
現在は、残余引数をすべて親クラスの Frame のコンストラクタに渡しているので、
たとえば、vstretch? を指定すると TextField のコンストラクタでエラーになり、
editable? を指定すると、Frame のコンストラクタでエラーになります。
これを回避したいです。
つまり、FileBox のインスタンス作成時の引数として指定されたもののなかで、
HBox のオプションとして有効なものはHBoxに、
TextField のオプションとして有効なものはTextField のコンストラクタに渡したいです。
TextField、HBox それぞのオプションを明記し、それぞれ個別に指定するようなコーディングはしたくありません。
このようなことは可能でしょうか。
ファイルダイアログを表示するCommandButton を持つHBox を作成しようと思います。
Code:
{define-class public FileBox {inherits Frame}
field tf:TextField
field cb:CommandButton
{constructor public {default ...}
{construct-super.Frame {splice ...}}
set self.tf = {TextField {splice ...}}
set self.cb =
{CommandButton
label = "参照",
{on Action do
{if-non-null u = {choose-file} then
set self.tf.value = u.full-filename
}
}
}
{self.add {HBox self.tf, self.cb} }
}
{getter public {value}:String
{return self.tf.value}
}
}
{def fb = {FileBox width = 4in }}
{value fb}
現在は、残余引数をすべて親クラスの Frame のコンストラクタに渡しているので、
たとえば、vstretch? を指定すると TextField のコンストラクタでエラーになり、
editable? を指定すると、Frame のコンストラクタでエラーになります。
これを回避したいです。
つまり、FileBox のインスタンス作成時の引数として指定されたもののなかで、
HBox のオプションとして有効なものはHBoxに、
TextField のオプションとして有効なものはTextField のコンストラクタに渡したいです。
TextField、HBox それぞのオプションを明記し、それぞれ個別に指定するようなコーディングはしたくありません。
このようなことは可能でしょうか。