コントロール数オーバー

このフォームにこれ以上のコントロールを作成できません

VB6。ひとつのフォームに256個以上のコントロールを配置できないそうである。

知りませんでした。これはきつい。

コントロールを動的生成すればOKなのか? できたとしても動的生成なんてやってられない。なんのためにVBみたいに鎖に繋がれた環境を選んでいるのかと。作る気になったぜうおおおお!って叫んでいる間にウインドウがひとつ完成してしまうのがVBではなかったのか。

せめて64K個、いや1024個は作らせて欲しい……。

2007年11月29日追記:

どうやらこの数制限は、配列ではないコントロールに適用されるようです。

コントロール配列については、一つの配列をコントロール一つ分とカウントするようです。ですので、配列にしても影響のないコントロール(表示にしか使わないラベルコントロールなど)を一本の配列に収めてしまえば、数を節約することができます。

ここで注意しなければならないことがあります。少なくとも、コントロールに一個空きがある状態でなければ、コントロール配列を作ることができません。

配列としてコピーするとき、フォームに配置してあるコントロールの数が、上限の255個を使い切った状態だと、配列を作ろうとしたときにエラーになります。


Win3.1時代に得たノウハウが役立つ予感がしました。

すなわち……、窓の中に窓を表示する!

これでたくさんのコントロールを配置できる。

でもひとつの窓のように連続してコントロールが配置されているワケじゃないから、同じ状況をシミュレートするのは大変です。ということで私の場合は手を抜いてバレバレな方法をとります。たとえば、タブキーで正しくコントロールのフォーカスを移すには、ウィンドウ間で通信しなければなりませんが、やらないことにします。私のフォームアプリのフリーウェアではキー制御に非対応です。アクティブな窓も正しく管理されなくなります。全員マウス用意。

どこの大手企業がWin2000時代にこれをやっていたかは内緒です。