VistA-cprs/CPRS-Chart/fTIUView.pas

315 lines
9.3 KiB
Plaintext

unit fTIUView;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ORFN,
StdCtrls, ExtCtrls, ORCtrls, ComCtrls, ORDtTm, Spin, uTIU, fBase508Form,
VA508AccessibilityManager;
type
TfrmTIUView = class(TfrmBase508Form)
pnlBase: TORAutoPanel;
lblBeginDate: TLabel;
calBeginDate: TORDateBox;
lblEndDate: TLabel;
calEndDate: TORDateBox;
lblStatus: TLabel;
lstStatus: TORListBox;
lblAuthor: TLabel;
cmdOK: TButton;
cmdCancel: TButton;
cboAuthor: TORComboBox;
lblMaxDocs: TLabel;
edMaxDocs: TCaptionEdit;
lblContains: TLabel;
txtKeyword: TCaptionEdit;
Bevel1: TBevel;
grpListView: TGroupBox;
radListSort: TRadioGroup;
lblSortBy: TLabel;
cboSortBy: TORComboBox;
grpTreeView: TGroupBox;
lblGroupBy: TOROffsetLabel;
cboGroupBy: TORComboBox;
radTreeSort: TRadioGroup;
Bevel2: TBevel;
cmdClear: TButton;
ckShowSubject: TCheckBox;
grpWhereEitherOf: TGroupBox;
ckTitle: TCheckBox;
ckSubject: TCheckBox;
procedure cmdOKClick(Sender: TObject);
procedure cmdCancelClick(Sender: TObject);
procedure lstStatusSelect(Sender: TObject);
procedure cboAuthorNeedData(Sender: TObject; const StartFrom: String;
Direction, InsertAt: Integer);
procedure cmdClearClick(Sender: TObject);
private
FChanged: Boolean;
FBeginDate: string;
FFMBeginDate: TFMDateTime;
FEndDate: string;
FFMEndDate: TFMDateTime;
FStatus: string;
FAuthor: Int64;
FMaxDocs: integer;
FShowSubject: Boolean;
FSortBy: string;
FListAscending: Boolean;
FGroupBy: string;
FTreeAscending: Boolean;
FSearchField: string;
FKeyWord: string;
FFiltered: Boolean;
FCurrentContext: TTIUContext;
end;
function SelectTIUView(FontSize: Integer; ShowForm: Boolean; CurrentContext: TTIUContext; var TIUContext: TTIUContext): boolean ;
implementation
{$R *.DFM}
uses rCore, uCore, rTIU(*, fNotes, fDCSumm, rDCSumm*);
const
TX_DATE_ERR = 'Enter valid beginning and ending dates or press Cancel.';
TX_DATE_ERR_CAP = 'Error in Date Range';
TX_AUTH_ERR = 'You must select an author for this retrieval method.';
TX_AUTH_ERR_CAP = 'No author selected';
function SelectTIUView(FontSize: Integer; ShowForm: Boolean; CurrentContext: TTIUContext; var TIUContext: TTIUContext): boolean ;
{ displays select form for Notes and returns a record of the selection }
var
frmTIUView: TfrmTIUView;
W, H: Integer;
CurrentAuthor: Int64;
CurrentStatus: string;
begin
frmTIUView := TfrmTIUView.Create(Application);
try
with frmTIUView do
begin
Font.Size := FontSize;
W := ClientWidth;
H := ClientHeight;
ResizeToFont(FontSize, W, H);
ClientWidth := W; pnlBase.Width := W;
ClientHeight := H; pnlBase.Height := H;
FChanged := False;
FFiltered := False;
FCurrentContext := CurrentContext;
calBeginDate.Text := CurrentContext.BeginDate;
calEndDate.Text := CurrentContext.EndDate;
if calEndDate.Text = '' then calEndDate.Text := 'TODAY';
CurrentStatus := CurrentContext.Status;
with lstStatus do
if CurrentStatus <> '' then
SelectByID(CurrentStatus)
else
SelectByID('1');
//lstStatusSelect(frmTIUView); moved down - v24.1 (RV)
CurrentAuthor := CurrentContext.Author;
with cboAuthor do
if CurrentAuthor > 0 then
begin
InitLongList(ExternalName(CurrentAuthor, 200));
if Enabled then SelectByIEN(CurrentAuthor);
FAuthor := CurrentAuthor;
end
else
begin
InitLongList(User.Name);
SelectByIEN(User.DUZ);
FAuthor := ItemIEN;
end;
if CurrentContext.MaxDocs > 0 then
edMaxDocs.Text := IntToStr(CurrentContext.MaxDocs)
else
edMaxDocs.Text := '';
FMaxDocs := StrToIntDef(edMaxDocs.Text, 0);
txtKeyword.Text := CurrentContext.Keyword;
if CurrentContext.SearchField <> '' then
begin
ckTitle.Checked := (CurrentContext.SearchField[1] in ['T','B']) and (CurrentContext.Keyword <> '');
ckSubject.Checked := (CurrentContext.SearchField[1] in ['S','B'])and (CurrentContext.Keyword <> '');
end;
ckShowSubject.Checked := CurrentContext.ShowSubject;
//with radTreeSort do if SortNotesAscending then ItemIndex := 1 else ItemIndex := 0;
with radTreeSort do if CurrentContext.TreeAscending then ItemIndex := 0 else ItemIndex := 1;
with radListSort do if CurrentContext.ListAscending then ItemIndex := 0 else ItemIndex := 1;
cboSortBy.SelectByID(CurrentContext.SortBy);
cboGroupBy.SelectByID(CurrentContext.GroupBy);
lstStatusSelect(frmTIUView); // from above in v24.1, (RV)
if ShowForm then ShowModal else cmdOKClick(frmTIUView);
with TIUContext do
begin
Changed := FChanged;
BeginDate := FBeginDate;
FMBeginDate := FFMBeginDate;
EndDate := FEndDate;
FMEndDate := FFMEndDate;
Status := FStatus;
Author := FAuthor;
MaxDocs := FMaxDocs;
ShowSubject := FShowSubject;
SortBy := FSortBy;
ListAscending := FListAscending;
GroupBy := FGroupBy;
TreeAscending := FTreeAscending;
SearchField := FSearchField;
KeyWord := FKeyWord;
Filtered := FFiltered;
Result := Changed ;
end;
end; {with frmTIUView}
finally
frmTIUView.Release;
end;
end;
procedure TfrmTIUView.cmdOKClick(Sender: TObject);
var
bdate, edate: TFMDateTime;
begin
FStatus := lstStatus.ItemID;
if calBeginDate.Text <> '' then
bdate := StrToFMDateTime(calBeginDate.Text)
else
bdate := 0 ;
if calEndDate.Text <> '' then
edate := StrToFMDateTime(calEndDate.Text)
else
edate := 0 ;
if (bdate <= edate) then
begin
FBeginDate := calBeginDate.Text;
FFMBeginDate := bdate;
FEndDate := calEndDate.Text;
FFMEndDate := edate;
end
else
begin
InfoBox(TX_DATE_ERR, TX_DATE_ERR_CAP, MB_OK or MB_ICONWARNING);
Exit;
end;
FAuthor := cboAuthor.ItemIEN;
if (FStatus = '4') and (FAuthor = 0) then
begin
InfoBox(TX_AUTH_ERR, TX_AUTH_ERR_CAP, MB_OK or MB_ICONWARNING);
Exit;
end;
FSortBy := cboSortBy.ItemID;
if FSortBy = '' then FSortBy := 'R';
FListAscending := (radListSort.ItemIndex = 0);
FTreeAscending := (radTreeSort.ItemIndex = 0);
FKeyWord := txtKeyWord.Text;
if (ckTitle.Checked) and (ckSubject.Checked) then
FSearchField := 'B'
else if ckTitle.Checked then
FSearchField := 'T'
else if ckSubject.Checked then
FSearchField := 'S'
else if not (ckTitle.Checked or ckSubject.Checked) then
begin
FKeyWord := '';
FSearchField := '';
end;
if (FKeyword <> '') then
FFiltered := True;
if ckSubject.Checked then ckShowSubject.Checked := True;
FShowSubject := ckShowSubject.Checked;
FMaxDocs := StrToIntDef(edMaxDocs.Text, 0);
if cboGroupBy.ItemID <> '' then
FGroupBy := cboGroupBy.ItemID
else
FGroupBy := '';
FChanged := True;
Close;
end;
procedure TfrmTIUView.cmdCancelClick(Sender: TObject);
begin
FChanged := False;
Close;
end;
procedure TfrmTIUView.lstStatusSelect(Sender: TObject);
var
EnableDates: Boolean;
begin
EnableDates := (lstStatus.ItemID <> '1');
lblBeginDate.Enabled := EnableDates;
calBeginDate.Enabled := EnableDates;
lblEndDate.Enabled := EnableDates;
calEndDate.Enabled := EnableDates;
if not EnableDates then
begin
calBeginDate.Text := '';
calEndDate.Text := '';
end
else
begin
calBeginDate.Text := FCurrentContext.BeginDate;
calEndDate.Text := FCurrentContext.EndDate;
if FCurrentContext.EndDate = '' then calEndDate.FMDateTime := FMToday;
end;
if lstStatus.ItemID = '3' then
lblAuthor.Caption := 'Expected Cosigner:'
else
lblAuthor.Caption := 'Author:';
cboAuthor.Caption := lblAuthor.Caption;
if (lstStatus.ItemID = '1') or (lstStatus.ItemID = '5') then
begin
cboAuthor.ItemIndex := -1;
cboAuthor.Enabled := False;
lblAuthor.Enabled := False;
if FMaxDocs > 0 then
edMaxDocs.Text := IntToStr(FMaxDocs)
else
edMaxDocs.Text := '';
edMaxDocs.Enabled := True;
lblMaxDocs.Enabled := True;
end
else
begin
cboAuthor.Enabled := True;
cboAuthor.SelectByIEN(FAuthor);
lblAuthor.Enabled := True;
edMaxDocs.Text := '';
edMaxDocs.Enabled := False;
lblMaxDocs.Enabled := False;
end;
end;
procedure TfrmTIUView.cboAuthorNeedData(Sender: TObject;
const StartFrom: string; Direction, InsertAt: Integer);
begin
cboAuthor.ForDataUse(SubSetOfActiveAndInactivePersons(StartFrom, Direction));
end;
procedure TfrmTIUView.cmdClearClick(Sender: TObject);
begin
cboSortBy.ItemIndex := -1;
cboGroupBy.ItemIndex := -1;
ckTitle.Checked := False;
ckSubject.Checked := False;
txtKeyWord.Text := '';
radTreeSort.ItemIndex := 1;
radListSort.ItemIndex := 1;
end;
end.