これまで、jpgファイルをフォーム上に表示するビューアを作って使っていたのですが、
急遽、pdfファイルも画像ファイルと同様にフォーム上に表示することがひつようになり
ました。
簡単にできるコンポーネントや方法はありますか。
ちなみに、Adobe Acrobat Reader がインストールされていない環境でも、
表示できるようにする必要はありますか?
igyさん。
現在の環境ではAdobe Acrobat Reader がインストールされています。
でもインストールされていないPCで起動する場合もあるかもしれませんので、
されている場合とされていない場合の両方のケースで可能かどうか教えてください。
Adobe Acrobat Reader が、インストールされているPCでいいのであれば、
AcroPDFコンポーネントについて
https://www.petitmonte.com/bbs/answers?question_id=29809
で挙げられているAcroPDFコンポーネント(使ったことがないのですが・・)や、
[ 720_PDF 文書のフォームへの表示と印刷と関連リンク ] - Mr.XRAY
http://mrxray.on.coocan.jp/Delphi/plSamples/720_Acrobat.htm
などが、参考になるかもしれません。
今時のWindowsPCで考えて良いのであれば、EdgeバージョンのWebBrowserコントロールを配置して、NavigateでPDFのパスを渡すのがAcrobatReaderの有無を気にしなくて良いので楽ちんで良いかと思います。
この掲示板には、他にも
PDFをフォームに表示したい
https://www.petitmonte.com/bbs/answers?question_id=8541
などあるようです。参考までに・・
igyさん。
早速、AcroPDFコンポーネントをやってみました。
でも、フォームに貼り付けようとすると、「エラーが特定できません。」
と出てしまいます。
何か不具合があるのでしょうか。
> でも、フォームに貼り付けようとすると、「エラーが特定できません。」
コンポーネントが正常にインストールできていないのでは ?
( 私はエスパーではありません )
> コンポーネントが正常にインストールできていないのでは ?
私はエスパーではないので,あくまで推測ですが,参考までに.
[ Windows Vista 以降の OS で Delphi ]
http://mrxray.on.coocan.jp/Delphi/Others/WindowsVista.htm
[ 02_インターネットの向こう側は見えない ]
http://mrxray.on.coocan.jp/Delphi/Others/013.htm#02
Mr.XRAY様
何度かインストールしてみましたが、やはり「エラーが特定できません。」
と出てしまいます。
ちなみに、Windows10 Home 32bit、Delphi6を使っています。
試しに、別機器のWindows10 Pro 64bit、Delphi6でやってみたらエラーが発生しませんでした。
何か関係はあるでしょうか。
Delph 6 の IDE は仮想化の影響を受けます.
提示した記事を参考にして関係ファイルとフォルダ,レジストリの項目を削除します.
Delphi 2007 以降の IDE は WindowsVista に対応しています.
そのような仮想化によるファイルもレジストリの書き込むはしません.
Delphi 6 の IDE は Windows Vista 以降に対応していません.
※ Windows 10 の新しいバージョンのレジストリエディタには,アドレスバーがあり
※ エクスプローラのアドレスバーのように利用できます.
私はエスパーではないので,あくまでも推測です.
最初の現象が発生した PC では,Delphi 6 の IDE を管理者権限で起動しないでコンポーネントをインストールした.
その後,仮想化関係の処理はしないで,
管理者権限で IDE を起動して,同じコンポーネントをインストールした.
別機器の Delphi 6 では,最初から管理者権限で起動してコンポーネントをインストールした.
という仮定での話です.
[参考] (一部再掲)
[ 02_インターネットの向こう側は見えない ]
http://mrxray.on.coocan.jp/Delphi/Others/013.htm#02
[ 03_エスパーに期待するのは無理 - レスする義務は誰にもない ]
http://mrxray.on.coocan.jp/Delphi/Others/013.htm#03
[ Windows Vista 以降の OS で Delphi ]
http://mrxray.on.coocan.jp/Delphi/Others/WindowsVista.htm
64 ビットの Windows には,
レジストリエディタは 32 ビット用と 64 ビット用があります.
Delphi の IDE は 32 ビットのアプリです.
32 ビット用のレジストリエディタを操作します.
Mr.XRAY様
>最初の現象が発生した PC では,Delphi 6 の IDE を管理者権限で起動しないでコンポーネントをインストールした.
>その後,仮想化関係の処理はしないで,
>管理者権限で IDE を起動して,同じコンポーネントをインストールした.
>別機器の Delphi 6 では,最初から管理者権限で起動してコンポーネントをインストールした.
>という仮定での話です.
管理者権限でIDEを起動してコンポーネントをインストールしましたが、ダメでした。
ところで、仮想化関係の処理とはどういうものですか?
>>別機器の Delphi 6 では,最初から管理者権限で起動してコンポーネントをインストールした.
> 管理者権限でIDEを起動してコンポーネントをインストールしましたが、ダメでした。
あっ,そうなんですか.
> 試しに、別機器のWindows10 Pro 64bit、Delphi6でやってみたらエラーが発生しませんでした。
を,
(1) Delphi 6 の IDE を管理者権限で起動
(2) コンポーネント (ActiveX) をインストール
(3) コンポーネントをフォームに配置する時にエラーが発生しなかった
(フォームにコンポーネントを貼り付けることができた)
と,勝手に解釈してしまいました.
ということは,私の推測は間違っていましたね.大変失礼しました.
残念ですが,私には理解できないできない現象です.
> ところで、仮想化関係の処理とはどういうものですか?
関係ファイルとフォルダ,レジストリの項目を削除することです.
このスレッドをお読みになっている方の参考に.長文です.
私が推測した状況は以下のようなものです.
(1) Windows 10 32bit の PC に Delphi 6 (エディションは不明) を管理者権限でインストール
(2) 管理者に昇格しないで Dephi 6 の IDE を起動
(3) ActiveX のコントロールの取り込みでコンポーネントをインストール
(4) Delphi 6 の IDE を管理者に昇格しないで再起動
(5) コンポーネントパレットの,インストールしたコンポーネントを
フォームに配置しようとした が,エラーが発生して配置できなかった.
エラーの内容は「エラーが特定できません。」
(6) Delphi 6 の IDE を管理者権限で再起動
(7) 同じようにコンポーネントをインストールしたがダメだった
エラー等については不明
別の PC における操作
これが一般的と言える操作です.
(1) Windows 10 64bit の 別の PC に Delphi 6 (エディションは不明) を管理者権限でインストール
(2) 管理者に昇格して Dephi 6 の IDE を起動
(3) ActiveX のコントロールの取り込みでコンポーネントをインストール
(4) Delphi 6 の IDE を管理者権限で再起動
(5) コンポーネントパレットの,インストールしたコンポーネントをフォームに配置できた.
最初の PC における現象は,Windows Vista で導入された
レジストリとファイルの仮想化によるものです.
この仮想化によるファイル,レジストリのキー項目などを削除しないと,
コンポーネント類を再インストールしても正常にインストールできません.
対応策として,Delphi を再インストールするということも考えられます.
しかし,完全にアンインストールしないと同じ現象が発生します.
完全なアンインストールをするには
Program Files 階層下の関係フォルダと,レジストリの関係キーの削除が必要です
(64bit の Windows では Program Files (x86) 階層下の関係フォルダとレジストリ).
Delphi 2007 以降の IDE は,仮想化が無効になっていますが,
IDE を管理者権限で起動しなおしてインストールしないと正常にインストールできません.
Windows Vista はあまり普及しなかったせいか,
Windows 7 が普及してから,この手の質問が多発していた記憶があります.
Delphi の IDE は,管理者権限で起動するのが常識と考えても差し支えないと思います.
少し前の質問にもありましたが,アプリを配布する時は,トラブルを回避するためにも,
この仮想化を無効にしておく必要があると思われます.
Delphi 10 で作成した EXE は,デフォルトで仮想化が無効になります.
残念ながら,今回質問された方とは状況が違うようです.
ツイート | ![]() |