色を選択して変更するダイアログを表示する方法

業務アプリケーションの機能として,何かの色を変更するUI(ユーザーインターフェース)を作りたい場合があります。例えば,こちらのアドインでは,路面性状調査の結果の配色を変更できるようにしています。

その一つの方法として,Windows APIを用いる方法を上記のアドインで使用しています。

関数の作成

新しい標準モジュールを作成し,例えばmodGetColorDlgなどと名前を付けておきます。

以下のコードにより,上から順に,Windows APIに関する宣言,構造体の定義,モジュールレベルの定数を宣言したあと,フォームから使用するパブリック関数を作成します。

使用例

フォームの準備

色を変更させるUIとして,元の色を表示し,クリックさせ,変更された色を表示する部分として,キャプションに何も記入しないラベルコントロールを設置します。

以下の例ではラベルを凹ませていますが,その他,凸にする,枠を付ける,枠線に色を付けるなど,お好みでスタイルを変更して下さい。

frm_colordlg

コードの記述

準備したラベルをダブルクリックすると,標準でClickイベントの作成画面になりますので,以下のように記述します。

実行例

フォームのラベルコントロールをクリックすると,下図のようなダイアログが表示されます。

clicked

色を選択して閉じると,ラベルの色も変更されます。

changed

具体的な利用方法としては,色の値は隠しシートあるいはレジストリに保存することが考えられます。
フォームのInitializeイベントで初期値を読み込み,フォームを閉じたときにレジストリやシートに変更された色の値を保存するようにして下さい。

関連記事