ActiveXコントロールをBorland Delphi 8 for .NETで使用する場合、 以下の制限事項がございます。 @引数つきプロパティのうち、フォント・ピクチャは設定不可、 色は System.Drawing.Color型ではなくSystem.UInt32型での設定。 例: CellFont, CellPicture, CellBackColorなど。 これはAxImpの不具合によるものです。 "AxImp" はマイクロソフト社が提供しているもので、ActiveXコントロールを Windows フォームコントロールとして使用するための、ラッパを生成するためのツールです。 このAxImpに不具合があり、引数つきプロパティのうち、フォント・ピクチャ・色に関して、 生成されたラッパでは取得と設定とで型が異なっております。 取得は正常にSystem.DrawingのFont/Image/Color型ですが、 設定はstdole.StdFont/stdole.StdPicture/System.UInt32型です。 stdole.StdXxxx型は .NETでは定義できない型であるため、 上記のような制限事項が発生いたします。 これは本来VS.NET言語製品でも同じ制限事項となるものですが、 VS.NETでは独自にカスタマイズしたラッパを参照させることが可能なため、 PerfectGrid Ver.2.0およびFormDesigner Ver.4.0 with .NET supportでは、 AxImpで生成されたC#ソースを元にこの不具合を弊社にて修正し、 正常なラッパを提供させていただくことで制限事項を回避しております。 しかしDelphi 8ではDelphi 8自身がAxImpを使用して自動生成したラッパしか 参照させることができません。 したがいまして、AxImpの不具合が修正されるか、 Delphi 8で独自ラッパの参照が可能になるまでは、 上記制限事項の回避手段がない状況です。 Aプロジェクトのリロードでイベントが消えてしまう。 これも弊社製品だけではなく、 Delphi 8でActiveXコントロールを使用する場合、 どのActiveX コントロールでも生じる現象です。 ただし、イベントハンドラとしてのプロシージャ自体は残っており、 それをイベントハンドラとして登録する部分が消えてしまうものです。 したがいまして、オブジェクトインスペクタのイベントリストには、 当該プロシージャがあり、それが選択されていない状態になります。 具体的には .pasファイルのInitializeComponentで、 コントロールの以下のようなInclude文が消えてしまいます。 Include(Self.OcxName.EventName, Self.OcxName_EventName); プロジェクトのリロード時以外にも消えてしまうこともあり、 またリロード時にも消えないで残るイベントもあります。 どのようなタイミング・条件で消えるかは不明です。 マイクロソフト社・ボーランド社への報告・要請はしておりますが、 状況が改善されるまでには暫く時間がかかるかと存じます。 以上のような次第で、Delphi 8ユーザの皆様にはご不便をおかけしますが、 ご理解くださるようお願いいたします。 |