unit fODLabImmedColl; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ORCtrls, ORDtTm, ExtCtrls, ORFn; type TfrmODLabImmedColl = class(TForm) memImmedCollect: TCaptionMemo; calImmedCollect: TORDateBox; cmdOK: TORAlignButton; cmdCancel: TORAlignButton; pnlBase: TORAutoPanel; lblImmedColl: TOROffsetLabel; procedure cmdCancelClick(Sender: TObject); procedure cmdOKClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure calImmedCollectKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private FCollTime: string; { Private declarations } public { Public declarations } end; function SelectImmediateCollectTime(FontSize: integer; CollTime: string): string; implementation {$R *.DFM} uses rODLab; const TX_NOTIME_TEXT = 'Enter or select a collection time or press Cancel.'; TX_NOTIME_CAP = 'Missing Date/Time'; TX_BADTIME_CAP = 'Invalid Immediate Collect Time'; function SelectImmediateCollectTime(FontSize: integer; CollTime: string): string; { displays select form for immediate collect time and returns a record of the selection } var frmODLabImmedColl: TfrmODLabImmedColl; begin frmODLabImmedColl := TfrmODLabImmedColl.Create(Application); try ResizeAnchoredFormToFont(frmODLabImmedColl); with frmODLabImmedColl do begin FCollTime := CollTime; ShowModal; Result := FCollTime; end; finally frmODLabImmedColl.Release; end; end; procedure TfrmODLabImmedColl.cmdCancelClick(Sender: TObject); begin FCollTime := '-1' ; Close; end; procedure TfrmODLabImmedColl.cmdOKClick(Sender: TObject); var x: string; begin if calImmedCollect.FMDateTime = 0 then begin InfoBox(TX_NOTIME_TEXT, TX_NOTIME_CAP, MB_OK or MB_ICONWARNING); Exit; end; if calImmedCollect.FMDateTime > 0 then begin x := ValidImmCollTime(calImmedCollect.FMDateTime); if Piece(x ,U, 1) = '1' then FCollTime := calImmedCollect.Text else begin InfoBox(MixedCase(Piece(x ,U, 2)), TX_BADTIME_CAP, MB_OK or MB_ICONWARNING); Exit; end; end else FCollTime := '-1'; Close; end; procedure TfrmODLabImmedColl.FormShow(Sender: TObject); begin memImmedCollect.Lines.Assign(ImmediateCollectTimes); if Length(FCollTime) > 0 then calImmedCollect.Text := FCollTime else calImmedCollect.FMDateTime := GetDefaultImmCollTime; ActiveControl := calImmedCollect; end; procedure TfrmODLabImmedColl.calImmedCollectKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_ESCAPE then begin Key := 0; cmdCancelClick(cmdCancel); end; end; end.