unit fOrderComment;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  fAutoSz, StdCtrls, ComCtrls, ORFn, rOrders;

type
  TfrmWardComments = class(TfrmAutoSz)
    Label1: TLabel;
    cmdOK: TButton;
    cmdCancel: TButton;
    memOrder: TMemo;
    memComments: TRichEdit;
    procedure FormCreate(Sender: TObject);
    procedure cmdOKClick(Sender: TObject);
    procedure cmdCancelClick(Sender: TObject);
    procedure memCommentsKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    OKPressed: Boolean;
  end;

function ExecuteWardComments(AnOrder: TOrder): Boolean;

implementation

{$R *.DFM}

const
  TC_PUT_ERR = 'Unable to Save Comments';

function ExecuteWardComments(AnOrder: TOrder): Boolean;
var
  frmWardComments: TfrmWardComments;
  ErrMsg: string;
begin
  Result := False;
  frmWardComments := TfrmWardComments.Create(Application);
  try
    ResizeFormToFont(TForm(frmWardComments));
    with frmWardComments do
    begin
      memOrder.SetTextBuf(PChar(AnOrder.Text));
      LoadWardComments(memComments.Lines, AnOrder.ID);
      ShowModal;
      if OKPressed then
      begin
        PutWardComments(memComments.Lines, AnOrder.ID, ErrMsg);
        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TC_PUT_ERR, MB_OK);
        Result := True;
      end;
    end;
  finally
    frmWardComments.Release;
  end;
end;

procedure TfrmWardComments.FormCreate(Sender: TObject);
begin
  inherited;
  OKPressed := False;
end;

procedure TfrmWardComments.cmdOKClick(Sender: TObject);
begin
  inherited;
  OKPressed := True;
  Close;
end;

procedure TfrmWardComments.cmdCancelClick(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfrmWardComments.memCommentsKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if (Key = VK_TAB) then
  begin
    if ssShift in Shift then
    begin
      FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
      Key := 0;
    end
    else if ssCtrl	in Shift then
    begin
      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
      Key := 0;
    end;
  end;
  if (key = VK_ESCAPE) then begin
    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
    key := 0;
  end;
end;

end.
