DelphiからCrystalReportsの用紙サイズを指定して出力させる


とむ  2012-01-07 22:35:40  No: 41418

お世話になっております。
タイトル通りDelphiからCrystalReportsの用紙サイズを指定して出力する方法をご教授願いたいです。

以下、作成途中のソースコードです。

procedure TForm1.Button1Click(Sender: TObject);
type
//  TBinNoArray = array[0..9999] of WORD;
//  PBinNoArray = ^TBinNoArray;
//  TBinName = array[0..23] of Char;
//  TBinNameArray = array[0..9999] of TBinName;
//  PBinNameArray = ^TBinNameArray;
  TPaperNoArray = array[0..9999] of WORD;
  PPaperNoArray = ^TPaperNoArray;
  TPaperName = array[0..63] of Char;
  TPaperNameArray = array[0..9999] of TPaperName;
  PPaperNameArray = ^TPaperNameArray;
var
  Device, Driver, Port: array[0..79] of char;
  DeviceMode: THandle;
  i,j,pindex;
  S:String;
  pDevMode: PDeviceMode;
begin
  S:= 'プリンター名';
  pindex := Printer.Printers.IndexOf(S);
  if pindex < 0 then
  begin
    showmessage('プリンターが見つかりませんでした。');
    exit;
  end;
  Printer.PrinterIndex := pindex;
  Printer.GetPrinter(Device, Driver, Port, DeviceMode);
  pDevMode := GlobalLock(DeviceMode);
  try
      //----------------------------------------
      //用紙サイズのインデックス取得処理(省略)
      //・対象プリンタの用紙サイズ一覧を取得
      // DeviceCapabilities使用
      //・一覧から設定したい用紙サイズのインデックスを取得
      //----------------------------------------

      pDevMode^.dmPaperSize  := 取得した用紙サイズインデックス;
  finally
    GlobalUnlock(DeviceMode);
  end;
  Printer.SetPrinter(Device, Driver, Port, DeviceMode);
  Crpe1.Printer.Name := StrPas(Device);
  Crpe1.Printer.Driver := StrPas(Driver);
  Crpe1.Printer.Port := StrPas(Port);
  Crpe1.Printer.Mode := DeviceMode;
  Crpe1.CloseWindow;
  Crpe1.ReportName:='\\"パス"\"レポート".rpt';
//  Printer.PreserveRptSettings := [prOrientation, prPaperSize, prPaperSource];
  Crpe1.Execute;
  try
    Crpe1.PrintWindow;
  except
    showmessage('error');
    Exit;
  end;
end;

DeviceModeにて用紙サイズを指定しているのですが、うまく用紙サイズが変わってくれません。
ここを直せばいい、ここをこうしたほうがいいなどありましたら、どうかご教授ください。よろしくお願い致します。
※ソースは抜粋してきたのでコンパイルが通るか確認しておりません。
  ご了承ください。


とむ  2012-01-07 22:39:09  No: 41419

環境を書き忘れました。すみません。
・DelphiXE
・CrystalReports XI R2 SP6です。

よろしくお願い致します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加