VistA-cprs/CPRS-Chart/Consults/fConsult513Prt.pas

185 lines
5.3 KiB
Plaintext

unit fConsult513Prt;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
fAutoSz, ORCtrls, StdCtrls, Mask, ORNet, ORFn, ComCtrls,
VA508AccessibilityManager, uReports;
type
Tfrm513Print = class(TfrmAutoSz)
grpChooseCopy: TGroupBox;
radChartCopy: TRadioButton;
radWorkCopy: TRadioButton;
grpDevice: TGroupBox;
lblMargin: TLabel;
lblLength: TLabel;
txtRightMargin: TMaskEdit;
txtPageLength: TMaskEdit;
cmdOK: TButton;
cmdCancel: TButton;
lblConsultTitle: TMemo;
cboDevice: TORComboBox;
lblPrintTo: TLabel;
dlgWinPrinter: TPrintDialog;
chkDefault: TCheckBox;
procedure cboDeviceNeedData(Sender: TObject; const StartFrom: String;
Direction, InsertAt: Integer);
procedure cboDeviceChange(Sender: TObject);
procedure radChartCopyClick(Sender: TObject);
procedure radWorkCopyClick(Sender: TObject);
procedure cmdOKClick(Sender: TObject);
procedure cmdCancelClick(Sender: TObject);
private
{ Private declarations }
FConsult: Integer;
FReportText: TRichEdit;
procedure DisplaySelectDevice;
public
{ Public declarations }
end;
procedure PrintSF513(AConsult: Longint; AConsultTitle: string);
implementation
{$R *.DFM}
uses rCore, rConsults, Printers, rReports, uCore;
const
TX_NODEVICE = 'A device must be selected to print, or press ''Cancel'' to not print.';
TX_NODEVICE_CAP = 'Device Not Selected';
TX_ERR_CAP = 'Print Error';
TX_QUEUED_CAP = 'Printing Report' ;
PAGE_BREAK = '**PAGE BREAK**';
procedure PrintSF513(AConsult: Longint; AConsultTitle: string);
{ displays a form that prompts for a device and then prints the SF513 }
var
frm513Print: Tfrm513Print;
DefPrt: string;
begin
frm513Print := Tfrm513Print.Create(Application);
try
ResizeFormToFont(TForm(frm513Print));
with frm513Print do
begin
lblConsultTitle.Text := AConsultTitle;
FConsult := AConsult;
DefPrt := GetDefaultPrinter(User.Duz, Encounter.Location);
if User.CurrentPrinter = '' then User.CurrentPrinter := DefPrt;
with cboDevice do
begin
if Printer.Printers.Count > 0 then
begin
Items.Add('WIN;Windows Printer^Windows Printer');
Items.Add('^--------------------VistA Printers----------------------');
end;
if User.CurrentPrinter <> '' then
begin
InitLongList(Piece(User.CurrentPrinter, ';', 2));
SelectByID(User.CurrentPrinter);
end
else
InitLongList('');
end;
if (DefPrt = 'WIN;Windows Printer') and
(User.CurrentPrinter = DefPrt) then
cmdOKClick(frm513Print)
else
ShowModal;
end;
finally
frm513Print.Release;
end;
end;
procedure Tfrm513Print.DisplaySelectDevice;
begin
with cboDevice, lblPrintTo do
begin
if radChartCopy.Checked then Caption := 'Print Chart Copy on: ' + Piece(ItemID, ';', 2);
if radWorkCopy.Checked then Caption := 'Print Work Copy on: ' + Piece(ItemID, ';', 2);
end;
end;
procedure Tfrm513Print.cboDeviceNeedData(Sender: TObject; const StartFrom: string;
Direction, InsertAt: Integer);
begin
inherited;
cboDevice.ForDataUse(SubsetOfDevices(StartFrom, Direction));
end;
procedure Tfrm513Print.cboDeviceChange(Sender: TObject);
begin
inherited;
with cboDevice do if ItemIndex > -1 then
begin
txtRightMargin.Text := Piece(Items[ItemIndex], '^', 4);
txtPageLength.Text := Piece(Items[ItemIndex], '^', 5);
DisplaySelectDevice;
end;
end;
procedure Tfrm513Print.radChartCopyClick(Sender: TObject);
begin
inherited;
DisplaySelectDevice;
end;
procedure Tfrm513Print.radWorkCopyClick(Sender: TObject);
begin
inherited;
DisplaySelectDevice;
end;
procedure Tfrm513Print.cmdOKClick(Sender: TObject);
var
ADevice, ErrMsg: string;
ChartCopy: string;
RemoteSiteID: string; //for Remote site printing
RemoteQuery: string; //for Remote site printing
begin
inherited;
FReportText := CreateReportTextComponent(Self);
RemoteSiteID := '';
RemoteQuery := '';
if cboDevice.ItemID = '' then
begin
InfoBox(TX_NODEVICE, TX_NODEVICE_CAP, MB_OK);
Exit;
end;
if radChartCopy.Checked then ChartCopy := 'C' else ChartCopy := 'W';
if Piece(cboDevice.ItemID, ';', 1) = 'WIN' then
begin
if dlgWinPrinter.Execute then with FReportText do
begin
QuickCopy(GetFormattedSF513(FConsult, ChartCopy), FReportText);
PrintWindowsReport(FReportText, PAGE_BREAK, Self.Caption, ErrMsg);
if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
end;
end
else
begin
ADevice := Piece(cboDevice.ItemID, ';', 2);
PrintSF513ToDevice(FConsult, ADevice, ChartCopy, ErrMsg);
ErrMsg := Piece(FReportText.Lines[0], U, 2);
if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
end;
if chkDefault.Checked then SaveDefaultPrinter(Piece(cboDevice.ItemID, ';', 1));
User.CurrentPrinter := cboDevice.ItemID;
FReportText.Free;
Close;
end;
procedure Tfrm513Print.cmdCancelClick(Sender: TObject);
begin
inherited;
Close;
end;
end.