基本仕様 第 13 章 前の章 次の章

13. カスタムコントロール


ここには、MANDALA.net 標準添付の以下のカスタムコントロールの仕様および使い方が書いてあります。


これらのカスタムコントロールを使うには、まず統合開発環境 VS2008 を開いて適当なプロジェクトのフォームを表示した状態で、アイテムの選択 という操作 (以下に記述) を行ってください。




すなわち、ツールボックスのカスタマイズの操作方法は、次のとおりです。

まず、ツールボックスを開いて、すべての Windows フォーム欄をマウスの右クリック操作をすることで現れるポップアップメニューの中の [アイテムの選択(I)...] をクリック操作で選んでください。

すると、ダイアログボックス「ツールボックス アイテムの選択」が登場するので、その中のタブ .NET Framework コンポーネントをクリックしてください。 そして、ボタン 参照(B)... のクリックで現れるダイアログボックス 開く によって、次の dll を開いてください。

AppliTech.Controls8.dll (これは、MANDALA.net をインストールしたフォルダの中にあります)


この後、OK ボタンをクリックして、ツールボックスに戻ると、ツールボックスの すべての Windows フォーム欄の一番下のところに四つのカスタムコントロール ButtonIM および ButtonSS および CheckBoxTC および PanelSS が追加されているはずです。 操作を誤るとツールボックスの別の欄 (全般という欄など) に追加されることもあります。

いずれにしても、この位置では使いにくいので、これらを上に移動させて上の図のようにすることをお勧めいたします。移動はドラッグ操作で行えます。


◇ 各プロジェクトでの参照設定

以上の設定作業の他に、これらのカスタムコントロールを利用するプロジェクトでは、AppliTech.Controls8.dll への参照設定を行うことが必要です。

なお、この設定は、これらのコントロールをツールボックスからフォームにドラッグする操作によって、自動的になされます。 また、MANDALA.net コード合成ツールのメニュータイトル [ツール(T)] の中の OCX 移行支援(O)... 機能を利用した場合も、この設定は自動的になされます。

しかし、これ以外の場合には、手動で設定操作を行うことが必要です。すなわち、メニュータイトル [プロジェクト(P)] の中の参照の追加(R)... という指示によって設定してください。



◇ OCX 移行の手順

カスタムコントロールの移行に関しては、手作業がかなり必要です。しかし、ユーティリティ「特製コレつか」の機能を使うことで、手作業を大幅に軽減できます。まず、特製コレつかを動作させて VB 6.0 のフォームから必要情報を抽出してください。この後に、MANDALA.net コード合成ツールのメニュータイトル [ツール(T)] の中の OCX 移行支援(O)... 機能を動作させてください。


移行の手順は、以下の (1) から (8) のとおりです。


(1) 特製コレつかを動作させて、VB 6.0 のフォームの中から移行に必要なプロパティ情報を抽出する。抽出した情報は、フォームプロパティファイル (frmp) として、各フォームのフォルダに格納される。ちなみに、フォームプロパティファイルのファイル名は、フォームと同じであり、拡張子が frm ではなく frmp という点だけが異なる。


なお、特製コレつかは CD-ROM のフォルダ \Migration\@ToDotN1 の中の次のファイルである。

    \Migration\@ToDotN1\VbpToolB.exe


(2) 特製コレつかのログを参照して、必要な処置を確認する。

できれば、この段階でコントロール配列をなくすための修正を行うことが望ましい。

また、コントロール SSPanel5 をプログレッシブインジケータ (処理のパーセンテージの表示) として用いていたものがあれば、これについては手作業での移行を覚悟する。

なお、ここで何か修正を行った場合には、特製コレつかを再度動作させて、最新のプロパティ情報を抽出し直す。


(3) 通常の移行の処置を行う。しかし、このままでは旧 OCX を使用しているので、エラーをなくすことはできないかもしれない。


(4) VB 6.0 のフォームから抽出したフォームプロパティファイル (frmp) を VS2008 の各フォーム (vb) のフォルダにコピーする。


(5) MANDALA.net コード合成ツールを動作させて、プロジェクトを指定してから、メニュータイトル [ツール(T)] の中の OCX 移行支援(O)... の指示を与える。そして、移行を実施する。この後で、必ず生成を実施する。これによって、以下がなされる。


@ AppliTech.Controls8.dll への参照設定。

A 文字列 AxThreed5.AxSSPanel5 を AppliTech.Controls.PanelSS に一括変換。

     文字列 AxThreed5.AxSSCommand5 を AppliTech.Controls.ButtonSS に一括変換。

B 以下の内容 (OcxState) のプログラムコードを削除する。

    Me.xxxx.OcxState = CType(resources.GetObject(・・・))

G 以下の内容 (BeginInit) のプログラムコードを削除する。

    CType(Me.xxxx, System.ComponentModel.ISupportInitialize).BeginInit()

H 以下の内容 (EndInit) のプログラムコードを削除する。

    CType(Me.xxxx, System.ComponentModel.ISupportInitialize).EndInit()

J 失われたプロパティ値の再設定。

K その他、コントロール配列の場合に必要な処置。

   Me.xxxx.SetIndex(Me._xxxx_n, CType(0, Short))

   Me.xxxx.ContainingControl = Me


(6) MANDALA.net コード合成ツールを動作させて、プロジェクトを指定してから、再生成を実施する。

これで、2 回目の生成を行うことになる。


(7) 統合開発環境 VS2008 でソリューションを開いて、手作業での修正を施す。


手作業での修正としては、以下のものがあります。


C MANDALA V6 が生成したイベントハンドラが残っていれば、すべて削除する。

D もしも、Handmade のイベントハンドラがあれば、イベント名とパラメタを変更してエラーをなくす。コントロール配列の場合は、イベントハンドラがすべてのコントロールのイベントを処理するためにキーワード Handles の後に処理すべきイベントのリストを指定することが必要。

E プロパティに関するエラーをなくす。

    Caption  →  Text など

F メソッドに関するエラーをなくす。


その他、コントロール配列に関する処置が必要になることがある。


(8) 以下のような不要になった参照設定を削除する。

AxInterop.Threed5

AxSSCommand5Array

AxSSPanel5Array

Interop.Threed5

Threed5

VBRUN


参照設定を削除してもエラーにならなければ、旧 OCX の使用箇所がすべて修正された証拠である。


◇ コレつか (蛇足)

Visual Basic 4.0 でマイクロソフト社から提供されていた一部のカスタムコントロール Sheridan 3D Controls が Visual Basic 5.0 以降では提供されなくなりました。マイクロソフト社と Sheridan 社の間にどのような契約がなされているのか分かりませんが、とにかく提供されなくなったのです。そして、おかしなことにマイクロソフト社では、Visual Basic 4.0 のライセンスを持っている (すなわち Sheridan 3D Controls の頒布権を持っている) 人も、Visual Basic 5.0 や 6.0 のアプリケーションと一緒に Sheridan 3D Controls を頒布することはまかりならぬと言っています。


これは納得のいかないことです。しかし、権利関係の論争をするのも疲れますので、ユーティリティ コレつかの OCX 変換機能を開発しました。


さらに、Sheridan 3D Controls には、SSPanel のようにそれに相当する標準コントロールが存在しないものもあります。そこで、SSPanel に相当するような OCX を開発することも必要になりました。アプリテック社では、次の二つの OCX を開発して、コレつかの利用者にご提供いたしました。


これらの OCX (ActiveX コントロール) は、コレつかをインストールすると使用できるようになり、コレつかの利用者にはこれらを無料で頒布することを許諾しております。頒布に関して、マイクロソフト社のようなわけの分からないことは申しません。


SSPanel5 および SSCommand5 の仕様については、コレつかのマニュアルの「付録 5. 付属の ActiveX コントロールの仕様」を参照してください。

なお、これらの ActiveX コントロールは Visual Basic で開発したものであり、ご希望があればそのソースプログラムを有償で開示いたします。また、アプリテック社では、これらの ActiveX コントロールの仕様変更も含めて、AppliTech VbpTools の機能をご希望のとおりに変更するカスタマイズ作業 (お抱えツール屋サービス) を有償でうけたまわります。こういったサービスは、他社ではあまり行われていませんが、大変に便利です。


さて、OCX 変換機能は、Sheridan 3D Controls のすべての (6 種類の) OCX に関して次のように変換します。


なお、OCX 変換機能によって、次の変換もできます (変換するかどうかの指定も可能)。しかし、こう変換することをお勧めしているわけではありません。


OCX 変換をどの OCX からどの OCX (コントロール) に変換するのかは、コレつかのダイアログボックス OCX 変換のオプションで指定します。


13.1 PanelSS カスタムコントロール

PanelSS は、旧 VB 6.0 版の SSPanel5 とかなりの互換性をもつカスタムコントロールです。しかしながら、これは標準組込みのコントロール Panel を継承して作成されているために、SSPanel5 よりも Panel に近いものになりました。


PanelSS では、SSPanel5 と同様にコンテナとして動作するようにしてあります。しかし、プログレッシブインジケータのサポートはありません。また、SSPanel5 風のフォーカス表示 (Caption のまわりの点線の枠) のサポートもありません。


コントロール SSPanel5 から PanelSS への移行の手順については後述します。


ファイル名: AppliTech.Controls8.dll (SSPanel5 は Threed5.ocx でした)


コントロールの種類を示す名前: PanelSS


コントロールの名前空間: AppliTech.Controls.PanelSS


◇ PanelSS のイベント (Event)

Panel のイベント 46 個のすべてをサポートしています。

SSPanel5 の以下の 7 個のイベントについては、2 個の内容が変更になりました。


Click

DblClick

DragDrop (アップグレード不可。しかし、同名のイベントあり)

DragOver (アップグレード不可。しかし、同名のイベントあり)

MouseDown

MouseMove

MouseUp


◇ PanelSS のプロパティ (Property)

Panel のプロパティ 45 個のすべてをサポートしています。SSPanel5 の以下の 46 個のプロパティについては、2 個が名称変更になり、25 個がサポートされなくなりました。


PanelSS では、プログレッシブインジケータのサポートはありません。したがって、プロパティ FloodColor, FloodPercent, FloodShowPct, FloodType は、廃止になりました。


プロパティ Caption の名前が Text に変更になりました。


以下で * 印のものは、BorderStyle = None の場合だけサポートされるプロパティです。


Align (廃止。Anchor, Dock に相当?)

Alignment (TextAlign * に名称を変更。)

AutoSize (旧 VB 6.0 版においても機能しなかった。廃止。)

BackColor

BevelInner *

BevelOuter *

BevelWidth (旧 VB 6.0 版においても機能しなかった。廃止。)

BorderWidth *

Caption (Text * に名称を変更。)

Container

DataBindings

DataChanged (コンパイルエラー。廃止。)

DataField (コンパイルエラー。廃止。)

DataFormat (コンパイルエラー。廃止。)

DataMember (コンパイルエラー。廃止。)

DataSource (コンパイルエラー。廃止。)

DragIcon (コンパイルエラー。廃止。)

DragMode (コンパイルエラー。廃止。)

Enabled

FloodColor (廃止。)

FloodPercent (廃止。)

FloodShowPct (廃止。)

FloodType (廃止。)

Font

Font3D (旧 VB 6.0 版においても機能しなかった。廃止。)

ForeColor

Height

Index (廃止。)

Left

MouseIcon (廃止。Cursor に相当?)

MousePointer (廃止。Cursor に相当?)

MultiLine (旧 VB 6.0 版においても機能しなかった。廃止。)

Name

Negotiate (廃止。)

Object (コンパイルエラー。廃止。)

OutLine *

Parent

RoundedCorners (旧 VB 6.0 版においても機能しなかった。廃止。)

ShadowColor (旧 VB 6.0 版においても機能しなかった。廃止。)

TabIndex

Tag

ToolTipText (廃止。これに相当する別機能 ToolTip がある。)

Top

Visible

WhatThisHelpID (廃止。)

Width



BorderStyle の値によってサポートプロパティが異なることにご注意ください。


BorderStyle = None にした場合は、SSPanel5 に近くなり、次のプロパティがサポートされます。


BevelInner (内側の傾斜)

BevelOuter (外側の傾斜)

BorderWidth (外側と内側の傾斜の幅)

OutLine (外枠)

Text (見出しのテキスト。)

TextAlign (見出しのテキストの表示位置。)


FlatStyleNone 以外にした場合は、Panel に近くなります。この状態では、上記の六つのプロパティはサポートされません。


◇ PanelSS のメソッド (Method)

Panel のメソッド 43 個のすべてをサポートしています。

SSPanel5 の以下の 5 個のメソッドについては、2 個の名称が変更になり、2 個がサポートされなくなりました。


Drag (コンパイルエラー。廃止。)

Move (SetBounds にアップグレードされる。)

Refresh (CtlRefresh にアップグレードされるので、Refresh に戻すことが必要。)

ShowWhatThis (コンパイルエラー。廃止。)

ZOrder (BringToFront にアップグレードされる。)


◇ PanelSS への移行の手順

ここには、アップグレードウィザードを使ってアップグレードした後の移行の手順が書いてあります。なお、アップグレードウィザードは、コントロール定義情報のうち以下のもの以外は、バイナリのリソースに変えてしまうので、各種のプロパティの初期値は手作業で再設定することが必要です。適当なツールを作成するか、あるいは移行の手順を再考した方がよいかもしれません。

Location

Name

Size

TabIndex


コントロール SSPanel5 から PanelSS への移行の手順は、次のとおりです。ここを読むと難しそうですが、実際には使用しているプロパティやメソッドはわずかなことが多いので、それほどでもありません。

また、特殊な場合を除いて、イベントハンドラは MANDALA が生成するものなので、これに関する移行作業は簡単です。


移行作業は、基本的にエラーをなくしていけばよいとお考えください。こう考えると気が楽になるでしょう。


以前に、ある実際のアプリケーションの移行において必要であった作業は、A B G H J K である。これらのうち J の作業が一番面倒であり、他の作業は大したことはありませんでした。 なお、ここではコントロール配列の移行に関する作業は省略してあります。


@ AppliTech.Controls8.dll への参照設定を行う。PanelSS を利用するプロジェクトでは、この参照設定が必要です。

A 文字列 AxThreed5.AxSSPanel5 を AppliTech.Controls.PanelSS に一括変換する。

B 以下の内容 (OcxState) のプログラムコードを削除する。

Me.xxxx.OcxState = CType(resources.GetObject(・・・))

C MANDALA V6 が生成したイベントハンドラが残っていれば、すべて削除する。

D もしも、Handmade のイベントハンドラがあれば、イベント名とパラメタを変更してエラーをなくす (以下にイベント名の変更例を示す)。

ClickEvent      →  Click

DblClick        →  DoubleClick

MouseDownEvent  →  MouseDown

MouseMoveEvent  →  MouseMove

MouseUpEvent    →  MouseUp

また、コントロール配列の場合は、イベントハンドラがすべてのコントロールのイベントを処理するためにキーワード Handles の後に処理すべきイベントのリストを指定することが必要。

E 以下のプロパティに関するエラーをなくす。

AutoSize (削除)

Caption  →  Text

CtlBackColor  → BackColor

BevelWidth (削除)

FloodColor (削除)

FloodPercent (削除)

FloodShowPct (削除)

FloodType (削除)

Font3D (削除)

CtlForeColor  → ForeColor

MouseIcon (削除)

MousePointer (削除)

MultiLine (削除)

RoundedCorners (削除)

ShadowColor (削除)

MouseIcon (削除)

WhatsThisHelpID (削除)

F 以下のメソッドに関するエラーをなくす。

CtlRefresh  → Refresh

G 以下の内容 (BeginInit) のプログラムコードを削除する。

CType(Me.xxxx, System.ComponentModel.ISupportInitialize).BeginInit()

H 以下の内容 (EndInit) のプログラムコードを削除する。

CType(Me.xxxx, System.ComponentModel.ISupportInitialize).EndInit()

I 以下の参照設定を削除する。

AxInterop.Threed5

Interop.Threed5

Interop.VBRUN

J 失われたプロパティ値を再設定する。

Alignment (TextAlign として設定する), BevelInner, BevelOuter, BorderWidth, Caption (Text として設定する), OutLine などのプロパティの値を再設定する。


アップグレードウィザードは、コントロール定義情報のうち、かなりのものをバイナリのリソースに変えてしまうので、各種のプロパティの初期値は手作業で再設定することが必要です。

K その他、コントロール配列の場合の再設定が必要でした。

 Me.xxxx.SetIndex(Me._xxxx_n, CType(0, Short))


 Me.xxxx.ContainingControl = Me


SSPanel5 の障害@: BevelInner = None, BevelOuter = Inset, BorderWidth = 0 と指定すると、BevelInner = Inset, BevelOuter = Inset, BorderWidth = 0 となるというものが見つかりました。PanelSS では、後者のように指定してください。

SSPanel5 の障害A: BevelInner = None, BevelOuter = Raised, BorderWidth = 0 と指定すると、BevelInner = Raised, BevelOuter = Raised, BorderWidth = 0 となるというものが見つかりました。PanelSS では、後者のように指定してください。



その他

ヘルプは付けていませんが、プロパティウィンドウには、各プロパティの説明文が表示されるようにしてあります。



13.2 ButtonSS カスタムコントロール

ButtonSS は、旧 VB 6.0 版の SSCommand5 とかなりの互換性をもつカスタムコントロールです。しかしながら、これは標準組込みのコントロール Button を継承して作成されているために、SSCommand5 よりも Button に近いものになりました。


ButtonSS では、SSCommand5 風のフォーカス表示 (Caption のまわりの点線の枠) はサポートされなくなりました。また、ボタンクリックのイベントハンドラの延長線上 (のモジュールの中) で、MsgBox を発したり、SList を表示したりというダイアログ表示を行うと、その間だけボタンが少し浮き上がって見えます (BevelWidth が 1 の場合にこの現象が顕著)。そして、ダイアログ表示が終わると元に戻ります。これは、ウィンドウの切換えのタイミングで Button の表面にこうした描画がなされるようになっているためです。


コントロール SSCommand5 から ButtonSS への移行の手順については後述します。


ファイル名: AppliTech.Controls8.dll (SSCommand5 は Threed5.ocx でした)


コントロールの種類を示す名前: ButtonSS


コントロールの名前空間: AppliTech.Controls.ButtonSS


◇ ButtonSS のイベント (Event)

Button のイベント 48 個のすべてをサポートしています。

SSCommand5 の以下の 17 個のイベントについては、2 個の内容が変更になり、2 個の名称が変更になり、6 個がサポートされなくなりました。


Click

DragDrop (アップグレード不可。しかし、同名のイベントあり)

DragOver (アップグレード不可。しかし、同名のイベントあり)

GotFocus (Enter に名称変更)

KeyDown

KeyPress

KeyUp

LostFocus (Leave に名称変更)

MouseDown

MouseMove

MouseUp

OLECompleteDrag (廃止。)

OLEDragDrop (アップグレード不可。廃止。)

OLEDragOver (アップグレード不可。廃止。)

OLEGiveFeedback (廃止。)

OLESetData (アップグレード不可。廃止。)

OLEStartDrag (アップグレード不可。廃止。)


◇ ButtonSS のプロパティ (Property)

Button のプロパティ 46 個のうち TextAlign を除いた 45 個をサポートしています。SSCommand5 の以下の 44 個のプロパティについては、1 個の名称が変更になり、24 個がサポートされなくなりました。


以下で * 印のものは、FlatStyle = Standard の場合だけサポートされるプロパティです。


Appearance (廃止FlatStyle に相当する。)

AutoSize (旧 VB 6.0 版においても機能しなかった。廃止。)

BackColor

BevelWidth * (旧 VB 6.0 版と同様に 1 から 4 の範囲でサポート。)

Cancel (コンパイルエラー。廃止。フォームのプロパティに変更された。)

Caption (廃止。コントロール定義情報でなければ Text になる。)

CausesValidation

Container

Default (コンパイルエラー。廃止。フォームのプロパティに変更された。)

DisabledPicture (廃止。)

DownPicture (廃止。)

DragIcon (コンパイルエラー。廃止。)

DragMode (コンパイルエラー。廃止。)

Enabled

Font

Font3D (旧 VB 6.0 版においても機能しなかった。廃止。)

ForeColor

Height

HelpContextID (コンパイルエラー。廃止。)

hWnd (Handle に名称変更)

Index (廃止。)

Left

MaskColor (廃止。)

MouseIcon (廃止。)

MousePointer (廃止。)

Name

Object (コンパイルエラー。廃止。)

OLEDropMode (廃止。)

OutLine *

Parent

Picture (廃止。)

RightToLeft

RoundedCorners (旧 VB 6.0 版においても機能しなかったので、廃止。)

Style (廃止FlatStyle に相当する。)

TabIndex

TabStop

Tag

ToolTipText (廃止。これに相当する別機能 ToolTip がある。)

Top

UseMaskColor (廃止。)

Value (廃止。)

Visible

WhatThisHelpID (廃止。)

Width


FlatStyle の値によってサポートプロパティが異なることにご注意ください。


FlatStyle = Standard にした場合は、SSCommand5 に近くなり、次のプロパティがサポートされます。しかし、Button のプロパティ TextAlign はサポートされません。


BevelWidth (立体的な影)

OutLine (外枠)


FlatStyleStandard 以外にした場合は、Button に近くなります。 この状態では、上記のプロパティ BevelWidth および OutLine はサポートされません。 しかし、Button のプロパティ TextAlign はサポートされます。


◇ ButtonSS のメソッド (Method)

Button のメソッド 37 個のすべてをサポートしています。

SSCommand5 の以下の 7 個のメソッドについては、4 個の名称が変更になり、2 個がサポートされなくなりました。


DoClick (廃止。この代わりに PerformClick がある。)

Drag (コンパイルエラー。廃止。)

Move (SetBounds にアップグレードされる。)

Refresh (CtlRefresh にアップグレードされるので、Refresh に戻すことが必要。)

SetFocus (Focus にアップグレードされる。)

ShowWhatThis (コンパイルエラー。廃止。)

ZOrder (BringToFront にアップグレードされる。)


◇ ButtonSS への移行の手順

ここには、アップグレードウィザードを使ってアップグレードした後の移行の手順が書いてあります。なお、アップグレードウィザードは、コントロール定義情報のうち以下のもの以外は、バイナリのリソースに変えてしまうので、各種のプロパティの初期値は手作業で再設定することが必要です。適当なツールを作成するか、あるいは移行の手順を再考した方がよいかもしれません。

Location

Name

Size

TabIndex


コントロール SSCommand5 から ButtonSS への移行の手順は、次のとおりです。ここを読むと難しそうですが、実際には使用しているプロパティやメソッドはわずかなことが多いので、それほどでもありません。

また、特殊な場合を除いて、イベントハンドラは MANDALA が生成するものなので、これに関する移行作業は簡単です。


移行作業は、基本的にエラーをなくしていけばよいとお考えください。こう考えると気が楽になるでしょう。


以前に、ある実際のアプリケーションの移行において必要であった作業は、A B G H J K である。これらのうち J の作業が一番面倒であり、他の作業は大したことはありませんでした。 なお、ここではコントロール配列の移行に関する作業は省略してあります。


@ AppliTech.Controls8.dll への参照設定を行う。ButtonSS を利用するプロジェクトでは、この参照設定が必要です。

A 文字列 AxThreed5.AxSSCommand5 を AppliTech.Controls.ButtonSS に一括変換する。

B 以下の内容 (OcxState) のプログラムコードをコメントに変える。あるいは削除する。

Me.xxxx.OcxState = CType(resources.GetObject(・・・))

C MANDALA V6 が生成したイベントハンドラが残っていれば、すべて削除する。

D もしも、Handmade のイベントハンドラがあれば、イベント名とパラメタを変更してエラーをなくす (以下にイベント名の変更例を示す)。

ClickEvent      →  Click

KeyDownEvent    →  KeyDown

KeyPressEvent   →  KeyPress

KeyUpEvent      →  KeyUp

MouseDownEvent  →  MouseDown

MouseMoveEvent  →  MouseMove

MouseUpEvent    →  MouseUp

また、コントロール配列の場合は、イベントハンドラがすべてのコントロールのイベントを処理するためにキーワード Handles の後に処理すべきイベントのリストを指定することが必要。

E 以下のプロパティに関するエラーをなくす。

Appearance (削除)

Caption  → Text

CtlBackColor  → BackColor

DisabledPicture (削除)

DownPicture (削除)

Font3D (削除)

CtlForeColor  → ForeColor

hWnd  → Handle

MaskColor (削除)

MouseIcon (削除)

OLEDropMode (削除)

Picture (削除)

CtlRightToLeft  → RightToLeft

RoundedCorners (削除)

Style (削除)

UseMaskColor (削除)

Value (削除)

WhatsThisHelpID (削除)


F 以下のメソッドに関するエラーをなくす。

DoClick  → PerformClick

CtlRefresh  → Refresh

G 以下の内容 (BeginInit) のプログラムコードを削除する。

CType(Me.xxxx, System.ComponentModel.ISupportInitialize).BeginInit()

H 以下の内容 (EndInit) のプログラムコードを削除する。

CType(Me.xxxx, System.ComponentModel.ISupportInitialize).EndInit()

I 以下の参照設定を削除する。

AxInterop.Threed5

Interop.Threed5

Interop.VBRUN

J 失われたプロパティ値を再設定する。

BevelWidth, OutLine, Text などのプロパティの値を再設定する。

この作業が一番面倒です。  

K その他、BackColor の再設定が必要でした。


アップグレードウィザードは、コントロール定義情報のうち、かなりのものをバイナリのリソースに変えてしまうので、各種のプロパティの初期値は手作業で再設定することが必要です。


その他

ヘルプは付けていませんが、プロパティウィンドウには、各プロパティの説明文が表示されるようにしてあります。



13.3 ButtonIM カスタムコントロール

ButtonIM は、ビジュアルなボタンとして機能するカスタムコントロールです。 ただし、これは標準組込みのコントロール PictureBox を継承して作成されているために、Button コントロールよりも PictureBox に近いものになっています。

しかしながら、ButtonIM は、あくまでも一種のボタンであり、旧 VB 6.0 版のコントロールグループ Cm_Xxxx, Im_Xxxx を後継するものとして使えます。

ButtonIM にイメージを貼り付けることで、すなわち次の三つのプロパティ BackgroundImage, DownImage, DisabledImage にイメージを設定することによって、ビジュアルなボタンに仕立てることができます。


BackgroundImage (ボタンが押されていないときのイメージ)

DownImage       (ボタンが押されているときのイメージ)

DisabledImage   (ボタンが Disabled 状態のときのイメージ)


旧 VB 6.0 版においては、コントロールグループ Cm_Xxxx, Im_Xxxx をビジュアルなボタンに組み立てることができましたが、ButtonIM はこの機能の後継として位置づけられるものです。次のようにコントロール略称が同じになるように命名した四つの PictureBox を用いる代わりに、ButtonIM を一つ用いることで、同等の役割を果たします。


Cm_Xxxx     (ボタンとして機能する PictureBox)

Im_Xxxx_0   (ボタンが押されていないときのイメージを格納した PictureBox)

Im_Xxxx_1   (ボタンが押されているときのイメージを格納した PictureBox)

Im_Xxxx_2   (ボタンが Disabled 状態のときのイメージを格納した PictureBox)


ButtonIM では、フォーカス移動が発生しないので、フォーカス表示 (Caption のまわりなどに表示される点線の枠) はサポートされません。また、ボタンクリックのイベントハンドラの延長線上 (のモジュールの中) で、MsgBox を発したり、SList を表示したりというダイアログ表示を行うと、操作者から応答がなされてイベントハンドラを抜けるまでの間、ボタンは押されたままの状態にとどまります。ButtonSS は、このような場合にボタンが少し浮き上がって見えますが、ButtonIM には押され続けているように見えます。


ButtonIM を Button に近いものにするために、マウスの右ボタンではクリックイベントを発生させることができないようになっています。 また、マウスダウンの後にドラッグ操作を行った際の動作も Button に合わせています。


ファイル名: AppliTech.Controls8.dll


コントロールの種類を示す名前: ButtonIM


コントロールの名前空間: AppliTech.Controls.ButtonIM


◇ ButtonIM のイベント (Event)

PictureBox のイベント 46 個のすべてをサポートしています。


◇ ButtonIM のプロパティ (Property)

PictureBox のプロパティ 42 個のすべてをサポートしています。そして、新たに以下の 4 つを追加してあります。


BevelWidth (旧 VB 6.0 版と同様に 1 から 4 の範囲でサポート。)

DisabledPicture

DownPicture

OutLine


プロパティ Text の値によってサポートプロパティが異なることにご注意ください。

BevelWidth および OutLineText が設定されている場合だけサポートされるプロパティです。

DisabledPicture および DownPictureText が設定されていない場合 (すなわち Text = String.Empty の場合) だけサポートされるプロパティです。


ButtonIM にイメージを貼り付けて、すなわち三つのプロパティ BackgroundImage, DownImage, DisabledImage にイメージを設定することによって、ビジュアルなボタンに仕立てることができます。


 BackgroundImage (ボタンが押されていないときのイメージ)

 DownImage      (ボタンが押されているときのイメージ)

 DisabledImage  (ボタンが Disabled 状態のときのイメージ)


ここでご注意ですが、ビジュアルなボタンとして用いる場合には、プロパティ Text に空文字を設定することが必要です。また、PictureBox がもつプロパティ Image への設定は禁止されています。なお、これを誤って設定をしないように、プロパティ Image はプロパティページ上に表示されないようになっています。


ButtonIM は、プロパティ Text に文字を設定した場合、ButtonSS を用いてプロパティ FlatStyle = Standard としたのに近いものになります。


◇ ButtonIM のメソッド (Method)

PictureBox のメソッド 36 個のすべてをサポートしています。そして、新たに以下の 1 つを追加してあります。これは Button コントロールがもつメソッドに相当するものです。


PerformClick()


このメソッドは、プロパティ Enabled および Visible が両方とも True の場合だけ機能します。そうでない場合には、何の働きもしません。


◇ ButtonIM への移行の手順

ここには、旧 VB 6.0 版のコントロールグループ Cm_Xxxx, Im_Xxxx からの移行の手順が書いてあります。


@ AppliTech.Controls8.dll への参照設定を行う。ButtonIM を利用するプロジェクトでは、この参照設定が必要です。


A 移行対象コントロール Cm_Xxxx のプロパティ Image を BackgroundImage に変更する。

Cm_Xxxx.Image

        ↓

Cm_Xxxx.BackgroundImage


B 移行対象コントロール Cm_Xxxx の型を System.Windows.Forms.PictureBox から AppliTech.Controls.ButtonIM に変更する。


Friend WithEvents Cm_Xxxx As System.Windows.Forms.PictureBox

                             ↓

Friend WithEvents Cm_Xxxx As AppliTech.Controls.ButtonIM



    Me.Cm_Xxxx = New System.Windows.Forms.PictureBox

                     ↓

    Me.Cm_Xxxx = New AppliTech.Controls.ButtonIM


C 移行対象コントロールの以下のプロパティにそれぞれのイメージを設定する。なお、A によって、BackgroundImage は設定済みのはず。

BackgroundImage (ボタンが押されていないときのイメージ)

DownImage       (ボタンが押されているときのイメージ)

DisabledImage   (ボタンが Disabled 状態のときのイメージ)


D 画面から Im_Xxxx_0, Im_Xxxx_1, Im_Xxxx_2 を削除する。あるいは、画面から Im_Xxxx(0), Im_Xxxx(1), Im_Xxxx(2) を削除する。


E 再生成を実施する。


その他

ヘルプは付けていませんが、プロパティウィンドウには、各プロパティの説明文が表示されるようにしてあります。



13.4 CheckBoxTC カスタムコントロール

CheckBoxTC は、標準組込みのコントロール CheckBox を継承して作成されたカスタムコントロールです。


CheckBox を MANDALA フォームのヘッド、ボディ、拡張ボディ、テール項目として用いるときに、次の二つ問題があります。


CheckBox の背景色の形状は、あまり美しくありませんし、枠をつけることができません。


上下左右の矢印キーのインプットをイベントハンドラで受け取ることができないために (つまり .NET プラットフォームが勝手に処理してしまうために)、上下矢印キー押下時のカーソルの動きが左右矢印キーのものと同じになってしまいます。


カスタムコントロール CheckBoxTC を用いると、上記の二つの問題、すなわち背景色の問題と上下矢印キーの問題を解決できます。


ファイル名: AppliTech.Controls8.dll


コントロールの種類を示す名前: CheckBoxTC


コントロールの名前空間: AppliTech.Controls.CheckBoxTC


◇ CheckBoxTC のイベント (Event)

CheckBox のすべてのイベントをサポートしています。


◇ CheckBoxTC のプロパティ (Property)

CheckBox のプロパティのうち、以下の三つを除いたすべてをサポートしています。


CheckAlign

TextAlign

Text


これらの三つは、プロパティページに表示されないようにしてあります。なお、これらを完全に削除することはできなかったために、実行時にはこれらのプロパティが参照できますが、機能しないようになっています。


そして、新たに以下のプロパティを追加してあります。


OutLine

TabCapture



◇ CheckBoxTC のメソッド (Method)

CheckBox のすべてのメソッドをサポートしています。


◇ CheckBoxTC への移行の手順

ここには、.NET の CheckBox コントロール Hd_Xxxx, Bd_Xxxx などからの移行の手順が書いてあります。


@ AppliTech.Controls8.dll への参照設定を行う。CheckBoxTC を利用するプロジェクトでは、この参照設定が必要です。


A 移行対象コントロール Hd_Xxxx などの型を System.Windows.Forms.CheckBox から AppliTech.Controls.CheckBoxTC に変更する。


Friend WithEvents Hd_Xxxx As System.Windows.Forms.CheckBox

                             ↓

Friend WithEvents Hd_Xxxx As AppliTech.Controls.CheckBoxTC



    Me.Hd_Xxxx = New System.Windows.Forms.CheckBox

                     ↓

    Me.Hd_Xxxx = New AppliTech.Controls.CheckBoxTC


B 再生成を実施する。


その他

ヘルプは付けていませんが、プロパティウィンドウには、各プロパティの説明文が表示されるようにしてあります。