| 1 | unit fOtherSchedule;
 | 
|---|
| 2 | 
 | 
|---|
| 3 | interface
 | 
|---|
| 4 | 
 | 
|---|
| 5 | uses
 | 
|---|
| 6 |   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 | 
|---|
| 7 |   Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, fAutoSz, rMisc, ORCtrls, rODMeds,
 | 
|---|
| 8 |   VA508AccessibilityManager, VAUtils;
 | 
|---|
| 9 | 
 | 
|---|
| 10 | const
 | 
|---|
| 11 |   NSS_TXT = 'This order will not become active until a valid schedule is used.';
 | 
|---|
| 12 | 
 | 
|---|
| 13 | type
 | 
|---|
| 14 |   TfrmOtherSchedule = class(TfrmAutoSz)
 | 
|---|
| 15 |     Panel1: TPanel;
 | 
|---|
| 16 |     Image1: TImage;
 | 
|---|
| 17 |     Panel3: TPanel;
 | 
|---|
| 18 |     GroupBox1: TGroupBox;
 | 
|---|
| 19 |     cbo7: TCheckBox;
 | 
|---|
| 20 |     cbo1: TCheckBox;
 | 
|---|
| 21 |     cbo2: TCheckBox;
 | 
|---|
| 22 |     cbo3: TCheckBox;
 | 
|---|
| 23 |     cbo4: TCheckBox;
 | 
|---|
| 24 |     cbo5: TCheckBox;
 | 
|---|
| 25 |     cbo6: TCheckBox;
 | 
|---|
| 26 |     GroupBox2: TGroupBox;
 | 
|---|
| 27 |     lstHour: TListBox;
 | 
|---|
| 28 |     lstMinute: TListBox;
 | 
|---|
| 29 |     Panel4: TPanel;
 | 
|---|
| 30 |     btn0k1: TButton;
 | 
|---|
| 31 |     btnCancel: TButton;
 | 
|---|
| 32 |     Label1: TLabel;
 | 
|---|
| 33 |     btnReset: TButton;
 | 
|---|
| 34 |     btnRemove: TButton;
 | 
|---|
| 35 |     memMessage: TMemo;
 | 
|---|
| 36 |     Splitter1: TSplitter;
 | 
|---|
| 37 |     btnAdd: TButton;
 | 
|---|
| 38 |     Button1: TButton;
 | 
|---|
| 39 |     GroupBox3: TGroupBox;
 | 
|---|
| 40 |     NSScboSchedule: TORComboBox;
 | 
|---|
| 41 |     btnSchAdd: TButton;
 | 
|---|
| 42 |     btnSchRemove: TButton;
 | 
|---|
| 43 |     txtSchedule: TEdit;
 | 
|---|
| 44 |     procedure FormCreate(Sender: TObject);
 | 
|---|
| 45 |     procedure btnCancelClick(Sender: TObject);
 | 
|---|
| 46 |     procedure btn0k1Click(Sender: TObject);
 | 
|---|
| 47 |     procedure cbo7Click(Sender: TObject);
 | 
|---|
| 48 |     procedure cbo1Click(Sender: TObject);
 | 
|---|
| 49 |     procedure cbo2Click(Sender: TObject);
 | 
|---|
| 50 |     procedure cbo3Click(Sender: TObject);
 | 
|---|
| 51 |     procedure cbo4Click(Sender: TObject);
 | 
|---|
| 52 |     procedure cbo5Click(Sender: TObject);
 | 
|---|
| 53 |     procedure cbo6Click(Sender: TObject);
 | 
|---|
| 54 |     procedure btnAddClick(Sender: TObject);
 | 
|---|
| 55 |     procedure btnResetClick(Sender: TObject);
 | 
|---|
| 56 |     procedure btnRemoveClick(Sender: TObject);
 | 
|---|
| 57 |     procedure FormClose(Sender: TObject; var Action: TCloseAction);
 | 
|---|
| 58 |     procedure lstHourClick(Sender: TObject);
 | 
|---|
| 59 |     procedure txtScheduleChange(Sender: TObject);
 | 
|---|
| 60 |     procedure lstMinuteMouseUp(Sender: TObject; Button: TMouseButton;
 | 
|---|
| 61 |       Shift: TShiftState; X, Y: Integer);
 | 
|---|
| 62 |     procedure lstMinuteKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
| 63 |       Shift: TShiftState);
 | 
|---|
| 64 |     procedure Button1Click(Sender: TObject);
 | 
|---|
| 65 |     procedure btnSchAddClick(Sender: TObject);
 | 
|---|
| 66 |     procedure btnSchRemoveClick(Sender: TObject);
 | 
|---|
| 67 |     procedure FormDestroy(Sender: TObject);
 | 
|---|
| 68 |   private
 | 
|---|
| 69 |     FDaySchedule: array [1..7] of string;
 | 
|---|
| 70 |     FTimeSchedule: TStringList;
 | 
|---|
| 71 |     FSchedule: String;
 | 
|---|
| 72 |     FOtherSchedule: String;
 | 
|---|
| 73 |     FFromCheckBox: boolean;
 | 
|---|
| 74 |     FFromEditBox: boolean;
 | 
|---|
| 75 |     function GetSiteMessage: string;
 | 
|---|
| 76 |     procedure SetDaySchedule(Sender: TObject);
 | 
|---|
| 77 |     procedure SetTimeSchedule;
 | 
|---|
| 78 |     procedure SetScheduleSelection;
 | 
|---|
| 79 |     procedure UpdateOnFreeTextInput;
 | 
|---|
| 80 |     procedure EnabledTime(TF: boolean);
 | 
|---|
| 81 |     procedure EnabledSch(TF: boolean);
 | 
|---|
| 82 |     function CheckDay(ADayStr: string): string;
 | 
|---|
| 83 |     
 | 
|---|
| 84 |   public
 | 
|---|
| 85 |   end;
 | 
|---|
| 86 | 
 | 
|---|
| 87 | function ShowOtherSchedule(var ASchedule: string): boolean;
 | 
|---|
| 88 | 
 | 
|---|
| 89 | var
 | 
|---|
| 90 |    frmOtherSchedule: TfrmOtherSchedule;
 | 
|---|
| 91 | 
 | 
|---|
| 92 | implementation
 | 
|---|
| 93 | 
 | 
|---|
| 94 | uses ORFn, ORNet, rOrders;
 | 
|---|
| 95 | {$R *.dfm}
 | 
|---|
| 96 | 
 | 
|---|
| 97 | function ShowOtherSchedule(var ASchedule: string):
 | 
|---|
| 98 | 
 | 
|---|
| 99 | boolean;
 | 
|---|
| 100 | var
 | 
|---|
| 101 | 
 | 
|---|
| 102 |   AdminTime, SchType: string;
 | 
|---|
| 103 | begin
 | 
|---|
| 104 |   Result := False;
 | 
|---|
| 105 |   try
 | 
|---|
| 106 |    ASchedule := '';
 | 
|---|
| 107 |    frmOtherSchedule := TfrmOtherSchedule.Create(Application);
 | 
|---|
| 108 |    ResizeFormToFont(TForm(frmOtherSchedule));
 | 
|---|
| 109 |    SetFormPosition(frmOtherSchedule);
 | 
|---|
| 110 |    if frmOtherSchedule.ShowModal = mrOK then
 | 
|---|
| 111 |    begin
 | 
|---|
| 112 |      ASchedule := UpperCase(frmOtherSchedule.FOtherSchedule);
 | 
|---|
| 113 |      if frmOtherSchedule.GroupBox3.Enabled = True then
 | 
|---|
| 114 |        begin
 | 
|---|
| 115 |          AdminTime := Piece(frmOtherSchedule.NSScboSchedule.Items.Strings[frmOtherSchedule.NSScboSchedule.itemindex],U,4);
 | 
|---|
| 116 |          schType := Piece(frmOtherSchedule.NSScboSchedule.Items.Strings[frmOtherSchedule.NSScboSchedule.itemindex],U,3);
 | 
|---|
| 117 |          ASchedule := ASchedule + U + AdminTime + U + schType;
 | 
|---|
| 118 |          //if (schType = 'P') or (schType = 'OC') then ASchedule := ASchedule + U + '1'
 | 
|---|
| 119 |          //else ASchedule := ASchedule + U + '0';
 | 
|---|
| 120 |        end
 | 
|---|
| 121 |      else if frmOtherSchedule.GroupBox2.Enabled = true then
 | 
|---|
| 122 |        begin
 | 
|---|
| 123 |          AdminTime := Piece(ASchedule,'@',2);
 | 
|---|
| 124 |          ASchedule := ASchedule + U + AdminTime + U + 'C';
 | 
|---|
| 125 |        end;
 | 
|---|
| 126 |      Result := True;
 | 
|---|
| 127 |    end;
 | 
|---|
| 128 |   except
 | 
|---|
| 129 |    ShowMsg('Error happen when building other schedule');
 | 
|---|
| 130 |   end;
 | 
|---|
| 131 | end;
 | 
|---|
| 132 | 
 | 
|---|
| 133 | 
 | 
|---|
| 134 | procedure TfrmOtherSchedule.FormCreate(Sender: TObject);
 | 
|---|
| 135 | var
 | 
|---|
| 136 |   i: integer;
 | 
|---|
| 137 |   nssMsg: string;
 | 
|---|
| 138 | begin
 | 
|---|
| 139 |   frmOtherSchedule := nil;
 | 
|---|
| 140 |   FFromCheckBox := False;
 | 
|---|
| 141 |   FFromEditBox := False;
 | 
|---|
| 142 |   image1.Picture.Icon.Handle := LoadIcon(0, IDI_WARNING);
 | 
|---|
| 143 |   for i := 1 to 7 do
 | 
|---|
| 144 |    FDaySchedule[i] := '';
 | 
|---|
| 145 |   FTimeSchedule := TStringlist.Create;
 | 
|---|
| 146 |   FSchedule := '';
 | 
|---|
| 147 |   FOtherSchedule := '';
 | 
|---|
| 148 |   nssMsg := GetSiteMessage;
 | 
|---|
| 149 |   if Length(nssMsg)< 1 then
 | 
|---|
| 150 |     nssMsg := NSS_TXT;
 | 
|---|
| 151 |   memMessage.Lines.Add(nssMsg);
 | 
|---|
| 152 |   LoadDOWSchedules(NSScboSchedule.Items);
 | 
|---|
| 153 |   if ScreenReaderActive = false then txtSchedule.TabStop := false;
 | 
|---|
| 154 | 
 | 
|---|
| 155 | end;
 | 
|---|
| 156 | 
 | 
|---|
| 157 | procedure TfrmOtherSchedule.FormDestroy(Sender: TObject);
 | 
|---|
| 158 | begin
 | 
|---|
| 159 |   inherited;
 | 
|---|
| 160 |     //FDaySchedule
 | 
|---|
| 161 |     FTimeSchedule.Free;
 | 
|---|
| 162 |     frmOtherSchedule := nil;
 | 
|---|
| 163 |     //FSchedule: String;
 | 
|---|
| 164 |     //FOtherSchedule: String;
 | 
|---|
| 165 | end;
 | 
|---|
| 166 | 
 | 
|---|
| 167 | procedure TfrmOtherSchedule.btnCancelClick(Sender: TObject);
 | 
|---|
| 168 | begin
 | 
|---|
| 169 |   frmOtherSchedule.Release;
 | 
|---|
| 170 | end;
 | 
|---|
| 171 | 
 | 
|---|
| 172 | procedure TfrmOtherSchedule.btn0k1Click(Sender: TObject);
 | 
|---|
| 173 | begin
 | 
|---|
| 174 |   if (cbo1.Checked = false) and (cbo2.Checked = false) and (cbo3.Checked = false) and (cbo4.Checked = false) and (cbo5.Checked = false) and
 | 
|---|
| 175 |     (cbo6.Checked = false) and (cbo7.Checked = false) then
 | 
|---|
| 176 |     begin
 | 
|---|
| 177 |       ShowMsg('A day of week must be selected!');
 | 
|---|
| 178 |       Exit;
 | 
|---|
| 179 |     end;
 | 
|---|
| 180 |   if Pos('@', self.txtSchedule.Text) = 0 then
 | 
|---|
| 181 |     begin
 | 
|---|
| 182 |       ShowMsg('An Administation Time or a schedule needs to be selected');
 | 
|---|
| 183 |       exit;
 | 
|---|
| 184 |     end;
 | 
|---|
| 185 | (*  if not IsValidSchStr(FOtherSchedule) then
 | 
|---|
| 186 |   begin
 | 
|---|
| 187 |     Show508Message('The schedule you entered is invalid!');
 | 
|---|
| 188 |     Exit;
 | 
|---|
| 189 |   end;  *)
 | 
|---|
| 190 |   modalResult := mrOK;
 | 
|---|
| 191 | end;
 | 
|---|
| 192 | 
 | 
|---|
| 193 | procedure TfrmOtherSchedule.SetDaySchedule(Sender: TObject);
 | 
|---|
| 194 | var
 | 
|---|
| 195 |   i : integer;
 | 
|---|
| 196 |   TimePart, DayPart, Schedule: string;
 | 
|---|
| 197 | begin
 | 
|---|
| 198 |   with (Sender as TCheckBox) do
 | 
|---|
| 199 |   begin
 | 
|---|
| 200 |     try
 | 
|---|
| 201 |       if TCheckBox(Sender).Checked then
 | 
|---|
| 202 |         FDaySchedule[TCheckBox(Sender).Tag] := Copy(TCheckBox(Sender).Caption,0,2)
 | 
|---|
| 203 |       else
 | 
|---|
| 204 |         FDaySchedule[TCheckBox(Sender).Tag] := '';
 | 
|---|
| 205 |     except
 | 
|---|
| 206 |       ShowMsg('Error happened when building day schedule.');
 | 
|---|
| 207 |       Exit;
 | 
|---|
| 208 |     end;
 | 
|---|
| 209 |   end;
 | 
|---|
| 210 | 
 | 
|---|
| 211 |   TimePart := '';
 | 
|---|
| 212 |   DayPart := '';
 | 
|---|
| 213 |   schedule := '';
 | 
|---|
| 214 |   if Self.GroupBox2.Enabled = True then
 | 
|---|
| 215 |     begin
 | 
|---|
| 216 |         for i := 0 to FTimeSchedule.Count - 1 do
 | 
|---|
| 217 |           begin
 | 
|---|
| 218 |             if i = 0 then TimePart := TimePart + FTimeSchedule[i]
 | 
|---|
| 219 |             else TimePart := TimePart + '-' + FTimeSchedule[i];
 | 
|---|
| 220 |           end;
 | 
|---|
| 221 |     end;
 | 
|---|
| 222 |   if (self.GroupBox3.Enabled = True) and (FSchedule <> '') then schedule := FSchedule;
 | 
|---|
| 223 |   for i := Low(FDaySchedule) to High(FDaySchedule) do
 | 
|---|
| 224 |   begin
 | 
|---|
| 225 |     if Length(FDaySchedule[i])>0 then
 | 
|---|
| 226 |     begin
 | 
|---|
| 227 |       if DayPart = '' then DayPart := FDaySchedule[i]
 | 
|---|
| 228 |       else DayPart := DayPart + '-' + FDaySchedule[i];
 | 
|---|
| 229 |     end;
 | 
|---|
| 230 |   end;
 | 
|---|
| 231 |   if Length(TimePart) > 0 then
 | 
|---|
| 232 |   begin
 | 
|---|
| 233 |     if Length(DayPart) > 0 then
 | 
|---|
| 234 |       FOtherSchedule := DayPart + '@' + TimePart
 | 
|---|
| 235 |     else if Length(DayPart) = 0 then
 | 
|---|
| 236 |       FOtherSchedule := TimePart;
 | 
|---|
| 237 |   end
 | 
|---|
| 238 |   else if Length(schedule) > 0 then
 | 
|---|
| 239 |     begin
 | 
|---|
| 240 |       if length(DayPart) > 0 then
 | 
|---|
| 241 |       FOtherSchedule := DayPart + '@' + Schedule
 | 
|---|
| 242 |     else if Length(DayPart) = 0 then
 | 
|---|
| 243 |       FOtherSchedule := Schedule;
 | 
|---|
| 244 |     end
 | 
|---|
| 245 |   else FOtherSchedule := DayPart;
 | 
|---|
| 246 |   txtSchedule.Text := FOtherSchedule;
 | 
|---|
| 247 | end;
 | 
|---|
| 248 | 
 | 
|---|
| 249 | 
 | 
|---|
| 250 | procedure TfrmOtherSchedule.SetScheduleSelection;
 | 
|---|
| 251 | var
 | 
|---|
| 252 |   i: integer;
 | 
|---|
| 253 |   DayPart: string;
 | 
|---|
| 254 | begin
 | 
|---|
| 255 |   DayPart := '';
 | 
|---|
| 256 |   for i := Low(FDaySchedule) to High(FDaySchedule) do
 | 
|---|
| 257 |   begin
 | 
|---|
| 258 |     if Length(FDaySchedule[i])>0 then
 | 
|---|
| 259 |     begin
 | 
|---|
| 260 |       if DayPart = '' then DayPart := FDaySchedule[i]
 | 
|---|
| 261 |       else DayPart := DayPart + '-' + FDaySchedule[i];
 | 
|---|
| 262 |     end;
 | 
|---|
| 263 |   end;
 | 
|---|
| 264 |   if Length(DayPart) > 0 then
 | 
|---|
| 265 |   begin
 | 
|---|
| 266 |     if FSchedule <> '' then
 | 
|---|
| 267 |       FOtherSchedule := DayPart + '@' + FSchedule
 | 
|---|
| 268 |     else
 | 
|---|
| 269 |       FOtherSchedule := DayPart;
 | 
|---|
| 270 |   end
 | 
|---|
| 271 |   else FOtherSchedule := FSchedule;
 | 
|---|
| 272 |   //if Length(APRN) > 0 then FOtherSchedule := FOtherSchedule;
 | 
|---|
| 273 |   txtSchedule.Text := FOtherSchedule;
 | 
|---|
| 274 | end;
 | 
|---|
| 275 | 
 | 
|---|
| 276 | procedure TfrmOtherSchedule.SetTimeSchedule;
 | 
|---|
| 277 | var
 | 
|---|
| 278 |   i : integer;
 | 
|---|
| 279 |   TimePart, DayPart,APRN,ASearchTxt: string;
 | 
|---|
| 280 | begin
 | 
|---|
| 281 |   TimePart := '';
 | 
|---|
| 282 |   DayPart := '';
 | 
|---|
| 283 |   APRN := '';
 | 
|---|
| 284 |   ASearchTxt := UpperCase(txtSchedule.Text);
 | 
|---|
| 285 |   if StrPos(PChar(ASearchTxt),PChar('PRN')) <> nil then APRN := ' PRN'; //hds8326 retain PRN free text if data time entered
 | 
|---|
| 286 |   for i := 0 to FTimeSchedule.Count - 1 do
 | 
|---|
| 287 |   begin
 | 
|---|
| 288 |     if i = 0 then TimePart := TimePart + FTimeSchedule[i]
 | 
|---|
| 289 |     else TimePart := TimePart + '-' + FTimeSchedule[i];
 | 
|---|
| 290 |   end;
 | 
|---|
| 291 |   for i := Low(FDaySchedule) to High(FDaySchedule) do
 | 
|---|
| 292 |   begin
 | 
|---|
| 293 |     if Length(FDaySchedule[i])>0 then
 | 
|---|
| 294 |     begin
 | 
|---|
| 295 |       if DayPart = '' then DayPart := FDaySchedule[i]
 | 
|---|
| 296 |       else DayPart := DayPart + '-' + FDaySchedule[i];
 | 
|---|
| 297 |     end;
 | 
|---|
| 298 |   end;
 | 
|---|
| 299 |   if Length(DayPart) > 0 then
 | 
|---|
| 300 |   begin
 | 
|---|
| 301 |     if Length(TimePart) > 0 then
 | 
|---|
| 302 |       FOtherSchedule := DayPart + '@' + TimePart
 | 
|---|
| 303 |     else
 | 
|---|
| 304 |       FOtherSchedule := DayPart;
 | 
|---|
| 305 |   end
 | 
|---|
| 306 |   else FOtherSchedule := TimePart;
 | 
|---|
| 307 |   if Length(APRN) > 0 then FOtherSchedule := FOtherSchedule + APRN; //hds8326 retain PRN free text if data time entered
 | 
|---|
| 308 |   txtSchedule.Text := FOtherSchedule;
 | 
|---|
| 309 | end;
 | 
|---|
| 310 | 
 | 
|---|
| 311 | procedure TfrmOtherSchedule.cbo7Click(Sender: TObject);
 | 
|---|
| 312 | begin
 | 
|---|
| 313 |   FFromCheckBox := True;
 | 
|---|
| 314 |   if not FFromEditBox then
 | 
|---|
| 315 |     SetDaySchedule(Sender);
 | 
|---|
| 316 |   FFromCheckBox := False;
 | 
|---|
| 317 | end;
 | 
|---|
| 318 | 
 | 
|---|
| 319 | procedure TfrmOtherSchedule.cbo1Click(Sender: TObject);
 | 
|---|
| 320 | begin
 | 
|---|
| 321 |   FFromCheckBox := True;
 | 
|---|
| 322 |   if not FFromEditBox then
 | 
|---|
| 323 |     SetDaySchedule(Sender);
 | 
|---|
| 324 |   FFromCheckBox := False;
 | 
|---|
| 325 | end;
 | 
|---|
| 326 | 
 | 
|---|
| 327 | procedure TfrmOtherSchedule.cbo2Click(Sender: TObject);
 | 
|---|
| 328 | begin
 | 
|---|
| 329 |   FFromCheckBox := True;
 | 
|---|
| 330 |   if not FFromEditBox then
 | 
|---|
| 331 |     SetDaySchedule(Sender);
 | 
|---|
| 332 |   FFromCheckBox := False;
 | 
|---|
| 333 | end;
 | 
|---|
| 334 | 
 | 
|---|
| 335 | procedure TfrmOtherSchedule.cbo3Click(Sender: TObject);
 | 
|---|
| 336 | begin
 | 
|---|
| 337 |   FFromCheckBox := True;
 | 
|---|
| 338 |   if not FFromEditBox then
 | 
|---|
| 339 |     SetDaySchedule(Sender);
 | 
|---|
| 340 |   FFromCheckBox := False;
 | 
|---|
| 341 | end;
 | 
|---|
| 342 | 
 | 
|---|
| 343 | procedure TfrmOtherSchedule.cbo4Click(Sender: TObject);
 | 
|---|
| 344 | begin
 | 
|---|
| 345 |   FFromCheckBox := True;
 | 
|---|
| 346 |   if not FFromEditBox then
 | 
|---|
| 347 |     SetDaySchedule(Sender);
 | 
|---|
| 348 |   FFromCheckBox := False;
 | 
|---|
| 349 | end;
 | 
|---|
| 350 | 
 | 
|---|
| 351 | procedure TfrmOtherSchedule.cbo5Click(Sender: TObject);
 | 
|---|
| 352 | begin
 | 
|---|
| 353 |   FFromCheckBox := True;
 | 
|---|
| 354 |   if not FFromEditBox then
 | 
|---|
| 355 |     SetDaySchedule(Sender);
 | 
|---|
| 356 |   FFromCheckBox := False;
 | 
|---|
| 357 | end;
 | 
|---|
| 358 | 
 | 
|---|
| 359 | procedure TfrmOtherSchedule.cbo6Click(Sender: TObject);
 | 
|---|
| 360 | begin
 | 
|---|
| 361 |   FFromCheckBox := True;
 | 
|---|
| 362 |   if not FFromEditBox then
 | 
|---|
| 363 |     SetDaySchedule(Sender);
 | 
|---|
| 364 |   FFromCheckBox := False;
 | 
|---|
| 365 | end;
 | 
|---|
| 366 | 
 | 
|---|
| 367 | procedure TfrmOtherSchedule.btnAddClick(Sender: TObject);
 | 
|---|
| 368 | var
 | 
|---|
| 369 |   hour, min: string;
 | 
|---|
| 370 | begin
 | 
|---|
| 371 |   if FSchedule <> '' then Exit;
 | 
|---|
| 372 |   if lstHour.ItemIndex < 0 then exit;
 | 
|---|
| 373 |   hour := lstHour.Items[lstHour.ItemIndex];
 | 
|---|
| 374 |   hour := Trim(Copy(hour,1,3));
 | 
|---|
| 375 |   if length(Trim(hour)) = 1 then
 | 
|---|
| 376 |     hour := '0' + Trim(hour);
 | 
|---|
| 377 |   if lstMinute.ItemIndex >= 0 then
 | 
|---|
| 378 |   begin
 | 
|---|
| 379 |     min := lstMinute.Items[lstMinute.itemIndex];
 | 
|---|
| 380 |     min := Copy(min,2,2);
 | 
|---|
| 381 |   end;
 | 
|---|
| 382 |   if min = '' then min := '00';
 | 
|---|
| 383 |   if (hour='00') and (min='00') then hour := '24';
 | 
|---|
| 384 |   if FTimeSchedule.IndexOf(hour)>=0 then
 | 
|---|
| 385 |   begin
 | 
|---|
| 386 |     FTimeSchedule[FTimeSchedule.IndexOf(hour)] := hour + min;
 | 
|---|
| 387 |   end;
 | 
|---|
| 388 |   if FTimeSchedule.IndexOf(hour+min) < 0 then
 | 
|---|
| 389 |     FTimeSchedule.Add(hour+min);
 | 
|---|
| 390 |   FTimeSchedule.Sort;
 | 
|---|
| 391 |   SetTimeSchedule;
 | 
|---|
| 392 |   if FTimeSchedule.Count > 0 then EnabledSch(False);
 | 
|---|
| 393 | end;
 | 
|---|
| 394 | 
 | 
|---|
| 395 | procedure TfrmOtherSchedule.btnResetClick(Sender: TObject);
 | 
|---|
| 396 | var
 | 
|---|
| 397 |   i : integer;
 | 
|---|
| 398 | begin
 | 
|---|
| 399 |   cbo1.Checked := false;
 | 
|---|
| 400 |   cbo2.Checked := false;
 | 
|---|
| 401 |   cbo3.Checked:= false;
 | 
|---|
| 402 |   cbo4.Checked := false;
 | 
|---|
| 403 |   cbo5.Checked := false;
 | 
|---|
| 404 |   cbo6.Checked := false;
 | 
|---|
| 405 |   cbo7.Checked := false;
 | 
|---|
| 406 |   lstHour.ItemIndex := -1;
 | 
|---|
| 407 |   lstMinute.ItemIndex := -1;
 | 
|---|
| 408 |   NSScboSchedule.ItemIndex := -1;
 | 
|---|
| 409 |   for i := low(FDaySchedule) to high(FDaySchedule) do
 | 
|---|
| 410 |     FDaySchedule[i] := '';
 | 
|---|
| 411 |   FTimeSchedule.Clear;
 | 
|---|
| 412 |   FOtherSchedule := '';
 | 
|---|
| 413 |   txtSchedule.Text := '';
 | 
|---|
| 414 |   FSchedule := '';
 | 
|---|
| 415 |   EnabledTime(True);
 | 
|---|
| 416 |   EnabledSch(True);
 | 
|---|
| 417 | end;
 | 
|---|
| 418 | 
 | 
|---|
| 419 | procedure TfrmOtherSchedule.btnSchAddClick(Sender: TObject);
 | 
|---|
| 420 | begin
 | 
|---|
| 421 |   inherited;
 | 
|---|
| 422 |   if self.NSScboSchedule.ItemIndex < 0 then Exit;
 | 
|---|
| 423 |   if FSchedule <> '' then
 | 
|---|
| 424 |     begin
 | 
|---|
| 425 |       infoBox('A Day-of-week schedule can only contain one schedule','Warning',MB_OK);
 | 
|---|
| 426 |       Exit;
 | 
|---|
| 427 |     end;
 | 
|---|
| 428 |   FSchedule := self.NSScboSchedule.Text;
 | 
|---|
| 429 |   SetScheduleSelection;
 | 
|---|
| 430 |   Self.NSScboSchedule.Enabled := False;
 | 
|---|
| 431 |   EnabledTime(False);
 | 
|---|
| 432 | end;
 | 
|---|
| 433 | 
 | 
|---|
| 434 | procedure TfrmOtherSchedule.btnSchRemoveClick(Sender: TObject);
 | 
|---|
| 435 | begin
 | 
|---|
| 436 |   inherited;
 | 
|---|
| 437 |   if (FSchedule = '') or (self.NSScboSchedule.ItemIndex < 0) then exit;
 | 
|---|
| 438 |   if self.NSScboSchedule.Text <> FSchedule then exit;
 | 
|---|
| 439 |   Fschedule := '';
 | 
|---|
| 440 |   SetScheduleSelection;
 | 
|---|
| 441 |   self.NSScboSchedule.Enabled := True;
 | 
|---|
| 442 |   EnabledTime(True);
 | 
|---|
| 443 | end;
 | 
|---|
| 444 | 
 | 
|---|
| 445 | procedure TfrmOtherSchedule.btnRemoveClick(Sender: TObject);
 | 
|---|
| 446 | var
 | 
|---|
| 447 |   hour, min: string;
 | 
|---|
| 448 |   idx : integer;
 | 
|---|
| 449 | begin
 | 
|---|
| 450 |   FFromCheckBox := True;
 | 
|---|
| 451 |   if lstHour.ItemIndex >= 0 then
 | 
|---|
| 452 |   begin
 | 
|---|
| 453 |     hour := lstHour.Items[lstHour.ItemIndex];
 | 
|---|
| 454 |     hour := Trim(Copy(hour,1,3));
 | 
|---|
| 455 |     if length(hour) = 1 then
 | 
|---|
| 456 |       hour := '0' + Trim(hour);
 | 
|---|
| 457 |   end;
 | 
|---|
| 458 |   if lstMinute.ItemIndex >= 0 then
 | 
|---|
| 459 |   begin
 | 
|---|
| 460 |     min := lstMinute.Items[lstMinute.itemIndex];
 | 
|---|
| 461 |     min := Copy(min,2,2);
 | 
|---|
| 462 |   end;
 | 
|---|
| 463 |   if min = '' then min := '00';
 | 
|---|
| 464 |   if (hour='00') and (min='00') then hour := '24';
 | 
|---|
| 465 |   idx := FTimeSchedule.IndexOf(hour+min);
 | 
|---|
| 466 |   if idx > -1 then
 | 
|---|
| 467 |     FTimeSchedule.Delete(idx);
 | 
|---|
| 468 |   FTimeSchedule.Sort;
 | 
|---|
| 469 |   SetTimeSchedule;
 | 
|---|
| 470 |   FFromCheckBox := False;
 | 
|---|
| 471 |   if FTimeSchedule.Count = 0 then EnabledSch(True);
 | 
|---|
| 472 | end;
 | 
|---|
| 473 | 
 | 
|---|
| 474 | function TfrmOtherSchedule.GetSiteMessage: string;
 | 
|---|
| 475 | var
 | 
|---|
| 476 |   i: integer;
 | 
|---|
| 477 |   rstStr: string;
 | 
|---|
| 478 | begin
 | 
|---|
| 479 |   rstStr := '';
 | 
|---|
| 480 |   CallV('ORWNSS NSSMSG',[nil]);
 | 
|---|
| 481 |   for i := 0 to RPCBrokerV.Results.Count - 1 do
 | 
|---|
| 482 |     rstStr := rstStr + RPCBrokerV.Results[i];
 | 
|---|
| 483 |   Result := rstStr;
 | 
|---|
| 484 | end;
 | 
|---|
| 485 | 
 | 
|---|
| 486 | procedure TfrmOtherSchedule.FormClose(Sender: TObject;
 | 
|---|
| 487 |   var Action: TCloseAction);
 | 
|---|
| 488 | begin
 | 
|---|
| 489 |   try
 | 
|---|
| 490 |     inherited;
 | 
|---|
| 491 |     SaveUserBounds(Self);
 | 
|---|
| 492 |     Action := caFree;
 | 
|---|
| 493 |   except
 | 
|---|
| 494 |     Action := caFree;
 | 
|---|
| 495 |   end;
 | 
|---|
| 496 |   //frmOtherSchedule := nil;
 | 
|---|
| 497 | end;
 | 
|---|
| 498 | 
 | 
|---|
| 499 | procedure TfrmOtherSchedule.UpdateOnFreeTextInput;
 | 
|---|
| 500 | var
 | 
|---|
| 501 |   dayStr,timeStr: string;
 | 
|---|
| 502 |   dayList: TStringList;
 | 
|---|
| 503 |   i,Code,cnt : integer;
 | 
|---|
| 504 |   OrigSch: string;
 | 
|---|
| 505 | 
 | 
|---|
| 506 |   procedure updateCheckbox(aDList: TStringList);
 | 
|---|
| 507 |   var
 | 
|---|
| 508 |     idx: integer;
 | 
|---|
| 509 |     x: string;
 | 
|---|
| 510 |   begin
 | 
|---|
| 511 |     for idx := aDList.Count - 1 downto 0 do
 | 
|---|
| 512 |     begin
 | 
|---|
| 513 |     // cq hds8326 PRN entered manually split PRN from DOW to retain last DOW
 | 
|---|
| 514 |       x := UpperCase(aDList.Strings[idx]); // added to properly process DOW when followed by a space "PRN".
 | 
|---|
| 515 |       if Piece(x,' ',2) = 'PRN' then
 | 
|---|
| 516 |          aDLIst.Strings[idx] := Piece(x,' ',1);
 | 
|---|
| 517 |     // cq hds8326
 | 
|---|
| 518 |       if ((CheckDay(aDList[idx]) = 'SUN') or (CheckDay(aDList[idx]) = 'SU')) then
 | 
|---|
| 519 |         begin
 | 
|---|
| 520 |           cbo7.Checked := true;
 | 
|---|
| 521 |           aDList[idx] := 'SU';
 | 
|---|
| 522 |           FDaySchedule[cbo7.tag] := 'SU';
 | 
|---|
| 523 |         end
 | 
|---|
| 524 |       else if ((CheckDay(aDList[idx]) = 'MON') or (CheckDay(aDList[idx]) = 'MO')) then
 | 
|---|
| 525 |         begin
 | 
|---|
| 526 |           cbo1.Checked := true;
 | 
|---|
| 527 |           aDList[idx] := 'MO';
 | 
|---|
| 528 |           FDaySchedule[cbo1.tag] := 'MO';
 | 
|---|
| 529 |         end
 | 
|---|
| 530 |       else if ((CheckDay(aDList[idx]) = 'TUE') or (CheckDay(aDList[idx]) = 'TU')) then
 | 
|---|
| 531 |         begin
 | 
|---|
| 532 |           cbo2.Checked := true;
 | 
|---|
| 533 |           aDList[idx] := 'TU';
 | 
|---|
| 534 |           FDaySchedule[cbo2.tag] := 'TU';
 | 
|---|
| 535 |         end
 | 
|---|
| 536 |       else if ((CheckDay(aDList[idx]) = 'WED') or (CheckDay(aDList[idx]) = 'WE')) then
 | 
|---|
| 537 |         begin
 | 
|---|
| 538 |           cbo3.Checked := true;
 | 
|---|
| 539 |           aDList[idx] := 'WE';
 | 
|---|
| 540 |           FDaySchedule[cbo3.tag] := 'WE';
 | 
|---|
| 541 |         end
 | 
|---|
| 542 |       else if ((CheckDay(aDList[idx]) = 'THU') or (CheckDay(aDList[idx]) = 'TH')) then
 | 
|---|
| 543 |         begin
 | 
|---|
| 544 |           cbo4.Checked := true;
 | 
|---|
| 545 |           aDList[idx] := 'TH';
 | 
|---|
| 546 |           FDaySchedule[cbo4.tag] := 'TH';
 | 
|---|
| 547 |         end
 | 
|---|
| 548 |       else if ((CheckDay(aDList[idx]) = 'FRI') or (CheckDay(aDList[idx]) = 'FR')) then
 | 
|---|
| 549 |         begin
 | 
|---|
| 550 |           cbo5.Checked := true;
 | 
|---|
| 551 |           aDList[idx] := 'FR';
 | 
|---|
| 552 |           FDaySchedule[cbo5.tag] := 'FR';
 | 
|---|
| 553 |         end
 | 
|---|
| 554 |       else if ((CheckDay(aDList[idx]) = 'SAT') or (CheckDay(aDList[idx]) = 'SA')) then
 | 
|---|
| 555 |         begin
 | 
|---|
| 556 |           cbo6.Checked := true;
 | 
|---|
| 557 |           aDList[idx] := 'SA';
 | 
|---|
| 558 |           FDaySchedule[cbo6.tag] := 'SA';
 | 
|---|
| 559 |         end
 | 
|---|
| 560 |       else aDList.Delete(idx);
 | 
|---|
| 561 |     end;
 | 
|---|
| 562 |   end;
 | 
|---|
| 563 | 
 | 
|---|
| 564 | begin
 | 
|---|
| 565 |   inherited;
 | 
|---|
| 566 |   dayStr  := '';
 | 
|---|
| 567 |   timeStr := '';
 | 
|---|
| 568 |   if Length (txtSchedule.Text) = 0 then
 | 
|---|
| 569 |   begin
 | 
|---|
| 570 |     FOtherSchedule := '';
 | 
|---|
| 571 |     btnReset.Click;
 | 
|---|
| 572 |     Exit;
 | 
|---|
| 573 |   end;
 | 
|---|
| 574 |   OrigSch := txtSchedule.Text;
 | 
|---|
| 575 |   dayList  := TStringList.Create;
 | 
|---|
| 576 |   if Pos('@',txtSchedule.Text)>0 then
 | 
|---|
| 577 |   begin
 | 
|---|
| 578 |     dayStr  := Trim(Piece(txtSchedule.Text,'@',1));
 | 
|---|
| 579 |     timeStr := Trim(Piece(txtSchedule.Text,'@',2));
 | 
|---|
| 580 |   end  else
 | 
|---|
| 581 |   begin
 | 
|---|
| 582 |     Val(Piece(txtSchedule.Text,'-',1), i, Code);
 | 
|---|
| 583 |     if i = 0 then begin end;  // just to make compiler not give hint
 | 
|---|
| 584 |     if Code <> 0 then dayStr := Trim(txtSchedule.Text)
 | 
|---|
| 585 |     else timeStr := Trim(txtSchedule.Text);
 | 
|---|
| 586 |   end;
 | 
|---|
| 587 |   FTimeSchedule.Clear;
 | 
|---|
| 588 |   for cnt := Low(FDaySchedule) to High(FDaySchedule) do
 | 
|---|
| 589 |     FDaySchedule[cnt] := '';
 | 
|---|
| 590 |   PiecesToList(timeStr, '-', FTimeSchedule);
 | 
|---|
| 591 |   if Length(dayStr)>0 then
 | 
|---|
| 592 |   begin
 | 
|---|
| 593 |     PiecesToList(dayStr, '-', dayList);
 | 
|---|
| 594 |     cbo7.Checked := False;
 | 
|---|
| 595 |     cbo1.Checked := False;
 | 
|---|
| 596 |     cbo2.Checked := False;
 | 
|---|
| 597 |     cbo3.Checked := False;
 | 
|---|
| 598 |     cbo4.Checked := False;
 | 
|---|
| 599 |     cbo5.Checked := False;
 | 
|---|
| 600 |     cbo6.Checked := False;
 | 
|---|
| 601 |     updateCheckbox(dayList);
 | 
|---|
| 602 |   end;
 | 
|---|
| 603 | 
 | 
|---|
| 604 |   FOtherSchedule := txtSchedule.Text;
 | 
|---|
| 605 | end;
 | 
|---|
| 606 | 
 | 
|---|
| 607 | procedure TfrmOtherSchedule.lstHourClick(Sender: TObject);
 | 
|---|
| 608 | begin
 | 
|---|
| 609 |   inherited;
 | 
|---|
| 610 |   if lstMinute.ItemIndex = -1 then lstMinute.ItemIndex :=0;
 | 
|---|
| 611 | end;
 | 
|---|
| 612 | 
 | 
|---|
| 613 | procedure TfrmOtherSchedule.txtScheduleChange(Sender: TObject);
 | 
|---|
| 614 | begin
 | 
|---|
| 615 |   inherited;
 | 
|---|
| 616 |   FFromEditBox := True;
 | 
|---|
| 617 |   if not FFromCheckBox then
 | 
|---|
| 618 |     UpdateOnFreeTextInput;
 | 
|---|
| 619 |   FFromEditBox := False;
 | 
|---|
| 620 | end;
 | 
|---|
| 621 | 
 | 
|---|
| 622 | function TfrmOtherSchedule.CheckDay(ADayStr: string): string;
 | 
|---|
| 623 | var
 | 
|---|
| 624 |   lng: integer;
 | 
|---|
| 625 | begin
 | 
|---|
| 626 |   lng := Length(ADayStr);
 | 
|---|
| 627 |   if lng <2 then
 | 
|---|
| 628 |   begin
 | 
|---|
| 629 |     result := '';
 | 
|---|
| 630 |     Exit;
 | 
|---|
| 631 |   end;
 | 
|---|
| 632 |   if (lng < 7) and ( UpperCase(aDayStr)= Copy('SUNDAY',1,lng)) then
 | 
|---|
| 633 |     result := 'SU'
 | 
|---|
| 634 |   else if (lng < 7) and (UpperCase(aDayStr)= Copy('MONDAY',1,lng)) then
 | 
|---|
| 635 |     result := 'MO'
 | 
|---|
| 636 |   else if (lng < 8) and (UpperCase(aDayStr)= Copy('TUESDAY',1,lng)) then
 | 
|---|
| 637 |     result := 'TU'
 | 
|---|
| 638 |   else if (lng < 10) and (UpperCase(aDayStr)= Copy('WEDNESDAY',1,lng)) then
 | 
|---|
| 639 |     result := 'WE'
 | 
|---|
| 640 |   else if (lng < 9) and (UpperCase(aDayStr)= Copy('THURSDAY',1,lng)) then
 | 
|---|
| 641 |     result := 'TH'
 | 
|---|
| 642 |   else if (lng < 7) and (UpperCase(aDayStr)= Copy('FRIDAY',1,lng)) then
 | 
|---|
| 643 |     result := 'FR'
 | 
|---|
| 644 |   else if (lng < 9) and (UpperCase(aDayStr)= Copy('SATURDAY',1,lng)) then
 | 
|---|
| 645 |     result := 'SA'
 | 
|---|
| 646 |   else
 | 
|---|
| 647 |     result := '';
 | 
|---|
| 648 | end;
 | 
|---|
| 649 | 
 | 
|---|
| 650 | procedure TfrmOtherSchedule.EnabledSch(TF: boolean);
 | 
|---|
| 651 | begin
 | 
|---|
| 652 |    self.GroupBox3.Enabled := TF;
 | 
|---|
| 653 |    self.NSScboSchedule.Enabled := TF;
 | 
|---|
| 654 |    self.btnSchAdd.Enabled := TF;
 | 
|---|
| 655 |    self.btnSchRemove.Enabled := TF;
 | 
|---|
| 656 | //   if TF = False then self.NSScboSchedule.Color := cl3DLight
 | 
|---|
| 657 | //   else self.NSScboSchedule.Color := clWindow;
 | 
|---|
| 658 |    if TF = False then self.NSScboSchedule.ItemIndex := -1;
 | 
|---|
| 659 | end;
 | 
|---|
| 660 | 
 | 
|---|
| 661 | procedure TfrmOtherSchedule.EnabledTime(TF: boolean);
 | 
|---|
| 662 | begin
 | 
|---|
| 663 |   self.GroupBox2.Enabled := TF;
 | 
|---|
| 664 |   self.lstHour.Enabled := TF;
 | 
|---|
| 665 |   self.lstMinute.Enabled := TF;
 | 
|---|
| 666 |   self.btnAdd.Enabled := TF;
 | 
|---|
| 667 |   self.btnRemove.Enabled := TF;
 | 
|---|
| 668 |   if TF = False then
 | 
|---|
| 669 |     begin
 | 
|---|
| 670 |       self.lstHour.ItemIndex := -1;
 | 
|---|
| 671 |       self.lstMinute.ItemIndex := -1;
 | 
|---|
| 672 |     end;
 | 
|---|
| 673 | end;
 | 
|---|
| 674 | 
 | 
|---|
| 675 | procedure TfrmOtherSchedule.lstMinuteMouseUp(Sender: TObject;
 | 
|---|
| 676 |   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 | 
|---|
| 677 | begin
 | 
|---|
| 678 |   inherited;
 | 
|---|
| 679 |   FFromCheckBox := True;
 | 
|---|
| 680 |   if lstHour.ItemIndex < 0 then Exit;
 | 
|---|
| 681 |   //btnAddClick(Self);
 | 
|---|
| 682 |   FFromCheckBox := False;
 | 
|---|
| 683 | end;
 | 
|---|
| 684 | 
 | 
|---|
| 685 | procedure TfrmOtherSchedule.lstMinuteKeyDown(Sender: TObject;
 | 
|---|
| 686 |   var Key: Word; Shift: TShiftState);
 | 
|---|
| 687 | begin
 | 
|---|
| 688 |   inherited;
 | 
|---|
| 689 |   if (Key=VK_RETURN) then
 | 
|---|
| 690 |   begin
 | 
|---|
| 691 |     FFromCheckBox := True;
 | 
|---|
| 692 |     if lstHour.ItemIndex < 0 then Exit;
 | 
|---|
| 693 |     //btnAddClick(Self);
 | 
|---|
| 694 |     FFromCheckBox := False;
 | 
|---|
| 695 |   end;
 | 
|---|
| 696 | end;
 | 
|---|
| 697 | 
 | 
|---|
| 698 | procedure TfrmOtherSchedule.Button1Click(Sender: TObject);
 | 
|---|
| 699 | begin
 | 
|---|
| 700 |   inherited;
 | 
|---|
| 701 |    cbo1.Checked := true;
 | 
|---|
| 702 |    cbo2.Checked := true;
 | 
|---|
| 703 |    cbo3.Checked := true;
 | 
|---|
| 704 |    cbo4.Checked := true;
 | 
|---|
| 705 |    cbo5.Checked := true;
 | 
|---|
| 706 |    cbo6.Checked := true;
 | 
|---|
| 707 |    cbo7.Checked := true;
 | 
|---|
| 708 | end;
 | 
|---|
| 709 | 
 | 
|---|
| 710 | end.
 | 
|---|
| 711 | 
 | 
|---|