196 lines
5.6 KiB
Plaintext
196 lines
5.6 KiB
Plaintext
unit fPreReq;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ORFn, ComCtrls, ExtCtrls, fBase508Form, VA508AccessibilityManager,
|
|
uReports;
|
|
|
|
type
|
|
TfrmPrerequisites = class(TfrmBase508Form)
|
|
lblFontTest: TLabel;
|
|
memReport: TRichEdit;
|
|
pnlButton: TPanel;
|
|
cmdContinue: TButton;
|
|
cmdCancel: TButton;
|
|
cmdPrint: TButton;
|
|
dlgPrintReport: TPrintDialog;
|
|
procedure memReportClick(Sender: TObject);
|
|
procedure cmdContinueClick(Sender: TObject);
|
|
procedure cmdCancelClick(Sender: TObject);
|
|
procedure cmdPrintClick(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure OnActivate(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
private
|
|
procedure AlignButtons();
|
|
end;
|
|
|
|
function DisplayPrerequisites(ReportText: TStrings; ReportTitle: string): Boolean;
|
|
|
|
var
|
|
ContinueWithOrder: Boolean;
|
|
|
|
implementation
|
|
|
|
uses
|
|
uCore, rCore, rReports, Printers, rMisc;
|
|
|
|
{$R *.DFM}
|
|
|
|
function CreateReportBox(ReportText: TStrings; ReportTitle: string): TfrmPrerequisites;
|
|
var
|
|
i, AWidth, MaxWidth, AHeight: Integer;
|
|
Rect: TRect;
|
|
begin
|
|
Result := TfrmPrerequisites.Create(Application);
|
|
try
|
|
with Result do
|
|
begin
|
|
MaxWidth := PnlButton.Width;
|
|
for i := 0 to ReportText.Count - 1 do
|
|
begin
|
|
AWidth := lblFontTest.Canvas.TextWidth(ReportText[i]);
|
|
if AWidth > MaxWidth then MaxWidth := AWidth;
|
|
end;
|
|
MaxWidth := MaxWidth + (GetSystemMetrics(SM_CXFRAME) * 2) + GetSystemMetrics(SM_CXVSCROLL);
|
|
AHeight := (ReportText.Count * lblFontTest.Height) + ReportText.Count +
|
|
(GetSystemMetrics(SM_CYFRAME) * 3) + GetSystemMetrics(SM_CYCAPTION);
|
|
AHeight := AHeight + pnlbutton.Height;
|
|
AHeight := HigherOf(AHeight, 250);
|
|
if AHeight > (Screen.Height - 60) then AHeight := Screen.Height - 60;
|
|
if MaxWidth > Screen.Width then MaxWidth := Screen.Width;
|
|
Width := MaxWidth;
|
|
Height := AHeight;
|
|
Rect := BoundsRect;
|
|
ForceInsideWorkArea(Rect);
|
|
BoundsRect := Rect;
|
|
QuickCopy(ReportText, memReport);
|
|
//Quick fix to work around glich in resize algorithim
|
|
AlignButtons();
|
|
for i := 1 to Length(ReportTitle) do if ReportTitle[i] = #9 then ReportTitle[i] := ' ';
|
|
Caption := ReportTitle;
|
|
memReport.SelStart := 0;
|
|
end;
|
|
except
|
|
KillObj(@Result);
|
|
raise;
|
|
end;
|
|
end;
|
|
|
|
function DisplayPrerequisites(ReportText: TStrings; ReportTitle: string): Boolean;
|
|
var
|
|
frmPrerequisites: TfrmPrerequisites;
|
|
begin
|
|
frmPrerequisites := CreateReportBox(ReportText, ReportTitle);
|
|
try
|
|
frmPrerequisites.ShowModal;
|
|
Result := ContinueWithOrder;
|
|
finally
|
|
frmPrerequisites.Release;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmPrerequisites.memReportClick(Sender: TObject);
|
|
begin
|
|
//Close;
|
|
end;
|
|
|
|
procedure TfrmPrerequisites.cmdContinueClick(Sender: TObject);
|
|
begin
|
|
ContinueWithOrder := True;
|
|
Close;
|
|
end;
|
|
|
|
procedure TfrmPrerequisites.cmdCancelClick(Sender: TObject);
|
|
begin
|
|
ContinueWithOrder := False;
|
|
Close;
|
|
end;
|
|
|
|
procedure TfrmPrerequisites.cmdPrintClick(Sender: TObject);
|
|
var
|
|
AHeader: TStringList;
|
|
memPrintReport: TRichEdit;
|
|
MaxLines, LastLine, ThisPage, i: integer;
|
|
ErrMsg: string;
|
|
RemoteSiteID: string; //for Remote site printing
|
|
RemoteQuery: string; //for Remote site printing
|
|
const
|
|
PAGE_BREAK = '**PAGE BREAK**';
|
|
begin
|
|
RemoteSiteID := '';
|
|
RemoteQuery := '';
|
|
if dlgPrintReport.Execute then
|
|
begin
|
|
AHeader := TStringList.Create;
|
|
CreatePatientHeader(AHeader, Self.Caption);
|
|
memPrintReport := CreateReportTextComponent(Self);
|
|
try
|
|
MaxLines := 60 - AHeader.Count;
|
|
LastLine := 0;
|
|
ThisPage := 0;
|
|
with memPrintReport do
|
|
begin
|
|
repeat
|
|
with Lines do
|
|
begin
|
|
AddStrings(AHeader);
|
|
for i := 0 to MaxLines do
|
|
if i < memReport.Lines.Count then
|
|
Add(memReport.Lines[LastLine + i])
|
|
else
|
|
Break;
|
|
LastLine := LastLine + i;
|
|
Add(' ');
|
|
Add(' ');
|
|
Add(StringOfChar('-', 74));
|
|
if LastLine >= memReport.Lines.Count - 1 then
|
|
Add('End of report')
|
|
else
|
|
begin
|
|
ThisPage := ThisPage + 1;
|
|
Add('Page ' + IntToStr(ThisPage));
|
|
Add(PAGE_BREAK);
|
|
end;
|
|
end;
|
|
until LastLine >= memReport.Lines.Count - 1;
|
|
PrintWindowsReport(memPrintReport, PAGE_BREAK, Self.Caption, ErrMsg);
|
|
end;
|
|
finally
|
|
memPrintReport.Free;
|
|
AHeader.Free;
|
|
end;
|
|
end;
|
|
memReport.SelStart := 0;
|
|
memReport.Invalidate;
|
|
end;
|
|
|
|
procedure TfrmPrerequisites.AlignButtons;
|
|
Const
|
|
BtnSpace = 8;
|
|
begin
|
|
cmdCancel.Left := self.Width - cmdCancel.Width - (BtnSpace * 3) - 3;
|
|
cmdContinue.Left := cmdCancel.Left - BtnSpace - cmdContinue.Width;
|
|
end;
|
|
|
|
procedure TfrmPrerequisites.FormClose(Sender: TObject;
|
|
var Action: TCloseAction);
|
|
begin
|
|
SaveUserBounds(Self); //Save Position & Size of Form
|
|
end;
|
|
|
|
procedure TfrmPrerequisites.FormCreate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
ResizeAnchoredFormToFont(Self);
|
|
SetFormPosition(Self); //Get Saved Position & Size of Form
|
|
end;
|
|
|
|
procedure TfrmPrerequisites.OnActivate(Sender: TObject);
|
|
begin
|
|
if Self.VertScrollBar.IsScrollBarVisible then Self.VertScrollBar.Position := 0;
|
|
end;
|
|
end.
|