VistA-cprs/CPRS-Chart/Options/fOptionsNotes.pas

209 lines
5.6 KiB
Plaintext

unit fOptionsNotes;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ORCtrls, ORFn, ComCtrls, fBase508Form,
VA508AccessibilityManager;
type
TfrmOptionsNotes = class(TfrmBase508Form)
lblAutoSave1: TLabel;
lblCosigner: TLabel;
txtAutoSave: TCaptionEdit;
spnAutoSave: TUpDown;
chkVerifyNote: TCheckBox;
chkAskSubject: TCheckBox;
cboCosigner: TORComboBox;
pnlBottom: TPanel;
bvlBottom: TBevel;
btnOK: TButton;
btnCancel: TButton;
lblAutoSave2: TLabel;
procedure FormShow(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure txtAutoSaveChange(Sender: TObject);
procedure txtAutoSaveKeyPress(Sender: TObject; var Key: Char);
procedure txtAutoSaveExit(Sender: TObject);
procedure spnAutoSaveClick(Sender: TObject; Button: TUDBtnType);
procedure cboCosignerNeedData(Sender: TObject; const StartFrom: String;
Direction, InsertAt: Integer);
procedure cboCosignerExit(Sender: TObject);
private
FStartingCosigner: Int64;
{ Private declarations }
public
{ Public declarations }
end;
var
frmOptionsNotes: TfrmOptionsNotes;
procedure DialogOptionsNotes(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
implementation
{$R *.DFM}
uses
rOptions, uOptions, rCore, rTIU, rDCSumm;
procedure DialogOptionsNotes(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
// create the form and make it modal, return an action
var
frmOptionsNotes: TfrmOptionsNotes;
begin
frmOptionsNotes := TfrmOptionsNotes.Create(Application);
actiontype := 0;
try
with frmOptionsNotes do
begin
if (topvalue < 0) or (leftvalue < 0) then
Position := poScreenCenter
else
begin
Position := poDesigned;
Top := topvalue;
Left := leftvalue;
end;
ResizeAnchoredFormToFont(frmOptionsNotes);
ShowModal;
actiontype := btnOK.Tag;
end;
finally
frmOptionsNotes.Release;
end;
end;
procedure TfrmOptionsNotes.FormShow(Sender: TObject);
// displays defaults
// opening tab^use last tab^autosave seconds^verify note title
var
autosave, verify: integer;
cosigner: Int64;
values, cosignername: string;
begin
values := rpcGetOther;
autosave := strtointdef(Piece(values, '^', 3), -1);
verify := strtointdef(Piece(values, '^', 4), 0);
chkVerifyNote.Checked := verify = 1;
chkVerifyNote.Tag := verify;
spnAutoSave.Position := autosave;
spnAutoSave.Tag := autosave;
values := rpcGetDefaultCosigner;
cosigner := strtoint64def(Piece(values, '^', 1), 0);
cosignername := Piece(values, '^', 2);
cboCosigner.Items.Add('0^<none>');
cboCosigner.InitLongList(cosignername);
cboCosigner.SelectByIEN(cosigner);
FStartingCosigner := cosigner;
chkAskSubject.Checked := rpcGetSubject;
if chkAskSubject.Checked then chkAskSubject.Tag := 1;
end;
procedure TfrmOptionsNotes.btnOKClick(Sender: TObject);
// only saves values if they have been changed
// opening tab^use last tab^autosave seconds^verify note title
var
values: string;
begin
values := '';
values := values + '^';
values := values + '^';
if spnAutoSave.Position <> spnAutoSave.Tag then
values := values + inttostr(spnAutoSave.Position);
values := values + '^';
if chkVerifyNote.Checked then
if chkVerifyNote.Tag <> 1 then
values := values + '1';
if not chkVerifyNote.Checked then
if chkVerifyNote.Tag <> 0 then
values := values + '0';
rpcSetOther(values);
with chkAskSubject do
if (Checked and (Tag = 0)) or (not Checked and (Tag = 1)) then
rpcSetSubject(Checked);
with cboCosigner do
if FStartingCosigner <> ItemIEN then
rpcSetDefaultCosigner(ItemIEN);
ResetTIUPreferences;
ResetDCSummPreferences;
end;
procedure TfrmOptionsNotes.txtAutoSaveChange(Sender: TObject);
var
maxvalue: integer;
begin
maxvalue := spnAutoSave.Max;
with txtAutoSave do
begin
if strtointdef(Text, maxvalue) > maxvalue then
begin
beep;
InfoBox('Number must be < ' + inttostr(maxvalue), 'Warning', MB_OK or MB_ICONWARNING);
if strtointdef(Text, 0) > maxvalue then
Text := inttostr(maxvalue);
end;
end;
spnAutoSaveClick(self, btNext);
end;
procedure TfrmOptionsNotes.txtAutoSaveKeyPress(Sender: TObject;
var Key: Char);
begin
if Key = #13 then
begin
Perform(WM_NextDlgCtl, 0, 0);
exit;
end;
if not (Key in ['0'..'9', #8]) then
begin
Key := #0;
beep;
end;
end;
procedure TfrmOptionsNotes.txtAutoSaveExit(Sender: TObject);
begin
with txtAutoSave do
begin
if Text = '' then
begin
Text := '0';
spnAutoSaveClick(self, btNext);
end
else if (Copy(Text, 1, 1) = '0') and (length(Text) > 1) then
begin
Text := inttostr(strtointdef(Text, 0));
spnAutoSaveClick(self, btNext);
end;
end;
end;
procedure TfrmOptionsNotes.spnAutoSaveClick(Sender: TObject;
Button: TUDBtnType);
begin
txtAutoSave.SetFocus;
txtAutoSave.Tag := strtointdef(txtAutoSave.Text, 0);
end;
procedure TfrmOptionsNotes.cboCosignerNeedData(Sender: TObject;
const StartFrom: String; Direction, InsertAt: Integer);
begin
cboCosigner.ForDataUse(rpcGetCosigners(StartFrom, Direction));
end;
procedure TfrmOptionsNotes.cboCosignerExit(Sender: TObject);
begin
with cboCosigner do
if (Text = '') or (ItemIndex = -1) then
begin
ItemIndex := 0;
Text := DisplayText[0];
end;
end;
end.