スナップインのテーマ・カスタマイザーは、アンセスターに VF_AC033O を持つ VL 再利用可能パーツです。
独自のカスタム VLF-ONE の開始 Web ページにスナップインの (名前ではなく) ID を指定します。
提供されているカスタムの VLF-ONE 開始 Web ページは UF_OEXEC です。
このソースコードで、テーマ・カスタマイザー ID を指定する場所を確認できます。
注:UF_OEXEC は絶対に変更しないでください。アップグレードや再インストール時に変更が失われてしまいます。自身のコピーを作成するようにしてください。
このスナップイン・ポイントは、フレームワーク定義がロードされる前にテーマのカスタマイズが行われるので、多くの他のスナップインとは異なります。
テーマ・カスタマイズの仕組みについて学ぶには、次の例を試してみてください。
以下のコードを開始点として、再利用可能パーツに名前、ID (例: MY_THEMES) を付けて作成します。
Begin_Com Role(*EXTENDS #VF_AC033O)
Mthroutine Name(Customize) Options(*REDEFINE)
#Sys_web.Alert Caption('MY_THEMES invoked')
EndRoutine
End_Com
Web ページ UF_OEXEC をコピーして、カスタムの Web ページ (例: MY_OEXEC) を作成します。
Themecustomizerid(MY_THEMES) のパラメータを設定します。
MY_THEMES と MY_OEXEC をコンパイルします。
MY_OEXEC を実行し、次のような警告が表示されるか確認します。
再定義されたメソッド Customize は、#Themes が VF_SY170O という名前のテーマ・オブジェクトのコレクション・アレイを受け取ります。
このコレクション内の各 VF_SY170O オブジェクトには多くのプロパティがあります。例えば、それぞれにシンボリック名と記述があります。
MY_THEMES を次のコードを使用するように変更して、開始時にすべて表示されるようにします。
Mthroutine Name(Customize) Options(*REDEFINE)
Define_Com Class(#prim_dc.UnicodeString) Name(#CRUnicode)
Define_Com Class(#Prim_dc.UnicodeString) Name(#AlertMessage)
#CRUnicode := (13).AsUnicodeString
For Each(#Theme) In(#Themes)
#AlertMessage += "SymbolicName=" + #Theme.SymbolicName + ", Description=" + #Theme.Description + #CRUnicode
Endfor
#AlertMessage += "Found " + #Themes.ItemCount.AsString + " themes."
#Sys_web.Alert Caption(#AlertMessage)
Endroutine
MY_THEMES を再コンパイルして、MY_OEXEC を実行します。
すると、次のように表示されます。
次に、シンボリック名が “ORANGE” や “PURPLE” のテーマはすべて禁止するというロジックを試してみましょう。
Mthroutine Name(Customize) Options(*REDEFINE)
For Each(#Theme) In(#Themes)
#Theme.Enabled := #Theme.SymbolicName.Contains( "ORANGE" ).Not
If (#Theme.Enabled)
#Theme.Enabled := #Theme.SymbolicName.Contains( "PURPLE" ).Not
Endif
Endfor
Endroutine
MY_THEMES を再コンパイルして、MY_OEXEC を実行します。ログオンすると、使用できるテーマの一覧が次のように表示されているはずです。
次は、以下のコードを使って新規テーマを作成してみましょう。
Mthroutine Name(Customize) Options(*REDEFINE)
Define_Com Class(#VF_SY170O) Name(#NewTheme) Reference(*DYNAMIC)
#NewTheme <= *New #vf_SY170O
#Themes.Insert Item(#NewTheme)
Set Com(#NewTheme) Symbolicname(MYTHEME1) Description('My First Theme') Vlwebapplicationtheme(2015Blue)
Set Com(#NewTheme.BaseTitleStyle) Normbackcolor(Red) Textcolor(white)
Endroutine
VLF テーマと Visual LANSA テーマ の相関関係に注目してください。この場合、 20015Blue が使用されています。
これは、VLF-ONE テーマは、Visual LANSA テーマの拡張だからです。
VLWebApplicationTheme の値は VLWebApplicationTheme のプロパティへのマップを提供するので、有効な値になっている必要があります。有効な値になっていない場合は、アプリケーション・エラーとなります。
MY_THEMES を再コンパイルして、MY_OEXEC を実行します。
ログオンします。ログオンすると、使用できるテーマの一覧が次のように表示されているはずです。
次に、VF_SY170O オブジェクトにはどのようなプロパティがあるか確認してみましょう。
次のようなコードで、VF_SY170O 参照を選択します。
そして、F2 を使用して、[詳細] タブのプロパティ一覧を確認します。
VF_SY170O オブジェクトには多くのプロパティがあり、複雑に関係しあっています。
この詳細および例については、VL フォーラム https://vlforum.lansa.com.au/ を活用してください。