お世話になっております。
XP,Delphi2007です。
新規作成→ActiveX→アクティブフォーム
から、
Project1.ocx
というocxファイルを作って、ブラウザ内に配置しました。
最初はうまくいったんですけど、ocxを修正して、ブラウザを更新しても、ocxの内容が更新されません。
Project1.ocxファイルの更新日時は、正しく変更されています。
ブラウザで読み込むhtmlファイルの中身の、このオブジェクトに関する部分は、
<object classid="clsid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" codebase="Project1.ocx" ></object>
です。
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXの部分は、
Project1_TLB.pasの350行あたりにある、
procedure TActiveFormX.InitControlData;
Const
・・・
ClassID: '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}';
をコピーしました。
ocxの修正が、ブラウザ内で反映する方法を教えてください。
よろしくお願いします。
ブラウザのキャッシュが有効になっているため
Project1.ocx
の読み込み処理が行われていないものと思われます。
IEであれば「ctrl」キーを押しながら「更新」のボタンを押すと
キャッシュを使わずに読み込まれます。
旧バージョンのIEだと「nochace」指定でキャッシュが無効にできたりしたのですが
最近はどうだかわかりません。
ありがとうございます。
ただ、「ctrl」キーを押しながら「更新」のボタンを押しても、だめでした。
自分でもいろいろ調べてみましたが、
ブラウザのインターネットオプション→プログラム→アドオンの管理のリスト中に、
Project1.ocx
というのがありました。
これをクリックしてみると、ActiveXの更新というボタンがあるのですが、ボタンが薄くなって、クリックできないようになっています。
(ButtonのEnabled:=falseみたいな感じ)
なんとなくキャッシュが原因だと自分も思うんですが、解決方法が分かりません。
よろしくお願いします。
いろいろ試しているうちに、
C:\WINDOWS\Downloaded Program Files
フォルダ内に、
ActiveFormX Control
というファイルを見つけました。
右クリックして、プロパティを見ると、IDというのがあり、
これが、ブラウザで指定した、XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXと同じ値でした。
同じく右クリックすると、更新というのがあり、これをクリックすると、
「発行元を確認できないため、このソフトウェアはブロックされました。」
と表示されました。
この辺に解決方法がありそうな感じなんですが、どうしたらよいか分かりません。
引き続き、よろしくお願いします。
こんにちは.
このActiveFormのテストは,ローカル,つまり開発環境のマシンで実行しているんで
すよね?
最初はうまくいっていたということは,現在は,設計内容の更新は反映されないが,
前の設計状態では表示されていることでしょうか?
>C:\WINDOWS\Downloaded Program Files
>フォルダ内に、
>ActiveFormX Control
>というファイルを見つけました。
これはできます.
クライアント側で実行すると,ここにダウンロードして(レジストリに)登録します.
ところで,Delphi2007ではActiveFormはサポートされていないハズなんですが,
どのようにしたのでょうか?
ありがとうございます。
そうです。ActiveFormのテストは,開発環境のマシンで実行しています。
最初はうまくいっていたというのは、初めて実行したときに作成された
Project1.ocx
の内容(プログラム)が、その後何度プロジェクト→Project1をコンパイルや、プロジェクト→Project1を再構築を繰り返しても、ブラウザで表示されるプログラムが、更新されないということです。
ブラウザの更新(ブラウザを閉じてから開く)も行っています。
また、パソコンの再起動を行っても、プログラムは更新されません。
ブラウザのアドレスは、ローカルのHTMLファイル
(c:\xxx\xxx\index.htm)
です。
試しに、C:\WINDOWS\Downloaded Program Filesフォルダ内にあるActiveFormX Controlというファイルを削除してみたところ、ブラウザのプログラムが更新されました。
しかし、なぜか、新しくできたはずのActiveFormX Controlというファイルの作成日時は、初めて実行したときに作成されたProject1.ocxの作成日時のままなんです。
なんかまだ謎が多いので、
引き続き、よろしくお願いします。
ちなみに、「Delphi2007ではActiveFormはサポートされていないハズ」とのことでしたが、うちのDelphi2007 Professionalでは、
普通に ファイル→新規→その他→ActiveX→アクティブフォームで、ActiveFormウイザードのダイアログが表示され、OKをクリックすると、Project1.ocxが作成されます。
>ちなみに、「Delphi2007ではActiveFormはサポートされていないハズ」
https://forums.embarcadero.com/thread.jspa?threadID=20379&tstart=35
すでにあるActiveFormのプロジェクトを開くと表示されますけどね (^^;
>ブラウザのアドレスは、ローカルのHTMLファイル
>(c:\xxx\xxx\index.htm)
ブラウザはIEなので...(苦笑)
それはともかくxxxxじゃ,それが置き場所としていいのかの判断ができませんね.
何かVCLを入れているらしいので,よく分かりませんし,
いろいろ変更してしまってもいるようですし,
とにかくActiveXFormが表示できているという前提で.
そのプロジェクトファイル(拡張子はdpr)を開くと
exports
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer, //OCXをレジストリの登録から削除.コマンドラインのregsvr32 /uに相当
DllUnregisterServer; //OCXをレジストリに登録.コマンドラインのregsvr32に相当
というのがあります.
クライアントからActiveFormを表示すると,DllResigterServerを実行しますが(HTMLコードのOBJECTなので),開発環境では実行してくれません.
で,ActiveFormの設計を,コントロールの追加や削除等の変更をした場合は,
[実行]から[ActiveXサーバの登録]を再実行してみてください.
どうなるかは分かりません.多分,です.
ところで,最近Delphiを使い始めた方には,ActiveFormという用語になじみがないと
思います.こんなものという文章を書いてみました.参考になれば幸いです.
http://mrxray.on.coocan.jp/Delphi/temp/DD_ActivFormTestt.htm
ありがとうございます。
実行→ActiveXサーバーの登録
で、開発環境でもプログラムが更新してくれました。
ありがとうございました。
Mr.XRAYさんのサイト拝見しました。
ActiveFormのことが分かりました。
「これからはまずほとんど使われることはないと考えられます.」とありますが、
Delphi(2007)を使って、Webアプリケーションを構築するには、どうするのが最適でしょうか。
作りたいプログラムは、ゲーム的な内容です。
できれば、IEに限定しないで、Vista以降でも問題なく動くものが作りたいです。
デジタル署名の取得(お金で解決)が必要といわれれば、その辺も含めて知りたいです。ちょっと調べてみたところでは、個人契約の場合、年間50,000円程度必要なようですね。
デジタル署名を取得したあとどうするのか、ぜんぜん分からないので、お金が無駄にならないか、ちょっと不安です。
よろしくお願いします。
>実行→ActiveXサーバーの登録
>で、開発環境でもプログラムが更新してくれました。
それはよかったです.もしかしたらダメかと思っていたのですが.
ActiveFormなんですが,実はDelphi2009で復活しているんです.
私自身が否定的な見方をしているので,あんな文章になっています.
以前,所属組織でも採用しようと考え,Delphi6の頃ですが.
将来を考えて(サーバがUnix関係に移行した場合等)でやめました.
組織内の部署単位でとかでは利用価値はあるとは思っています.
その場合,クライアントマシンは,リムーバブルなメディアが使用不可な
シンクライアントに近い形でならでとは思っています.
Webアプリケーションの構築に関しては,残念ですが,意見を述べるまでの知識は
持ち合わせていません.
他の方のレスを期待するか,
EDNやMLなどで気軽な気持ちで訊いてみてはいかがでしょうか.
https://forums.codegear.com/forum.jspa?forumID=14
http://www.freeml.com/delphi-users
ありがとうございます。
最初の疑問が解決できたので、解決チェックします。
今回は、アクティブフォームでocxを作って、できる範囲(IE、XPユーザ)で公開することにします。
デジタル署名の取得(コードサイニング証明書の購入)には興味があるので、こちらの方はがんばってやってみようかなと思います。
ありがとうございました。
>Delphi(2007)を使って、Webアプリケーションを構築するには、どうするのが最適でしょうか。
Indyにあるかわかりませんが
HTTPサーバ機能を利用してDelphiからHTMLを出力するプログラムを書けば
Webアプリケーションを構築することになります。
かんたんな掲示板ならDelphiで作ったことはあります。
あとはDelphi for PHPというのもあります。
しかしコードはPHPですので、Delphiで作るということにはならないですね
>作りたいプログラムは、ゲーム的な内容です。
Webアプリケーションによるゲームソフトは
FlashかJAVAアプレットかJAVAスクリプト
あるいはHTML5?になるので
Delphiとはちょっと無関係ですね。
ありがとうございます。
私のやり方が、一般的な方法とは違うのかもしれませんが、すでに開発しているDelphiで作ったゲームを、ブラウザ上で動かしたい。という目的で方法を探り、その結果、
ActiveX→アクティブフォーム
という方法にたどり着きました。
なので、特異な方法かもしれませんが、Delphiのアクティブフォームを利用して、プログラムを公開しようと思います。
(実際ブラウザでゲームを開始しようとすると、デジタル署名がないという警告が出ますが、それはお金で解決しようかなと思っています。)
ありがとうございました。
ツイート | ![]() |