Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
印刷プレビュー制御コンポーネント
印刷プレビュー制御コンポーネント
履 歴 等



履歴


  • 2000年12月12日 Ver. 1.0
  • 最初の公開バージョンとする.
  • 2000年12月25日 Ver. 1.1
  • Delphi 4 で編集不可のテストプログラムを修正 (Form をテキスト形式で保存していた)
  • Win98 で動作不良のルーチン (plTextOutFile) を修正
    Win98 では,GetTextExtentExPointW における 2 バイト文字の処理が不正
  • Win98 で動作不良のテストプログラム (MemoPrint) を修正.動作不良の原因は上と同じ
  • 2001年05月28日
  • 横と縦の均等割付描画が,Windows 2000 で正常動作しない.現在調査中.
    これは SetTextCharacterExtra がプリンタの場合に期待通りに機能していないところまでは判明,
    ただし,画面上では期待通りの動作をしている.現在のところ,文字を1文字づつ描画するルーチンを作成して逃げている
  • 2001年10月23日 Ver. 2.0 前作 plPrint からコンポーネント化
  • 描画内容を記録するメタファイル作成部分と,プレビュー画面操作の機能を分離.プレビューフォームはリポジトリに登録して継承したものを使用するようにした.また,最低限必要な変数類はオブジェクト・インスペクタで設定可能とした
  • プレビューは通常の Form と同様,モーダルでもモードレスでも表示を可能とした
  • ドッキング用のパネルは削除.これはプレビュー画面に操作(データ入力などの)領域を作成するためであってコンポーネント化で不要となった
  • 連続用紙ではファンフォールトの穴を表示し,台紙の色も設定可能とした (印刷時は無効)
  • 文字列の全角と半角の変換関係のルーチンを削除 (プレビューとは直接関係なため)
  • プリンタへ出力する場合も,一度メタファイルを作成してから行うようにした.これによりプレビューと印刷結果の違いによる問題を解決した (逐次表示方式)
  • Font 関係のルーチンを一部修正
  • プレビュー画面のリサイズ時のバグを修正
  • プレビューサイズ変更のルーチンを修正
  • 各頁表示前のイベントでは Canvas への追加描画を可能にした (先読み方式)
  • クリップボードの内容表示プログラムでは,表示に本コンポーネント自身を使用するようにした
  • テストプログラムに武内修さん作の TFormPanel を利用する方法を追加
  • コンポーネント化によりテストプログラムのほとんどを修正
  • 2001年12月10日 Ver. 2.2
    報告をくださった方に感謝致します.今後共よろしくお願いします.今回はテストプログラムの修正はありません
  • 全角,半角文字列変換メソッドを復活させた
  • 連続続用紙の検出をビン名称で行うようにした (用紙名に '連続' がないプリンタがある)
  • プリンタ設定コンポーネントを nil にした時の表示の修正
  • Cursor プロパティのデフォルト値を crHourGlass に変更
  • 頁数が途中で増加した場合に頁送りボタンが非表示になる現象を修正 (逐次表方式)
  • 空白の頁がプリンタ出力する場合があるのを修正
  • 印刷 (ポップアップメニューの実行時も含めて) の際にプリンタの変更を行っても,印刷終了後は元の設定にした
  • 上記の動作を行うメソッドを公開.実行時のプリンタ設定を保存可能にした
  • 横書きと縦書きのメソッドで,1 文字だけの時に 0 による除算のエラーが発生していたのを修正
  • 2001年12月25日 Ver. 2.3
    要望機能の追加です.他の要望については検討中です
  • 郵便番号枠と番号の描画メソッドを追加
  • 2002年01月04日 Ver. 2.4
  • 頁送りの際に発生するエラーの修正
  • 2002年01月13日 Ver. 2.5
  • メタファイル関係のメモリリークを修正
  • 印刷時にプリンタを変更した際の不具合修正
  • プリンタ情報の保存読出しメソッドの公開中止
  • クリップボードのテストプログラムを Win32API 利用に再変更
  • 2002年03月20日 Ver. 2.6
  • Personal 版でインストールできなかったのを修正.
  • 2002年07月19日 Ver. 2.7
  • 文字列の幅が矩形幅を越えた場合,均等割付描画を行うための TextRectLCEx,TextRetCCEx メソッドを追加
  • 印刷時の自動拡大,縮小印刷を行うための,設計時の用紙サイズ設定用メソドを追加
  • 郵便番号と枠印刷メソッドの ZipOut, ZipOutEx に印刷位置調整の引数を追加
  • 用紙枠線と影の部分の描画後に,メタイメージを描画するように修正し,イベント内における追加描画の不正動作を修正した
  • プリンタ設定ダイアログ(プレビュー画面の [プリンタ・用紙]) で設定した内容をプレビューに直ちに反映する様にした (逐次表示方式のみ)
  • 表示位置とサイズのコードを修正
  • 2003年09月13日 Ver. 3.0
  • Delphi7に対応した.
  • 一部 DHGL のユティリティを採用した
  • 連続用紙の背景でファンフォールトの穴の位置が不正であったのを修正
  • 文字列描画において左右両端が少しはみ出るベアリングの問題を解決したつもり
  • 横書きの均等割付描画の精度向上 (縦書きは...)
  • テキストファイルの読込み表示を両端揃えにした (禁則処理は未装備)
  • StringList の描画メソッドを追加
  • Canva sのフォントサイズが反映されない不具合を修正
  • フォント関係の設定メソッドのコードを変更.誰からもリソース減少の報告がないので,内部でフォントをのをやめた
  • 印刷の際,プリンタのプロパティを変更した時の不具合 (解像度変更で拡大縮小印刷してしまう等)を修正
  • [印刷]ダイアログで Acrobat 関係を選択した際,最初に保存先を聞いてこないうにした
  • 画面のハードコピーでは Acrobat を選択した場合は無効とした
  • ステータスバーに用紙名と表示サイズ (ViewWidth ,ViewHeight) を表示するようにした
  • 上下左右とヘッダ,フッタマージンプロパティ (public) を追加した
  • Delphi 7 で開発したコードは,Windows XP で実行した時に自動的に XP テーマを使用する仕様に変更
  • テストプログラムの適切でないコード等の見直し
  • 2003年09月28日 Ver. 3.1
  • 郵便番号と枠のプレビューと印刷位置調整引数を印刷方向が横の場合も有効した
  • 2003年10月15日 Ver. 3.2
  • テキスト文書の印刷メソッドに禁則処理機能を追加した
  • 2003年10月30日 Ver. 3.3
  • プリンタ設定コンポーネントの有無の検出コードを修正
  • 2004年04月10日 Ver. 3.4
  • 逆方向からの印刷 (180度回転印刷) 用のプロパティ (InversePrint) を追加
  • 2004年05月23日 Ver. 4.0
    このバージョンから TCustomplPrev というクラスからの派生クラスとして TplPrev を作成.他の印刷関係のコンポーネントも順次この TCustomplPrev の派生コンポーネントとして再構成予定
  • 継承プレビューフォームを作成しなくても内部で自動的に生成するようにした
  • 専用のプレビューフォーム以外のFormも表示可能にした
  • プリンタ設定コンポーネントを配置しなくとも使用可能にした
  • プリンタがインストールされていない環境で発生するエラーへの対応を修正
  • OnBeforeView イベントを使用した時の不具合 (印刷とプレビューが違う) を修正
  • 縮小または拡大ボタンの動作不良を修正
  • プレビューフォーム関係のプロパティが反映されない問題を修正
  • Print メソッドで現在のプリンタの情報を取得するコードを修正
  • 逆方向印刷が Win95, 98 で正常動作しない問題を修正
  • 上下左右とヘッダ,フッタマージンを published にした
  • プレビューフォームのボタン表示フラグのプロパティを追加
  • 先読み方式で用紙の台紙関係プロパティの動作が不正であったのを修正
  • Statusbar のテキストプロパティを追加
  • プレビューフォーム用のイベントを追加
  • 上記の修正,改良に伴いテストプログラムも全面修正
  • 2004年06月26日 Ver. 4.1
  • 後続の派生コンポーネント用にコードを修正
  • 郵便番号の数字のフォント設定が正常に反映されない問題を修正
  • 2004年07月04日 Ver. 4.2
  • プレビューと印刷とで全体的に少しズレ (プリンタによって異なる) が生じる象を修正
  • 2004年07月05日 Ver. 4.3
  • TplPrev を一度破棄しないと,プリンタの設定を変更してもプレビューに反映されない現象を修正(逐次表示方式では,設定変更のタイミングによっては反映されない場合あり)
  • マウスドラッグでスクロールをサポート.ただしカーソルの変更はなし
  • 2004年07月11日 Ver. 4.4
  • 逐次表示方式の ProcName で nil を与えた時の処理がなかったのを追加
  • 2004年07月17日 Ver. 4.5
  • Windows 9X で,全角半角混じりの文字間隔が正常にならない現象を修正 (先読方式)
  • Windows 9X で,[現在の頁をコピー] における同様の現象を修正 (先読み方式)
  • 2004年07月24日 Ver. 4.51
  • 印刷位置調整用プロパティの調整の方向 (符号) が逆になっていたのを修正
  • 2004年11月17日 Ver. 4.52
  • デフォルトのプリンタを使用するコードになっている場合,プリンタコンポーネントを配置しないで使用,または,TplPrev.plSetPrinter.PrinterNumber := -1 の設定の場合)に,AcrobatOut が True のままになってしまう場合がある現象を修正
  • 印刷しない描画コードを書くための OnNoPrintDraw イベントを追加
  • 2004年11月20日 Ver. 4.53
  • [プリンタ・用紙] のダイアログでプリンタの設定が反映されない現象を修正 (複数のプリンタの設定コンポーネントを使用している場合)
  • 2004年12月30日 Ver. 4.54
  • Delphi 2005 (Win32) 対応
  • [印刷] ボタンでプリンタを変更した時に印刷できないバグを修正
  • ImageVisible プロパティイ追加.False にするとプレビューフォームは表示するが,イメージは非表示となるデフォルトは True
  • ImageDrag プロパティ追加.False にするとマウスによるイメージの移動が不可となる.デフォルトは True
  • ImageShade プロパティ追加.False にすると用紙の影の部分を非表示.デフォトは True
  • マウスによるイメージの移動範囲を表示領域全体とした
  • プレビューフォームのボタン表示,非表示のコードを修正
  • プレビューフォーム Create 時のプリンタ設定コンポの自動選択コードを修正 (複数のプリンタコンポがあると最初のものしか利用できなかった)
  • 2005年01月22日 Ver. 4.55
  • フォームを閉じる時にプレビューイメージをクリアするようにした.
  • 2005年02月20日 Ver. 4.56
  • プレビュー画面でプリンタの設定 (用紙サイズ等) を変更した場合の,画面の乱れを軽減.
  • テストプログラムの [プリンタ・用紙設定の保存] のコードを変更
  • 2006年10月20日 Ver. 4.60
  • プリンタ設定コンポの修正に伴う (内部使用) プロパティの修正
  • プレビューフォームのリソース漏れ (続けて表示の際) があったのを修正
  • 他のフォームに表示の際,続けて表示すると例外が発生する現象を修正 (上記と同じ原因)
  • プリンタ設定コンポの自動生成を本コンポ生成と同時に行うようにした.これによって,plSetPrinter プロパティと plSetPrinter プロパティで指定したプリンタ設定コンポーネントに対する操作結果が同じになった(これがいままでのバージョンで問題となっていたプリンタ設定の問題.プリンタ設定コンポーネントの修正で可能に)
  • プレビューフォームの自動生成のコードを修正
  • 直接印刷の際,頁の指定が正しく反映しない現象を修正
  • プリンタがない環境では,設計時の用紙サイズでプレビューするようにした
  • 逐次表示方式では Acrobat への Print メソッドは意味がないので無効にした
  • [プリンタ・用紙] ダイアログに TplSetPrinter のダイアログを使用するようした
  • 強制的に設計時の用紙サイズと印刷の方向を使用するプロパティ UseOriginPaperSize を追加
  • 2006年10月29日 Ver. 4.70
  • 逐次表示方式で直接印刷頁を指定して印刷した場合の印刷頁範囲の不正を修正
  • 逐次表示方式で直接印刷を実行した場合に,印刷範囲を指定しなくても全頁印刷可能とした
  • 2006年11月23日 Ver. 4.71
  • Ver4.60 でプレビューフォームのリサイズが出来なくなってしまったバグを修正.
  • 2007年02月20日 Ver. 4.72
  • DrawPict メソッドと StretchDrawPict メソッド内で TJPegImage の解放忘れを修正
  • 2008年07月16日 Ver. 4.80
  • プリンタの設定が確実に反映されるようにした (文字列ストリームを採用してプリンタ情報を保存する方式にした).これを利用するとページ毎に用紙サイズ等を変更することが可能かも知れない
  • プリンタの設定保存のために,内部で使用していた外部ファイルの使用をやめた
  • ページ送りの際のチラツキを軽減
  • 内部コードを整備
  • 動作確認を Windows XP(SP2) + Delphi 7 Pro のみとした.Vista,Delphi 2007 の動作確認は各コンポ類の整備の予定
  • テストプログラムのEXEファイルを同梱.
  • 2009年01月30日 Ver. 4.81
  • コンポーネントを実行時に生成して利用する際に発生するエラーの修正
    ただし,今回の修正だけでは十分でないので,説明のページを追加
    テストプログラム類の再コンパイルは一切なし
  • 2009年03月03日 Ver. 4.82
  • 前回のバージョンで,印刷のダイアログで設計時と違うプリンタで印刷した時にスケールが異なってしまうようになってしまったバグを修正
  • 前のバージョンで印刷開始までに少し時間がかかるようになったのを改善
  • ボタンのデザインを変更し,ボタン配置のコントロールを TCoolBar に変更
  • FormPosition の値に Center が含まれる時,プレビューフォームの幅と高さが再現しない現象修正
  • Windows Vista + Delphi 2007-R2 Proで動作確認
  • 2009年03月11日 Ver. 4.83
  • FormName プロパティで現プロジェクトの Form 名が取得できなかったのを修正
    だだし Delphi 2006, 2007 では無効 (エラー発生で設定不可)
  • コンポーネントを実行時に生成して使用する際に発生する問題の修正
  • プレビューフォーム関係の整備
    FormName プロパティ空文字または Form プロパティが nil の場合は,自動生成して自動で解放する.それ以外は,利用者が生成して解放する仕様とすることにした
  • コードを整理して不要なコードを削除
  • 2009年04月08日 
  • BDEを使用するテストプログラム (Delphi 2007 のみ) にマニフェストファイルを添付
  • 2009年04月28日 
  • PLPREVFRM.pas 内のボタン表示位置のコード修正
  • 2009年10月09日 Ver. 4.84
  • 線の太さを 0.1 mm にしても点線が印刷の際に実線になってしまう現象を修正
  • FormName プロパティをリストから選択する方法から直接入力方式に変更
  • Vistaで 文字列幅が正常に取得できない現象を修正
  • 欧文フォントの印刷に対応するための FontCharset メソッドを追加
  • Nk プリンタ関係のテストプログラムを削除
  • 2009年10月22日 Ver. 4.85
  • 0.1 mm の実線の太さが以前のバージョンに比較して細くなってしまう現象を修正.
  • DesignedPaperSize メソッドを使用した際,[プリンタ設定] ボタンで変更した用紙サイズがプレビューに反映されない現象を修正.
  • 設定した用紙より小さいサイズで印刷した後のプレビュー画面の不具合を修正.
  • 2009年10月23日 Ver. 4.86
  • 前回の修正で実は全く修正されていなかったDesignedPaperSizeメソッドの修正
  • 線のスタイル (ドット,ダッシュ) を線の太さの後に設定した場合に反映されない現象を修正
  • [印刷] ボタンを [OK] で閉じた際に,ボタン類が一時非表示になる現象を修正
  • 2009年11月03日 Ver. 4.87
  • フォントの指定位置によって,最初の頁と 2 頁以降のフォントが微妙に違うことがある現象を修正
  • 2009年11月05日 Ver. 9.00
  • Delphi 2009 以降に対応
  • プリンタコンポーネントを配置しなくてもプリンタの設定を可能にした
  • StretchDrawPict の計算式の間違いを修正
  • [ヘルプ]と[情報] ボタンに変なイベントが割当ててあったのを削除
  • 2009年12月14日 Ver. 9.01
  • DrawPict の描画バグを修正
  • 2011年04月21日
  • Delphi XE で動作確認
  • 2011年08月06日 Ver. 9.02
  • MDI の Childフ ォームに印刷プレビューが表示できない問題を修正
  • 2011年08月28日 Ver. 9.03
  • Delphi 2009 以降でフォント幅が不正になる現象を修正
  • 2016年04月19日 Ver. 9.04
  • マルチモニタ対応コードを追加
    実際に修正変更したのは,TplPrevForm.SetFormPosition 内のコードのみ
  • オンラインヘルプの画像を,Windows 7 U64(SP1) + Delphi XE(UP1) Pro でコンパイルして実行した結果の画像にした
  • 2016年05月01日 Ver. 9.05
  • [プリンタ設定] ボタンを表示すると,ボタン類の位置が乱れる現象を修正
  • 2019年01月25日 Ver. 9.06
  • plPrevfrm.pas 内で MainFormHandle, ActiveFormHandle が実装されていない Delphi 6 等で未定義のエラーが発生するのを修正



謝辞


これまで,この印刷プレビュー制御コンポーネントに限らず,多くの方からバグ報告やご意見,また,稚拙なコードを解読し,修正案なども提供して頂ました.Ver4.0 以降でそのいつくかを実現または修正しました.お名前は省略させて頂きますが,感謝いたします.また,バグ等の修正,対応が遅れたことをお詫び致します.おかげ様で 2004年07月05日現在,累計ダウンロード数が,プリンタ設定コンポーネントの 6,562 に続く 4,455 の人気商品(?)となりました.
(2004年07月05日記)



[備考]
2005年以降,累計ダウンロード数の集計は行っていません.