Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2004年12月31日] [更新 2013年11月05日] Delphi サンプルプログラム集
   
拙作のコンポーネント類を使用したサンプル
T150_TPanel
の上に印刷プレビュー画面
動作確認等 Windows 7 U64(SP1) + Delphi XE Pro
以下の拙作のコンポーネント類が必要
TplSetPrinter, TplPrev
T150_OnPanel.zip [784 KB] 2013年11月05日版 (EXE 同梱)



  • 2013年11月05日
  • Windows 7 U64(SP1) + Delphi XE Proで動作確認




TPanel の上に印刷プレビュー画面を表示 ( 他のフォームに表示 )


印刷プレビュー制御フォームを,メインフォーム画面にはめ込んで表示するサンプルです.
入力画面を兼ねた印刷プレビュー画面と使用する際の参考です.別のフォームに印刷プレビューフォームを表示する方法は,TFormPanel を使用したサンプルにも掲載しています.


図1
設計時のメインフォーム
  • パネルを 2 つを配置
  • 左のパネルに制御用コントロール
    ここでは [実行] [終了] のボタン
  • 右のパネルがプレビュー表示用
図2
継承プレビューフォーム
  • 印刷プレビュー制御コンポのみ追加配置
図3
[表示] ボタンをクリック

リスト1
メインフォームのコード
unit OnPanelUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls;

type
  TForm1 = class(TForm)
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    Panel1: TPanel;
    Panel0: TPanel;
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
      WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

uses Unit1;

{$R *.DFM}

//=============================================================================
//  [表示]ボタン押下時の処理
//  印刷プレビューフォームplPrevForm1を表示する
//=============================================================================
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  plPrevForm1.Show;
end;

//=============================================================================
//  [終了]ボタン押下時の処理
//=============================================================================
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  Close;
end;

//=============================================================================
//  マウスホイールは親のイベントを使用する
//=============================================================================
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
  SB: TScrollingWinControl;
begin
  if plPrevForm1 = nil then exit;

  SB := plPrevForm1.ScrollBox1;
  if FindVCLWindow(MousePos) = SB then begin
    Handled := True;
    SB.VertScrollBar.Position := SB.VertScrollBar.Position - WheelDelta div 5;
  end;
end;

end.


リスト2
印刷プレビュー制御フォームの継承フォームのコード
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  PLPREVFRM, Menus, ExtCtrls, ComCtrls, Buttons, ToolWin, plPrev;

type
  TplPrevForm1 = class(TplPrevForm)
    plPrev1: TplPrev;
    procedure plPrev1FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  plPrevForm1: TplPrevForm1;

implementation

uses OnPanelUnit;

{$R *.DFM}

//=============================================================================
//  このフォームを表示するコントロールを指定
//  OnCreateはTplPrevにないのでFormのOnCreateに記述
//=============================================================================
procedure TplPrevForm1.FormCreate(Sender: TObject);
begin
  inherited;
  plPrev1.FormParent := Form1.Panel1;
end;

//=============================================================================
//  描画コード部分
//  TplPrevのOnFormShowなのでinheritedは不要
//=============================================================================
procedure TplPrevForm1.plPrev1FormShow(Sender: TObject);
begin
  plPrev1.BeginDoc;
  plPrev1.EndDoc;
end;

end.