| [459] | 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;
 | 
|---|
 | 8 | 
 | 
|---|
 | 9 | const
 | 
|---|
 | 10 |   NSS_TXT = 'This order will not become active until a valid schedule is used.';
 | 
|---|
 | 11 | 
 | 
|---|
 | 12 | type
 | 
|---|
 | 13 |   TfrmOtherSchedule = class(TfrmAutoSz)
 | 
|---|
 | 14 |     Panel1: TPanel;
 | 
|---|
 | 15 |     Image1: TImage;
 | 
|---|
 | 16 |     Panel3: TPanel;
 | 
|---|
 | 17 |     GroupBox1: TGroupBox;
 | 
|---|
 | 18 |     cbo7: TCheckBox;
 | 
|---|
 | 19 |     cbo1: TCheckBox;
 | 
|---|
 | 20 |     cbo2: TCheckBox;
 | 
|---|
 | 21 |     cbo3: TCheckBox;
 | 
|---|
 | 22 |     cbo4: TCheckBox;
 | 
|---|
 | 23 |     cbo5: TCheckBox;
 | 
|---|
 | 24 |     cbo6: TCheckBox;
 | 
|---|
 | 25 |     GroupBox2: TGroupBox;
 | 
|---|
 | 26 |     lstHour: TListBox;
 | 
|---|
 | 27 |     lstMinute: TListBox;
 | 
|---|
 | 28 |     Panel4: TPanel;
 | 
|---|
 | 29 |     btn0k1: TButton;
 | 
|---|
 | 30 |     btnCancel: TButton;
 | 
|---|
 | 31 |     txtSchedule: TEdit;
 | 
|---|
 | 32 |     Label1: TLabel;
 | 
|---|
 | 33 |     btnReset: TButton;
 | 
|---|
 | 34 |     btnRemove: TButton;
 | 
|---|
 | 35 |     memMessage: TMemo;
 | 
|---|
 | 36 |     Splitter1: TSplitter;
 | 
|---|
| [460] | 37 |     btnAdd: TButton;
 | 
|---|
 | 38 |     Button1: TButton;
 | 
|---|
| [459] | 39 |     procedure FormCreate(Sender: TObject);
 | 
|---|
 | 40 |     procedure btnCancelClick(Sender: TObject);
 | 
|---|
 | 41 |     procedure btn0k1Click(Sender: TObject);
 | 
|---|
 | 42 |     procedure cbo7Click(Sender: TObject);
 | 
|---|
 | 43 |     procedure cbo1Click(Sender: TObject);
 | 
|---|
 | 44 |     procedure cbo2Click(Sender: TObject);
 | 
|---|
 | 45 |     procedure cbo3Click(Sender: TObject);
 | 
|---|
 | 46 |     procedure cbo4Click(Sender: TObject);
 | 
|---|
 | 47 |     procedure cbo5Click(Sender: TObject);
 | 
|---|
 | 48 |     procedure cbo6Click(Sender: TObject);
 | 
|---|
 | 49 |     procedure btnAddClick(Sender: TObject);
 | 
|---|
 | 50 |     procedure btnResetClick(Sender: TObject);
 | 
|---|
 | 51 |     procedure btnRemoveClick(Sender: TObject);
 | 
|---|
 | 52 |     procedure FormClose(Sender: TObject; var Action: TCloseAction);
 | 
|---|
 | 53 |     procedure lstHourClick(Sender: TObject);
 | 
|---|
 | 54 |     procedure txtScheduleChange(Sender: TObject);
 | 
|---|
 | 55 |     procedure lstMinuteMouseUp(Sender: TObject; Button: TMouseButton;
 | 
|---|
 | 56 |       Shift: TShiftState; X, Y: Integer);
 | 
|---|
 | 57 |     procedure lstMinuteKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
 | 58 |       Shift: TShiftState);
 | 
|---|
| [460] | 59 |     procedure Button1Click(Sender: TObject);
 | 
|---|
| [459] | 60 |   private
 | 
|---|
 | 61 |     FDaySchedule: array [1..7] of string;
 | 
|---|
 | 62 |     FTimeSchedule: TStringList;
 | 
|---|
 | 63 |     FOtherSchedule: String;
 | 
|---|
 | 64 |     FFromCheckBox: boolean;
 | 
|---|
 | 65 |     FFromEditBox: boolean;
 | 
|---|
 | 66 |     function GetSiteMessage: string;
 | 
|---|
 | 67 |     procedure SetDaySchedule(Sender: TObject);
 | 
|---|
 | 68 |     procedure SetTimeSchedule;
 | 
|---|
 | 69 |     procedure UpdateOnFreeTextInput;
 | 
|---|
 | 70 |     function CheckDay(ADayStr: string): string;
 | 
|---|
| [460] | 71 |     
 | 
|---|
| [459] | 72 |   public
 | 
|---|
 | 73 |   end;
 | 
|---|
 | 74 | 
 | 
|---|
 | 75 | function ShowOtherSchedule(var ASchedule: string): boolean;
 | 
|---|
 | 76 | 
 | 
|---|
 | 77 | implementation
 | 
|---|
 | 78 | 
 | 
|---|
 | 79 | uses ORFn, ORNet, rOrders;
 | 
|---|
 | 80 | {$R *.dfm}
 | 
|---|
 | 81 | 
 | 
|---|
 | 82 | function ShowOtherSchedule(var ASchedule: string): boolean;
 | 
|---|
 | 83 | var
 | 
|---|
 | 84 |   frmOtherSchedule: TfrmOtherSchedule;
 | 
|---|
 | 85 | begin
 | 
|---|
 | 86 |   Result := False;
 | 
|---|
 | 87 |   try
 | 
|---|
 | 88 |    frmOtherSchedule := TfrmOtherSchedule.Create(Application);
 | 
|---|
 | 89 |    ResizeFormToFont(TForm(frmOtherSchedule));
 | 
|---|
 | 90 |    SetFormPosition(frmOtherSchedule);
 | 
|---|
 | 91 |    if frmOtherSchedule.ShowModal = mrOK then
 | 
|---|
 | 92 |    begin
 | 
|---|
| [460] | 93 |      ASchedule := UpperCase(frmOtherSchedule.FOtherSchedule);
 | 
|---|
| [459] | 94 |      Result := True;
 | 
|---|
 | 95 |    end;
 | 
|---|
 | 96 |   except
 | 
|---|
 | 97 |    ShowMessage('Error happen when building other schedule');
 | 
|---|
 | 98 |   end;
 | 
|---|
 | 99 | end;
 | 
|---|
 | 100 | 
 | 
|---|
 | 101 | 
 | 
|---|
 | 102 | procedure TfrmOtherSchedule.FormCreate(Sender: TObject);
 | 
|---|
 | 103 | var
 | 
|---|
 | 104 |   i: integer;
 | 
|---|
 | 105 |   nssMsg: string;
 | 
|---|
 | 106 | begin
 | 
|---|
 | 107 |   FFromCheckBox := False;
 | 
|---|
 | 108 |   FFromEditBox := False;
 | 
|---|
 | 109 |   image1.Picture.Icon.Handle := LoadIcon(0, IDI_WARNING);
 | 
|---|
 | 110 |   for i := 1 to 7 do
 | 
|---|
 | 111 |    FDaySchedule[i] := '';
 | 
|---|
 | 112 |   FTimeSchedule := TStringlist.Create;
 | 
|---|
 | 113 |   FOtherSchedule := '';
 | 
|---|
 | 114 |   nssMsg := GetSiteMessage;
 | 
|---|
 | 115 |   if Length(nssMsg)< 1 then
 | 
|---|
 | 116 |     nssMsg := NSS_TXT;
 | 
|---|
 | 117 |   memMessage.Lines.Add(nssMsg);
 | 
|---|
 | 118 | end;
 | 
|---|
 | 119 | 
 | 
|---|
 | 120 | procedure TfrmOtherSchedule.btnCancelClick(Sender: TObject);
 | 
|---|
 | 121 | begin
 | 
|---|
 | 122 |   modalResult := mrCancel;
 | 
|---|
 | 123 | end;
 | 
|---|
 | 124 | 
 | 
|---|
 | 125 | procedure TfrmOtherSchedule.btn0k1Click(Sender: TObject);
 | 
|---|
 | 126 | begin
 | 
|---|
| [460] | 127 |   if (cbo1.Checked = false) and (cbo2.Checked = false) and (cbo3.Checked = false) and (cbo4.Checked = false) and (cbo5.Checked = false) and
 | 
|---|
 | 128 |     (cbo6.Checked = false) and (cbo7.Checked = false) then
 | 
|---|
 | 129 |     begin
 | 
|---|
 | 130 |       ShowMessage('A day of week must be selected!');
 | 
|---|
 | 131 |       Exit;
 | 
|---|
 | 132 |     end;
 | 
|---|
| [459] | 133 |   if not IsValidSchStr(FOtherSchedule) then
 | 
|---|
 | 134 |   begin
 | 
|---|
 | 135 |     ShowMessage('The schedule you entered is invalid!');
 | 
|---|
 | 136 |     Exit;
 | 
|---|
 | 137 |   end;
 | 
|---|
 | 138 |   modalResult := mrOK;
 | 
|---|
 | 139 | end;
 | 
|---|
 | 140 | 
 | 
|---|
 | 141 | procedure TfrmOtherSchedule.SetDaySchedule(Sender: TObject);
 | 
|---|
 | 142 | var
 | 
|---|
 | 143 |   i : integer;
 | 
|---|
 | 144 |   TimePart, DayPart: string;
 | 
|---|
 | 145 | begin
 | 
|---|
 | 146 |   with (Sender as TCheckBox) do
 | 
|---|
 | 147 |   begin
 | 
|---|
 | 148 |     try
 | 
|---|
 | 149 |       if TCheckBox(Sender).Checked then
 | 
|---|
 | 150 |         FDaySchedule[TCheckBox(Sender).Tag] := Copy(TCheckBox(Sender).Caption,0,2)
 | 
|---|
 | 151 |       else
 | 
|---|
 | 152 |         FDaySchedule[TCheckBox(Sender).Tag] := '';
 | 
|---|
 | 153 |     except
 | 
|---|
 | 154 |       ShowMessage('Error happened when building day schedule.');
 | 
|---|
 | 155 |       Exit;
 | 
|---|
 | 156 |     end;
 | 
|---|
 | 157 |   end;
 | 
|---|
 | 158 | 
 | 
|---|
 | 159 |   TimePart := '';
 | 
|---|
 | 160 |   DayPart := '';
 | 
|---|
 | 161 |   for i := 0 to FTimeSchedule.Count - 1 do
 | 
|---|
 | 162 |   begin
 | 
|---|
 | 163 |     if i = 0 then TimePart := TimePart + FTimeSchedule[i]
 | 
|---|
 | 164 |     else TimePart := TimePart + '-' + FTimeSchedule[i];
 | 
|---|
 | 165 |   end;
 | 
|---|
 | 166 |   for i := Low(FDaySchedule) to High(FDaySchedule) do
 | 
|---|
 | 167 |   begin
 | 
|---|
 | 168 |     if Length(FDaySchedule[i])>0 then
 | 
|---|
 | 169 |     begin
 | 
|---|
 | 170 |       if DayPart = '' then DayPart := FDaySchedule[i]
 | 
|---|
 | 171 |       else DayPart := DayPart + '-' + FDaySchedule[i];
 | 
|---|
 | 172 |     end;
 | 
|---|
 | 173 |   end;
 | 
|---|
 | 174 |   if Length(TimePart) > 0 then
 | 
|---|
 | 175 |   begin
 | 
|---|
 | 176 |     if Length(DayPart) > 0 then
 | 
|---|
 | 177 |       FOtherSchedule := DayPart + '@' + TimePart
 | 
|---|
 | 178 |     else if Length(DayPart) = 0 then
 | 
|---|
 | 179 |       FOtherSchedule := TimePart;
 | 
|---|
 | 180 |   end
 | 
|---|
 | 181 |   else FOtherSchedule := DayPart;
 | 
|---|
 | 182 |   txtSchedule.Text := FOtherSchedule;
 | 
|---|
 | 183 | end;
 | 
|---|
 | 184 | 
 | 
|---|
 | 185 | procedure TfrmOtherSchedule.SetTimeSchedule;
 | 
|---|
 | 186 | var
 | 
|---|
 | 187 |   i : integer;
 | 
|---|
| [460] | 188 |   TimePart, DayPart,APRN,ASearchTxt: string;
 | 
|---|
| [459] | 189 | begin
 | 
|---|
 | 190 |   TimePart := '';
 | 
|---|
 | 191 |   DayPart := '';
 | 
|---|
| [460] | 192 |   APRN := '';
 | 
|---|
 | 193 |   ASearchTxt := UpperCase(txtSchedule.Text);
 | 
|---|
 | 194 |   if StrPos(PChar(ASearchTxt),PChar('PRN')) <> nil then APRN := ' PRN'; //hds8326 retain PRN free text if data time entered
 | 
|---|
| [459] | 195 |   for i := 0 to FTimeSchedule.Count - 1 do
 | 
|---|
 | 196 |   begin
 | 
|---|
 | 197 |     if i = 0 then TimePart := TimePart + FTimeSchedule[i]
 | 
|---|
 | 198 |     else TimePart := TimePart + '-' + FTimeSchedule[i];
 | 
|---|
 | 199 |   end;
 | 
|---|
 | 200 |   for i := Low(FDaySchedule) to High(FDaySchedule) do
 | 
|---|
 | 201 |   begin
 | 
|---|
 | 202 |     if Length(FDaySchedule[i])>0 then
 | 
|---|
 | 203 |     begin
 | 
|---|
 | 204 |       if DayPart = '' then DayPart := FDaySchedule[i]
 | 
|---|
 | 205 |       else DayPart := DayPart + '-' + FDaySchedule[i];
 | 
|---|
 | 206 |     end;
 | 
|---|
 | 207 |   end;
 | 
|---|
 | 208 |   if Length(DayPart) > 0 then
 | 
|---|
 | 209 |   begin
 | 
|---|
 | 210 |     if Length(TimePart) > 0 then
 | 
|---|
 | 211 |       FOtherSchedule := DayPart + '@' + TimePart
 | 
|---|
 | 212 |     else
 | 
|---|
 | 213 |       FOtherSchedule := DayPart;
 | 
|---|
 | 214 |   end
 | 
|---|
 | 215 |   else FOtherSchedule := TimePart;
 | 
|---|
| [460] | 216 |   if Length(APRN) > 0 then FOtherSchedule := FOtherSchedule + APRN; //hds8326 retain PRN free text if data time entered
 | 
|---|
| [459] | 217 |   txtSchedule.Text := FOtherSchedule;
 | 
|---|
 | 218 | end;
 | 
|---|
 | 219 | 
 | 
|---|
 | 220 | procedure TfrmOtherSchedule.cbo7Click(Sender: TObject);
 | 
|---|
 | 221 | begin
 | 
|---|
 | 222 |   FFromCheckBox := True;
 | 
|---|
 | 223 |   if not FFromEditBox then
 | 
|---|
 | 224 |     SetDaySchedule(Sender);
 | 
|---|
 | 225 |   FFromCheckBox := False;
 | 
|---|
 | 226 | end;
 | 
|---|
 | 227 | 
 | 
|---|
 | 228 | procedure TfrmOtherSchedule.cbo1Click(Sender: TObject);
 | 
|---|
 | 229 | begin
 | 
|---|
 | 230 |   FFromCheckBox := True;
 | 
|---|
 | 231 |   if not FFromEditBox then
 | 
|---|
 | 232 |     SetDaySchedule(Sender);
 | 
|---|
 | 233 |   FFromCheckBox := False;
 | 
|---|
 | 234 | end;
 | 
|---|
 | 235 | 
 | 
|---|
 | 236 | procedure TfrmOtherSchedule.cbo2Click(Sender: TObject);
 | 
|---|
 | 237 | begin
 | 
|---|
 | 238 |   FFromCheckBox := True;
 | 
|---|
 | 239 |   if not FFromEditBox then
 | 
|---|
 | 240 |     SetDaySchedule(Sender);
 | 
|---|
 | 241 |   FFromCheckBox := False;
 | 
|---|
 | 242 | end;
 | 
|---|
 | 243 | 
 | 
|---|
 | 244 | procedure TfrmOtherSchedule.cbo3Click(Sender: TObject);
 | 
|---|
 | 245 | begin
 | 
|---|
 | 246 |   FFromCheckBox := True;
 | 
|---|
 | 247 |   if not FFromEditBox then
 | 
|---|
 | 248 |     SetDaySchedule(Sender);
 | 
|---|
 | 249 |   FFromCheckBox := False;
 | 
|---|
 | 250 | end;
 | 
|---|
 | 251 | 
 | 
|---|
 | 252 | procedure TfrmOtherSchedule.cbo4Click(Sender: TObject);
 | 
|---|
 | 253 | begin
 | 
|---|
 | 254 |   FFromCheckBox := True;
 | 
|---|
 | 255 |   if not FFromEditBox then
 | 
|---|
 | 256 |     SetDaySchedule(Sender);
 | 
|---|
 | 257 |   FFromCheckBox := False;
 | 
|---|
 | 258 | end;
 | 
|---|
 | 259 | 
 | 
|---|
 | 260 | procedure TfrmOtherSchedule.cbo5Click(Sender: TObject);
 | 
|---|
 | 261 | begin
 | 
|---|
 | 262 |   FFromCheckBox := True;
 | 
|---|
 | 263 |   if not FFromEditBox then
 | 
|---|
 | 264 |     SetDaySchedule(Sender);
 | 
|---|
 | 265 |   FFromCheckBox := False;
 | 
|---|
 | 266 | end;
 | 
|---|
 | 267 | 
 | 
|---|
 | 268 | procedure TfrmOtherSchedule.cbo6Click(Sender: TObject);
 | 
|---|
 | 269 | begin
 | 
|---|
 | 270 |   FFromCheckBox := True;
 | 
|---|
 | 271 |   if not FFromEditBox then
 | 
|---|
 | 272 |     SetDaySchedule(Sender);
 | 
|---|
 | 273 |   FFromCheckBox := False;
 | 
|---|
 | 274 | end;
 | 
|---|
 | 275 | 
 | 
|---|
 | 276 | procedure TfrmOtherSchedule.btnAddClick(Sender: TObject);
 | 
|---|
 | 277 | var
 | 
|---|
 | 278 |   hour, min: string;
 | 
|---|
 | 279 | begin
 | 
|---|
 | 280 |   if lstHour.ItemIndex < 0 then exit;
 | 
|---|
 | 281 |   hour := lstHour.Items[lstHour.ItemIndex];
 | 
|---|
 | 282 |   hour := Trim(Copy(hour,1,3));
 | 
|---|
 | 283 |   if length(Trim(hour)) = 1 then
 | 
|---|
 | 284 |     hour := '0' + Trim(hour);
 | 
|---|
 | 285 |   if lstMinute.ItemIndex >= 0 then
 | 
|---|
 | 286 |   begin
 | 
|---|
 | 287 |     min := lstMinute.Items[lstMinute.itemIndex];
 | 
|---|
 | 288 |     min := Copy(min,2,2);
 | 
|---|
 | 289 |   end;
 | 
|---|
 | 290 |   if min = '' then min := '00';
 | 
|---|
 | 291 |   if (hour='00') and (min='00') then hour := '24';
 | 
|---|
 | 292 |   if FTimeSchedule.IndexOf(hour)>=0 then
 | 
|---|
 | 293 |   begin
 | 
|---|
 | 294 |     FTimeSchedule[FTimeSchedule.IndexOf(hour)] := hour + min;
 | 
|---|
 | 295 |   end;
 | 
|---|
 | 296 |   if FTimeSchedule.IndexOf(hour+min) < 0 then
 | 
|---|
 | 297 |     FTimeSchedule.Add(hour+min);
 | 
|---|
 | 298 |   FTimeSchedule.Sort;
 | 
|---|
 | 299 |   SetTimeSchedule;
 | 
|---|
 | 300 | end;
 | 
|---|
 | 301 | 
 | 
|---|
 | 302 | procedure TfrmOtherSchedule.btnResetClick(Sender: TObject);
 | 
|---|
 | 303 | var
 | 
|---|
 | 304 |   i : integer;
 | 
|---|
 | 305 | begin
 | 
|---|
 | 306 |   cbo1.Checked := false;
 | 
|---|
 | 307 |   cbo2.Checked := false;
 | 
|---|
 | 308 |   cbo3.Checked:= false;
 | 
|---|
 | 309 |   cbo4.Checked := false;
 | 
|---|
 | 310 |   cbo5.Checked := false;
 | 
|---|
 | 311 |   cbo6.Checked := false;
 | 
|---|
 | 312 |   cbo7.Checked := false;
 | 
|---|
 | 313 |   lstHour.ItemIndex := -1;
 | 
|---|
 | 314 |   lstMinute.ItemIndex := -1;
 | 
|---|
 | 315 |   for i := low(FDaySchedule) to high(FDaySchedule) do
 | 
|---|
 | 316 |     FDaySchedule[i] := '';
 | 
|---|
 | 317 |   FTimeSchedule.Clear;
 | 
|---|
 | 318 |   FOtherSchedule := '';
 | 
|---|
 | 319 |   txtSchedule.Text := '';
 | 
|---|
 | 320 | end;
 | 
|---|
 | 321 | 
 | 
|---|
 | 322 | procedure TfrmOtherSchedule.btnRemoveClick(Sender: TObject);
 | 
|---|
 | 323 | var
 | 
|---|
 | 324 |   hour, min: string;
 | 
|---|
 | 325 |   idx : integer;
 | 
|---|
 | 326 | begin
 | 
|---|
 | 327 |   FFromCheckBox := True;
 | 
|---|
 | 328 |   if lstHour.ItemIndex >= 0 then
 | 
|---|
 | 329 |   begin
 | 
|---|
 | 330 |     hour := lstHour.Items[lstHour.ItemIndex];
 | 
|---|
 | 331 |     hour := Trim(Copy(hour,1,3));
 | 
|---|
 | 332 |     if length(hour) = 1 then
 | 
|---|
 | 333 |       hour := '0' + Trim(hour);
 | 
|---|
 | 334 |   end;
 | 
|---|
 | 335 |   if lstMinute.ItemIndex >= 0 then
 | 
|---|
 | 336 |   begin
 | 
|---|
 | 337 |     min := lstMinute.Items[lstMinute.itemIndex];
 | 
|---|
 | 338 |     min := Copy(min,2,2);
 | 
|---|
 | 339 |   end;
 | 
|---|
 | 340 |   if min = '' then min := '00';
 | 
|---|
 | 341 |   if (hour='00') and (min='00') then hour := '24';
 | 
|---|
 | 342 |   idx := FTimeSchedule.IndexOf(hour+min);
 | 
|---|
 | 343 |   if idx > -1 then
 | 
|---|
 | 344 |     FTimeSchedule.Delete(idx);
 | 
|---|
 | 345 |   FTimeSchedule.Sort;
 | 
|---|
 | 346 |   SetTimeSchedule;
 | 
|---|
 | 347 |   FFromCheckBox := False;
 | 
|---|
 | 348 | end;
 | 
|---|
 | 349 | 
 | 
|---|
 | 350 | function TfrmOtherSchedule.GetSiteMessage: string;
 | 
|---|
 | 351 | var
 | 
|---|
 | 352 |   i: integer;
 | 
|---|
 | 353 |   rstStr: string;
 | 
|---|
 | 354 | begin
 | 
|---|
 | 355 |   rstStr := '';
 | 
|---|
 | 356 |   CallV('ORWNSS NSSMSG',[nil]);
 | 
|---|
 | 357 |   for i := 0 to RPCBrokerV.Results.Count - 1 do
 | 
|---|
 | 358 |     rstStr := rstStr + RPCBrokerV.Results[i];
 | 
|---|
 | 359 |   Result := rstStr;
 | 
|---|
 | 360 | end;
 | 
|---|
 | 361 | 
 | 
|---|
 | 362 | procedure TfrmOtherSchedule.FormClose(Sender: TObject;
 | 
|---|
 | 363 |   var Action: TCloseAction);
 | 
|---|
 | 364 | begin
 | 
|---|
 | 365 |   try
 | 
|---|
 | 366 |     inherited;
 | 
|---|
 | 367 |     SaveUserBounds(Self);
 | 
|---|
 | 368 |     Action := caFree;
 | 
|---|
 | 369 |   except
 | 
|---|
 | 370 |     Action := caFree;
 | 
|---|
 | 371 |   end;
 | 
|---|
 | 372 | end;
 | 
|---|
 | 373 | 
 | 
|---|
 | 374 | procedure TfrmOtherSchedule.UpdateOnFreeTextInput;
 | 
|---|
 | 375 | var
 | 
|---|
 | 376 |   dayStr,timeStr: string;
 | 
|---|
 | 377 |   dayList: TStringList;
 | 
|---|
 | 378 |   i,Code,cnt : integer;
 | 
|---|
 | 379 |   OrigSch: string;
 | 
|---|
 | 380 | 
 | 
|---|
 | 381 |   procedure updateCheckbox(aDList: TStringList);
 | 
|---|
 | 382 |   var
 | 
|---|
 | 383 |     idx: integer;
 | 
|---|
| [460] | 384 |     x: string;
 | 
|---|
| [459] | 385 |   begin
 | 
|---|
 | 386 |     for idx := aDList.Count - 1 downto 0 do
 | 
|---|
 | 387 |     begin
 | 
|---|
| [460] | 388 |     // cq hds8326 PRN entered manually split PRN from DOW to retain last DOW
 | 
|---|
 | 389 |       x := UpperCase(aDList.Strings[idx]); // added to properly process DOW when followed by a space "PRN".
 | 
|---|
 | 390 |       if Piece(x,' ',2) = 'PRN' then
 | 
|---|
 | 391 |          aDLIst.Strings[idx] := Piece(x,' ',1);
 | 
|---|
 | 392 |     // cq hds8326
 | 
|---|
| [459] | 393 |       if ((CheckDay(aDList[idx]) = 'SUN') or (CheckDay(aDList[idx]) = 'SU')) then
 | 
|---|
 | 394 |         begin
 | 
|---|
 | 395 |           cbo7.Checked := true;
 | 
|---|
 | 396 |           aDList[idx] := 'SU';
 | 
|---|
 | 397 |           FDaySchedule[cbo7.tag] := 'SU';
 | 
|---|
 | 398 |         end
 | 
|---|
 | 399 |       else if ((CheckDay(aDList[idx]) = 'MON') or (CheckDay(aDList[idx]) = 'MO')) then
 | 
|---|
 | 400 |         begin
 | 
|---|
 | 401 |           cbo1.Checked := true;
 | 
|---|
 | 402 |           aDList[idx] := 'MO';
 | 
|---|
 | 403 |           FDaySchedule[cbo1.tag] := 'MO';
 | 
|---|
 | 404 |         end
 | 
|---|
 | 405 |       else if ((CheckDay(aDList[idx]) = 'TUE') or (CheckDay(aDList[idx]) = 'TU')) then
 | 
|---|
 | 406 |         begin
 | 
|---|
 | 407 |           cbo2.Checked := true;
 | 
|---|
 | 408 |           aDList[idx] := 'TU';
 | 
|---|
 | 409 |           FDaySchedule[cbo2.tag] := 'TU';
 | 
|---|
 | 410 |         end
 | 
|---|
 | 411 |       else if ((CheckDay(aDList[idx]) = 'WED') or (CheckDay(aDList[idx]) = 'WE')) then
 | 
|---|
 | 412 |         begin
 | 
|---|
 | 413 |           cbo3.Checked := true;
 | 
|---|
 | 414 |           aDList[idx] := 'WE';
 | 
|---|
 | 415 |           FDaySchedule[cbo3.tag] := 'WE';
 | 
|---|
 | 416 |         end
 | 
|---|
 | 417 |       else if ((CheckDay(aDList[idx]) = 'THU') or (CheckDay(aDList[idx]) = 'TH')) then
 | 
|---|
 | 418 |         begin
 | 
|---|
 | 419 |           cbo4.Checked := true;
 | 
|---|
 | 420 |           aDList[idx] := 'TH';
 | 
|---|
 | 421 |           FDaySchedule[cbo4.tag] := 'TH';
 | 
|---|
 | 422 |         end
 | 
|---|
 | 423 |       else if ((CheckDay(aDList[idx]) = 'FRI') or (CheckDay(aDList[idx]) = 'FR')) then
 | 
|---|
 | 424 |         begin
 | 
|---|
 | 425 |           cbo5.Checked := true;
 | 
|---|
 | 426 |           aDList[idx] := 'FR';
 | 
|---|
 | 427 |           FDaySchedule[cbo5.tag] := 'FR';
 | 
|---|
 | 428 |         end
 | 
|---|
 | 429 |       else if ((CheckDay(aDList[idx]) = 'SAT') or (CheckDay(aDList[idx]) = 'SA')) then
 | 
|---|
 | 430 |         begin
 | 
|---|
 | 431 |           cbo6.Checked := true;
 | 
|---|
 | 432 |           aDList[idx] := 'SA';
 | 
|---|
 | 433 |           FDaySchedule[cbo6.tag] := 'SA';
 | 
|---|
 | 434 |         end
 | 
|---|
 | 435 |       else aDList.Delete(idx);
 | 
|---|
 | 436 |     end;
 | 
|---|
 | 437 |   end;
 | 
|---|
 | 438 | 
 | 
|---|
 | 439 | begin
 | 
|---|
 | 440 |   inherited;
 | 
|---|
 | 441 |   dayStr  := '';
 | 
|---|
 | 442 |   timeStr := '';
 | 
|---|
 | 443 |   if Length (txtSchedule.Text) = 0 then
 | 
|---|
 | 444 |   begin
 | 
|---|
 | 445 |     FOtherSchedule := '';
 | 
|---|
 | 446 |     btnReset.Click;
 | 
|---|
 | 447 |     Exit;
 | 
|---|
 | 448 |   end;
 | 
|---|
 | 449 |   OrigSch := txtSchedule.Text;
 | 
|---|
 | 450 |   dayList  := TStringList.Create;
 | 
|---|
 | 451 |   if Pos('@',txtSchedule.Text)>0 then
 | 
|---|
 | 452 |   begin
 | 
|---|
 | 453 |     dayStr  := Trim(Piece(txtSchedule.Text,'@',1));
 | 
|---|
 | 454 |     timeStr := Trim(Piece(txtSchedule.Text,'@',2));
 | 
|---|
 | 455 |   end  else
 | 
|---|
 | 456 |   begin
 | 
|---|
 | 457 |     Val(Piece(txtSchedule.Text,'-',1), i, Code);
 | 
|---|
| [460] | 458 |     if i = 0 then begin end;  // just to make compiler not give hint
 | 
|---|
| [459] | 459 |     if Code <> 0 then dayStr := Trim(txtSchedule.Text)
 | 
|---|
 | 460 |     else timeStr := Trim(txtSchedule.Text);
 | 
|---|
 | 461 |   end;
 | 
|---|
 | 462 |   FTimeSchedule.Clear;
 | 
|---|
 | 463 |   for cnt := Low(FDaySchedule) to High(FDaySchedule) do
 | 
|---|
 | 464 |     FDaySchedule[cnt] := '';
 | 
|---|
 | 465 |   PiecesToList(timeStr, '-', FTimeSchedule);
 | 
|---|
 | 466 |   if Length(dayStr)>0 then
 | 
|---|
 | 467 |   begin
 | 
|---|
 | 468 |     PiecesToList(dayStr, '-', dayList);
 | 
|---|
 | 469 |     cbo7.Checked := False;
 | 
|---|
 | 470 |     cbo1.Checked := False;
 | 
|---|
 | 471 |     cbo2.Checked := False;
 | 
|---|
 | 472 |     cbo3.Checked := False;
 | 
|---|
 | 473 |     cbo4.Checked := False;
 | 
|---|
 | 474 |     cbo5.Checked := False;
 | 
|---|
 | 475 |     cbo6.Checked := False;
 | 
|---|
 | 476 |     updateCheckbox(dayList);
 | 
|---|
 | 477 |   end;
 | 
|---|
 | 478 | 
 | 
|---|
 | 479 |   FOtherSchedule := txtSchedule.Text;
 | 
|---|
 | 480 | end;
 | 
|---|
 | 481 | 
 | 
|---|
 | 482 | procedure TfrmOtherSchedule.lstHourClick(Sender: TObject);
 | 
|---|
 | 483 | begin
 | 
|---|
 | 484 |   inherited;
 | 
|---|
| [460] | 485 |   if lstMinute.ItemIndex = -1 then lstMinute.ItemIndex :=0;
 | 
|---|
| [459] | 486 | end;
 | 
|---|
 | 487 | 
 | 
|---|
 | 488 | procedure TfrmOtherSchedule.txtScheduleChange(Sender: TObject);
 | 
|---|
 | 489 | begin
 | 
|---|
 | 490 |   inherited;
 | 
|---|
 | 491 |   FFromEditBox := True;
 | 
|---|
 | 492 |   if not FFromCheckBox then
 | 
|---|
 | 493 |     UpdateOnFreeTextInput;
 | 
|---|
 | 494 |   FFromEditBox := False;
 | 
|---|
 | 495 | end;
 | 
|---|
 | 496 | 
 | 
|---|
 | 497 | function TfrmOtherSchedule.CheckDay(ADayStr: string): string;
 | 
|---|
 | 498 | var
 | 
|---|
 | 499 |   lng: integer;
 | 
|---|
 | 500 | begin
 | 
|---|
 | 501 |   lng := Length(ADayStr);
 | 
|---|
 | 502 |   if lng <2 then
 | 
|---|
 | 503 |   begin
 | 
|---|
 | 504 |     result := '';
 | 
|---|
 | 505 |     Exit;
 | 
|---|
 | 506 |   end;
 | 
|---|
 | 507 |   if (lng < 7) and ( UpperCase(aDayStr)= Copy('SUNDAY',1,lng)) then
 | 
|---|
 | 508 |     result := 'SU'
 | 
|---|
 | 509 |   else if (lng < 7) and (UpperCase(aDayStr)= Copy('MONDAY',1,lng)) then
 | 
|---|
 | 510 |     result := 'MO'
 | 
|---|
 | 511 |   else if (lng < 8) and (UpperCase(aDayStr)= Copy('TUESDAY',1,lng)) then
 | 
|---|
 | 512 |     result := 'TU'
 | 
|---|
 | 513 |   else if (lng < 10) and (UpperCase(aDayStr)= Copy('WEDNESDAY',1,lng)) then
 | 
|---|
 | 514 |     result := 'WE'
 | 
|---|
 | 515 |   else if (lng < 9) and (UpperCase(aDayStr)= Copy('THURSDAY',1,lng)) then
 | 
|---|
 | 516 |     result := 'TH'
 | 
|---|
 | 517 |   else if (lng < 7) and (UpperCase(aDayStr)= Copy('FRIDAY',1,lng)) then
 | 
|---|
 | 518 |     result := 'FR'
 | 
|---|
 | 519 |   else if (lng < 9) and (UpperCase(aDayStr)= Copy('SATURDAY',1,lng)) then
 | 
|---|
 | 520 |     result := 'SA'
 | 
|---|
 | 521 |   else
 | 
|---|
 | 522 |     result := '';
 | 
|---|
 | 523 | end;
 | 
|---|
 | 524 | 
 | 
|---|
 | 525 | procedure TfrmOtherSchedule.lstMinuteMouseUp(Sender: TObject;
 | 
|---|
 | 526 |   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 | 
|---|
 | 527 | begin
 | 
|---|
 | 528 |   inherited;
 | 
|---|
 | 529 |   FFromCheckBox := True;
 | 
|---|
 | 530 |   if lstHour.ItemIndex < 0 then Exit;
 | 
|---|
| [460] | 531 |   //btnAddClick(Self);
 | 
|---|
| [459] | 532 |   FFromCheckBox := False;
 | 
|---|
 | 533 | end;
 | 
|---|
 | 534 | 
 | 
|---|
 | 535 | procedure TfrmOtherSchedule.lstMinuteKeyDown(Sender: TObject;
 | 
|---|
 | 536 |   var Key: Word; Shift: TShiftState);
 | 
|---|
 | 537 | begin
 | 
|---|
 | 538 |   inherited;
 | 
|---|
 | 539 |   if (Key=VK_RETURN) then
 | 
|---|
 | 540 |   begin
 | 
|---|
 | 541 |     FFromCheckBox := True;
 | 
|---|
 | 542 |     if lstHour.ItemIndex < 0 then Exit;
 | 
|---|
| [460] | 543 |     //btnAddClick(Self);
 | 
|---|
| [459] | 544 |     FFromCheckBox := False;
 | 
|---|
 | 545 |   end;
 | 
|---|
 | 546 | end;
 | 
|---|
 | 547 | 
 | 
|---|
| [460] | 548 | procedure TfrmOtherSchedule.Button1Click(Sender: TObject);
 | 
|---|
 | 549 | begin
 | 
|---|
 | 550 |   inherited;
 | 
|---|
 | 551 |    cbo1.Checked := true;
 | 
|---|
 | 552 |    cbo2.Checked := true;
 | 
|---|
 | 553 |    cbo3.Checked := true;
 | 
|---|
 | 554 |    cbo4.Checked := true;
 | 
|---|
 | 555 |    cbo5.Checked := true;
 | 
|---|
 | 556 |    cbo6.Checked := true;
 | 
|---|
 | 557 |    cbo7.Checked := true;
 | 
|---|
 | 558 | end;
 | 
|---|
 | 559 | 
 | 
|---|
| [459] | 560 | end.
 | 
|---|
 | 561 | 
 | 
|---|