投稿日 | : 2005/09/16(Fri) 21:32 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^3:VBAで「型が一致しません」 |
> ところが「似て非なるもの」部分があって、例えば今回のHideSelectionプロパティ。
> VBAには在るがVB6には無い(VB.Netには在るのでしょうかね)。
……え? 『HideSelection プロパティ』、ですか??
それって、VBA(というかMicrosoft Forms)やVB6どころか、もっと大昔から存在している
プロパティの筈なのですけれどね。。。(^_^;)
何しろ、(16bit版時代の)VB2 にすら実装されていますし。(ちなみに、VB.NET 版にもあります)
> ということはVBとVBAのコントロールオブジェクトは、違うモジュールで提供されている。
> ちょっとリソースの無駄。
う〜ん。私は、それも微妙かな、と感じています。
似た機能であっても、機能等による「棲み分け」が必要な場面はありますので、
異なるモジュールとして提供されるのもアリだろう、と思っています。
具体的な話をすると。
MSForms.TextBox というコントロールは、VB6にて比べるなら、標準コントロールの VB.TextBox と
いうよりも、むしろ VB6 付属の "Microsoft Windowless Controls 6.0" (MSWLESS.OCX) にある
『Lightweight TextBox コントロール(WLText)』に近い存在だったりします。
(WLTextの事はご存知ですか?)
つまり MSForms は、「ウィンドウレス」にする事で、リソース消費量を抑えた
コントロールである、という見方ができるわけです。(軽量化されているわけですね)
他にも MSForms の方は、「Unicodeに対応している」という特徴もあります。
ならば VB.TextBox もWindowlessにすれば良かったのではないか? という考え方も
できそうですが、こちらは OS標準のコントロール(EditBox)をカプセル化したものなので、
これはこれで、「Windows APIを使っての制御が可能である」というメリットもあるわけです。
# まぁ、下位互換性の都合もあったのでしょうけれどね…。
> かつ知識の無駄がある。いずれ統合するのでしょうね。
それはありそうですね。
実際、.NET の世界でも、プロパティ名の統一化などに、その考え方の一端を読みれますし。
ただ、機能的に統合されたとしても、過去の機能で作成されたアプリが完全に無くなるわけでは
無いのですから、統合されたとしても、結局、「新たな選択肢が増えただけ」という事に
なってしまう可能性はあるかも知れませんけれどね。