Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


【Delphi】バージョンアップ時にTBitBtnの旧アイコンを移植する手順と注意点

Delphi 10.4以前(Delphi/400は10.2 Tokyo以前)と、
Delphi 11以降のバージョン間の仕様変更点の1つに、
TBitBtnコンポーネントのデフォルトアイコン変更があります。

TBitBtnコンポーネントはKindプロパティを設定することで
クリック時に以下の11種類の動作を自動で設定することができます。
 

Kindプロパティはこの11種類
設定値説明・動作
bkCustom初期値。表示する画像はGlyphプロパティで指定した画像になります。
アクションやクリック時の処理は独自に記述します。
bkOK「OK」という文字列がボタンに表示され、チェックマークが画像として設定されます。
ボタンはデフォルトボタンになります。(Defaultプロパティ=True)
ModalResultはmrOkに設定されます。
bkCancel「キャンセル」という文字列がボタンに表示され、×印の画像が設定されます。
ボタンは[キャンセル]ボタンになります。(Cancelプロパティ=True)
ModalResultはmrCancelに設定されます。
bkYes「はい」という文字列がボタンに表示され、チェックマークが画像として設定されます。
bkOKと同様にデフォルトボタンになります。(Defaultプロパティ=True)
ModalResultはmrYesに設定されます。
bkNo「いいえ」という文字列がボタンに表示され、赤色の立入禁止のような画像が設定されます。
bkCancelと同様にボタンは[キャンセル]ボタンなります。(Cancelプロパティ=True)
ModalResultはmrNoに設定されます。
bkHelp「ヘルプ」という文字列がボタンに表示され、疑問符のアイコン画像が設定されます。
このボタンを押すと、事前にボタンに関連付けたヘルプトピックを表示できます。
bkClose「閉じる」という文字列がボタンに表示され、非常口のドアのような画像が設定されます。
このボタンを押すとフォームが閉じられます。
bkAbort「中止」という文字列がボタンに表示され、×印の画像が設定されます。
ModalResultはmrAbortに設定されます。
bkRetry「再試行」という文字列がボタンに表示され、緑色の円形矢印の画像が設定されます。
ModalResultはmrRetryに設定されます。
bkIgnore「無視」という文字列がボタンに表示され、緑色の歩き去る人の画像が設定されます。
ModalResultはmrIgnoreに設定されます。
bkAll「すべて」という文字列がボタンに表示され、ダブルチェックマークの画像が設定されます。
ModalResultはmrAllに設定されます。

DefaultプロパティがTrueになっているボタンはOK用となり、枠線が目立つ表示となります。
 (Enterキー押下でクリックされます)
 各画面に最大1つのみ表示されるように設計するのが一般的です。

CancelプロパティがTrueになっているボタンはキャンセル用となります。
 (Escキー押下でクリックされます)
 こちらも各画面に最大1つのみ表示されるように設計するのが一般的です。

ModalResultにmrNone以外の値が設定されている場合にクリックされると、
 その画面がモーダル(ShowModal)で開かれている場合はそのModalResultを呼出元に渡して自画面は閉じます。

 
Delphi 10.4以前と11以降では
ここでボタンに設定されるアイコン画像に差異があるのですが、
Delphi/400をバージョンアップするにあたって
「元の画像のままにしたい」という要望が少ないながらも存在するようです。

 
ここからは、11 Alexandria以降でも元の画像を引き続き使用する手順を紹介します。
(※ランタイムテーマを無効にしても、画像は新しくなったままです。)

まず初めに、元のバージョンのDelphiで対象の画面を表示し、
TBitBtnのGlyphプロパティを設定する画面を開きます。
そこに表示されている画像を『保存』し、任意の場所にBMP画像を保存します。

任意の場所に画像を保存する
左半分が通常時、右半分は押下不可時の画像

新しいバージョンのDelphiでは、
Kindプロパティを設定してもGlyphプロパティに画像はセットされていません。
ここでGlyphプロパティを設定する画面を開き、先ほど保存したBMP画像を読み込んでOKを押します。
(サイズが同じであれば、全く別のオリジナルで作ったBMP画像も読み込み可能です。)

ここで先ほどの画像を読み込ませる

注意事項としては、Glyphプロパティでカスタムのアイコン画像を設定したTBitBtnは
KindプロパティがbkCustom固定になります
(これ自体は旧バージョンでも同様です)

元のKindがbkCustom以外だった場合は、本記事の最初に紹介した
各Kindに対応するプロパティを自前で設定、または処理をコーディングする必要があります。

※新規作成した画面などで、読み込んだ画像が左右の両方表示された場合は
 NumGlyphsプロパティを「2」に設定してください。

 
<追加で必要な設定の一覧>

元のKind追加で必要な処理
bkCustom特になし
bkOKDefaultプロパティをTrueに設定する。CancelプロパティをFalseに設定する。
ModalResultプロパティをmrOkに設定する。
bkCancelCancelプロパティをTrueに設定する。DefaultプロパティをFalseに設定する。
ModalResultプロパティをmrCancelに設定する。
bkYesDefaultプロパティをTrueに設定する。CancelプロパティをFalseに設定する。
ModalResultプロパティをmrYesに設定する。
bkNoCancelプロパティをTrueに設定する。DefaultプロパティをFalseに設定する。
ModalResultプロパティをmrNoに設定する。
bkHelpOnClickイベントで元々自動で開いていたヘルプファイルを開くロジックを追加する。
bkCloseOnClickイベントで「Self.Close;」などの自画面を閉じるロジックを追加する。
bkAbortModalResultプロパティをmrAbortに設定する。
bkRetryModalResultプロパティをmrRetryに設定する。
bkIgnoreModalResultプロパティをmrIgnoreに設定する。
bkAllModalResultプロパティをmrAllに設定する。