| 1 | unit fRemCoverSheet;
 | 
|---|
| 2 | 
 | 
|---|
| 3 | interface
 | 
|---|
| 4 | 
 | 
|---|
| 5 | uses
 | 
|---|
| 6 |   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 | 
|---|
| 7 |   ORCtrls, StdCtrls, ExtCtrls, ComCtrls, ImgList, mImgText, Buttons, ORClasses;
 | 
|---|
| 8 | 
 | 
|---|
| 9 | type
 | 
|---|
| 10 |   TRemCoverDataLevel = (dlPackage, dlSystem, dlDivision, dlService, dlLocation, dlUserClass, dlUser);
 | 
|---|
| 11 | 
 | 
|---|
| 12 |   TfrmRemCoverSheet = class(TForm)
 | 
|---|
| 13 |     pnlBottom: TORAutoPanel;
 | 
|---|
| 14 |     pnlUser: TPanel;
 | 
|---|
| 15 |     cbxUserLoc: TORComboBox;
 | 
|---|
| 16 |     lblRemLoc: TLabel;
 | 
|---|
| 17 |     pnlMiddle: TPanel;
 | 
|---|
| 18 |     lvView: TCaptionListView;
 | 
|---|
| 19 |     pnlRight: TPanel;
 | 
|---|
| 20 |     mlgnCat: TfraImgText;
 | 
|---|
| 21 |     mlgnRem: TfraImgText;
 | 
|---|
| 22 |     mlgnAdd: TfraImgText;
 | 
|---|
| 23 |     pnlCAC: TORAutoPanel;
 | 
|---|
| 24 |     mlgnRemove: TfraImgText;
 | 
|---|
| 25 |     mlgnLock: TfraImgText;
 | 
|---|
| 26 |     imgMain: TImageList;
 | 
|---|
| 27 |     sbUp: TBitBtn;
 | 
|---|
| 28 |     sbDown: TBitBtn;
 | 
|---|
| 29 |     btnAdd: TBitBtn;
 | 
|---|
| 30 |     btnRemove: TBitBtn;
 | 
|---|
| 31 |     btnLock: TBitBtn;
 | 
|---|
| 32 |     pnlBtns: TPanel;
 | 
|---|
| 33 |     btnOK: TButton;
 | 
|---|
| 34 |     btnCancel: TButton;
 | 
|---|
| 35 |     edtSeq: TCaptionEdit;
 | 
|---|
| 36 |     udSeq: TUpDown;
 | 
|---|
| 37 |     lblSeq: TLabel;
 | 
|---|
| 38 |     btnApply: TButton;
 | 
|---|
| 39 |     cbSystem: TORCheckBox;
 | 
|---|
| 40 |     cbDivision: TORCheckBox;
 | 
|---|
| 41 |     cbService: TORCheckBox;
 | 
|---|
| 42 |     cbxService: TORComboBox;
 | 
|---|
| 43 |     cbxDivision: TORComboBox;
 | 
|---|
| 44 |     cbLocation: TORCheckBox;
 | 
|---|
| 45 |     cbUserClass: TORCheckBox;
 | 
|---|
| 46 |     cbUser: TORCheckBox;
 | 
|---|
| 47 |     cbxUser: TORComboBox;
 | 
|---|
| 48 |     cbxClass: TORComboBox;
 | 
|---|
| 49 |     cbxLocation: TORComboBox;
 | 
|---|
| 50 |     lblEdit: TLabel;
 | 
|---|
| 51 |     pnlInfo: TPanel;
 | 
|---|
| 52 |     pnlTree: TPanel;
 | 
|---|
| 53 |     tvAll: TORTreeView;
 | 
|---|
| 54 |     lblTree: TLabel;
 | 
|---|
| 55 |     pnlCover: TPanel;
 | 
|---|
| 56 |     lvCover: TCaptionListView;
 | 
|---|
| 57 |     pblMoveBtns: TPanel;
 | 
|---|
| 58 |     sbCopyRight: TBitBtn;
 | 
|---|
| 59 |     sbCopyLeft: TBitBtn;
 | 
|---|
| 60 |     splMain: TSplitter;
 | 
|---|
| 61 |     lblView: TLabel;
 | 
|---|
| 62 |     lblCAC: TStaticText;
 | 
|---|
| 63 |     btnView: TButton;
 | 
|---|
| 64 |     lblLegend: TLabel;
 | 
|---|
| 65 |     procedure cbxLocationNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
| 66 |       Direction, InsertAt: Integer);
 | 
|---|
| 67 |     procedure cbxServiceNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
| 68 |       Direction, InsertAt: Integer);
 | 
|---|
| 69 |     procedure cbxUserNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
| 70 |       Direction, InsertAt: Integer);
 | 
|---|
| 71 |     procedure cbxClassNeedData(Sender: TObject; const StartFrom: String;
 | 
|---|
| 72 |       Direction, InsertAt: Integer);
 | 
|---|
| 73 |     procedure FormDestroy(Sender: TObject);
 | 
|---|
| 74 |     procedure cbxDivisionChange(Sender: TObject);
 | 
|---|
| 75 |     procedure cbxServiceChange(Sender: TObject);
 | 
|---|
| 76 |     procedure cbxLocationChange(Sender: TObject);
 | 
|---|
| 77 |     procedure cbxClassChange(Sender: TObject);
 | 
|---|
| 78 |     procedure cbxUserChange(Sender: TObject);
 | 
|---|
| 79 |     procedure cbxDropDownClose(Sender: TObject);
 | 
|---|
| 80 |     procedure cbEditLevelClick(Sender: TObject);
 | 
|---|
| 81 |     procedure tvAllExpanding(Sender: TObject; Node: TTreeNode;
 | 
|---|
| 82 |       var AllowExpansion: Boolean);
 | 
|---|
| 83 |     procedure edtSeqChange(Sender: TObject);
 | 
|---|
| 84 |     procedure tvAllExpanded(Sender: TObject; Node: TTreeNode);
 | 
|---|
| 85 |     procedure tvAllChange(Sender: TObject; Node: TTreeNode);
 | 
|---|
| 86 |     procedure lvCoverChange(Sender: TObject; Item: TListItem;
 | 
|---|
| 87 |       Change: TItemChange);
 | 
|---|
| 88 |     procedure btnAddClick(Sender: TObject);
 | 
|---|
| 89 |     procedure btnRemoveClick(Sender: TObject);
 | 
|---|
| 90 |     procedure btnLockClick(Sender: TObject);
 | 
|---|
| 91 |     procedure lvViewColumnClick(Sender: TObject; Column: TListColumn);
 | 
|---|
| 92 |     procedure lvCoverColumnClick(Sender: TObject; Column: TListColumn);
 | 
|---|
| 93 |     procedure lvViewCompare(Sender: TObject; Item1, Item2: TListItem;
 | 
|---|
| 94 |       Data: Integer; var Compare: Integer);
 | 
|---|
| 95 |     procedure lvCoverCompare(Sender: TObject; Item1, Item2: TListItem;
 | 
|---|
| 96 |       Data: Integer; var Compare: Integer);
 | 
|---|
| 97 |     procedure sbUpClick(Sender: TObject);
 | 
|---|
| 98 |     procedure sbDownClick(Sender: TObject);
 | 
|---|
| 99 |     procedure sbCopyRightClick(Sender: TObject);
 | 
|---|
| 100 |     procedure udSeqChangingEx(Sender: TObject; var AllowChange: Boolean;
 | 
|---|
| 101 |       NewValue: Smallint; Direction: TUpDownDirection);
 | 
|---|
| 102 |     procedure sbCopyLeftClick(Sender: TObject);
 | 
|---|
| 103 |     procedure tvAllDblClick(Sender: TObject);
 | 
|---|
| 104 |     procedure btnApplyClick(Sender: TObject);
 | 
|---|
| 105 |     procedure btnOKClick(Sender: TObject);
 | 
|---|
| 106 |     procedure lvCoverDblClick(Sender: TObject);
 | 
|---|
| 107 |     procedure lvViewClick(Sender: TObject);
 | 
|---|
| 108 |     procedure btnViewClick(Sender: TObject);
 | 
|---|
| 109 |     procedure lvCoverKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
| 110 |       Shift: TShiftState);
 | 
|---|
| 111 |     procedure edtSeqKeyPress(Sender: TObject; var Key: Char);
 | 
|---|
| 112 |     procedure cbxDivisionKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
| 113 |       Shift: TShiftState);
 | 
|---|
| 114 |   private
 | 
|---|
| 115 |     FData: TORStringList;     // DataCode IEN ^ Modified Flag  Object=TStringList
 | 
|---|
| 116 |     FUserInfo: TORStringList; // C^User Class, D^Division
 | 
|---|
| 117 |     FUser: Int64;
 | 
|---|
| 118 |     FUserMode: boolean;
 | 
|---|
| 119 |     FInitialized: boolean;
 | 
|---|
| 120 |     FCurDiv: Integer;
 | 
|---|
| 121 |     FCurSer:Integer;
 | 
|---|
| 122 |     FCurLoc: Integer;
 | 
|---|
| 123 |     FCurClass: Integer;
 | 
|---|
| 124 |     FCurUser: Int64;
 | 
|---|
| 125 |     FDivisions: TORStringList;
 | 
|---|
| 126 |     FServices: TORStringList;
 | 
|---|
| 127 |     FLocations: TORStringList;
 | 
|---|
| 128 |     FClasses: TORStringList;
 | 
|---|
| 129 |     FUsers: TORStringList;
 | 
|---|
| 130 |     FMasterList: TORStringList;
 | 
|---|
| 131 |     FUpdatePending: TORCheckBox;
 | 
|---|
| 132 |     FCatInfo: TORStringList;
 | 
|---|
| 133 |     FEditingLevel: TRemCoverDataLevel;
 | 
|---|
| 134 |     FEditingIEN: Int64;
 | 
|---|
| 135 |     FUpdating: boolean;
 | 
|---|
| 136 |     FTopSortTag: integer;
 | 
|---|
| 137 |     FTopSortUp: boolean;
 | 
|---|
| 138 |     FBottomSortTag: integer;
 | 
|---|
| 139 |     FBottomSortUp: boolean;
 | 
|---|
| 140 |     FDataSaved: boolean;
 | 
|---|
| 141 |     FUpdatingView: boolean;
 | 
|---|
| 142 |     FInternalExpansion: boolean;
 | 
|---|
| 143 |     procedure GetUserInfo(AUser: Int64);
 | 
|---|
| 144 |     function GetCurrent(IEN: Int64; Level: TRemCoverDataLevel; Show: boolean;
 | 
|---|
| 145 |                         Add: boolean = FALSE): TORStringList;
 | 
|---|
| 146 |     procedure UpdateView;
 | 
|---|
| 147 |     procedure SetupItem(Item: TListItem; const Data: string); overload;
 | 
|---|
| 148 |     procedure SetupItem(Item: TListItem; const Data: string;
 | 
|---|
| 149 |                         Level: TRemCoverDataLevel; IEN: Int64); overload;
 | 
|---|
| 150 |     function GetExternalName(Level: TRemCoverDataLevel; IEN: Int64): string;
 | 
|---|
| 151 |     procedure UpdateMasterListView;
 | 
|---|
| 152 |     procedure UpdateButtons;
 | 
|---|
| 153 |     function GetCatInfo(CatIEN: string): TORStringList;
 | 
|---|
| 154 |     procedure MarkListAsChanged;
 | 
|---|
| 155 |     function GetIndex(List: TORStringList; Item: TListItem): integer;
 | 
|---|
| 156 |     procedure ChangeStatus(Code: string);
 | 
|---|
| 157 |     procedure SetSeq(Item: TListItem; const Value: string);
 | 
|---|
| 158 |     function ListHasData(Seq: string; SubIdx: integer): boolean;
 | 
|---|
| 159 |     procedure SaveData(FromApply: boolean);
 | 
|---|
| 160 |     function RPad(Str: String): String;
 | 
|---|
| 161 |     function GetCoverSheetLvlData(ALevel, AClass: string): TStrings;
 | 
|---|
| 162 |   public
 | 
|---|
| 163 |     procedure Init(AsUser: boolean);
 | 
|---|
| 164 |   end;
 | 
|---|
| 165 | 
 | 
|---|
| 166 | procedure EditCoverSheetReminderList(AsUser: boolean);
 | 
|---|
| 167 | 
 | 
|---|
| 168 | implementation
 | 
|---|
| 169 | 
 | 
|---|
| 170 | uses rCore, uCore, uPCE, rProbs, rTIU, ORFn, rReminders, uReminders,
 | 
|---|
| 171 |   fRemCoverPreview;
 | 
|---|
| 172 | 
 | 
|---|
| 173 | {$R *.DFM}
 | 
|---|
| 174 | 
 | 
|---|
| 175 | const
 | 
|---|
| 176 |   DataCode: array[TRemCoverDataLevel] of string[1] =
 | 
|---|
| 177 |       { dlPackage   } ('P',
 | 
|---|
| 178 |       { dlSystem    }  'S',
 | 
|---|
| 179 |       { dlDivision  }  'D',
 | 
|---|
| 180 |       { dlService   }  'R',
 | 
|---|
| 181 |       { dlLocation  }  'L',
 | 
|---|
| 182 |       { dlUserClass }  'C',
 | 
|---|
| 183 |       { dlUser      }  'U');
 | 
|---|
| 184 | 
 | 
|---|
| 185 |   DataName: array[TRemCoverDataLevel] of string =
 | 
|---|
| 186 |       { dlPackage   } ('Package',
 | 
|---|
| 187 |       { dlSystem    }  'System',
 | 
|---|
| 188 |       { dlDivision  }  'Division',
 | 
|---|
| 189 |       { dlService   }  'Service',
 | 
|---|
| 190 |       { dlLocation  }  'Location',
 | 
|---|
| 191 |       { dlUserClass }  'User Class',
 | 
|---|
| 192 |       { dlUser      }  'User');
 | 
|---|
| 193 | 
 | 
|---|
| 194 |   InternalName: array[TRemCoverDataLevel] of string =
 | 
|---|
| 195 |       { dlPackage   } ('PKG',
 | 
|---|
| 196 |       { dlSystem    }  'SYS',
 | 
|---|
| 197 |       { dlDivision  }  'DIV',
 | 
|---|
| 198 |       { dlService   }  'SRV',
 | 
|---|
| 199 |       { dlLocation  }  'LOC',
 | 
|---|
| 200 |       { dlUserClass }  'CLASS',
 | 
|---|
| 201 |       { dlUser      }  'USR');
 | 
|---|
| 202 | 
 | 
|---|
| 203 | 
 | 
|---|
| 204 |   UserClassCode = 'C';
 | 
|---|
| 205 |   DivisionCode = 'D';
 | 
|---|
| 206 |   ServiceCode = 'S';
 | 
|---|
| 207 | 
 | 
|---|
| 208 |   CVLockCode   = 'L';
 | 
|---|
| 209 |   CVAddCode    = 'N';
 | 
|---|
| 210 |   CVRemoveCode = 'R';
 | 
|---|
| 211 |   CVCatCode    = 'C';
 | 
|---|
| 212 |   CVRemCode    = 'R';
 | 
|---|
| 213 | 
 | 
|---|
| 214 |   DummyNode = '^@Dummy Node@^';
 | 
|---|
| 215 |   IdxSeq  = 0;
 | 
|---|
| 216 |   IdxLvl  = 1;
 | 
|---|
| 217 |   IdxType = 2;
 | 
|---|
| 218 |   IdxTIEN = 3;
 | 
|---|
| 219 |   IdxLvl2 = 4;
 | 
|---|
| 220 |   IdxAdd  = 5;
 | 
|---|
| 221 |   IdxIEN  = 6;
 | 
|---|
| 222 | 
 | 
|---|
| 223 | procedure EditCoverSheetReminderList(AsUser: boolean);
 | 
|---|
| 224 | var
 | 
|---|
| 225 |   frmRemCoverSheet: TfrmRemCoverSheet;
 | 
|---|
| 226 | 
 | 
|---|
| 227 | begin
 | 
|---|
| 228 |   frmRemCoverSheet := TfrmRemCoverSheet.Create(Application);
 | 
|---|
| 229 |   try
 | 
|---|
| 230 |     frmRemCoverSheet.Init(AsUser);
 | 
|---|
| 231 |     frmRemCoverSheet.ShowModal;
 | 
|---|
| 232 |     if frmRemCoverSheet.FDataSaved then
 | 
|---|
| 233 |       ResetReminderLoad;
 | 
|---|
| 234 |   finally
 | 
|---|
| 235 |     frmRemCoverSheet.Free;
 | 
|---|
| 236 |   end;
 | 
|---|
| 237 | end;
 | 
|---|
| 238 | 
 | 
|---|
| 239 | { TfrmRemCoverSheet }
 | 
|---|
| 240 | 
 | 
|---|
| 241 | procedure TfrmRemCoverSheet.Init(AsUser: boolean);
 | 
|---|
| 242 | const
 | 
|---|
| 243 |   RemClsCode = ' NVL';
 | 
|---|
| 244 |   RemClsText:array[1..4] of string = ('','National','VISN','Local');
 | 
|---|
| 245 | 
 | 
|---|
| 246 | var
 | 
|---|
| 247 |   LocCombo: TORComboBox;
 | 
|---|
| 248 |   i, idx: integer;
 | 
|---|
| 249 |   tmp, tmp2, tmp3: string;
 | 
|---|
| 250 |   Node: TORTreeNode;
 | 
|---|
| 251 | 
 | 
|---|
| 252 | begin
 | 
|---|
| 253 |   FTopSortTag := 3;
 | 
|---|
| 254 |   FTopSortUp  := TRUE;
 | 
|---|
| 255 |   FBottomSortTag := 2;
 | 
|---|
| 256 |   FBottomSortUp := TRUE;
 | 
|---|
| 257 |   FEditingLevel := dlPackage;
 | 
|---|
| 258 | 
 | 
|---|
| 259 |   ResizeAnchoredFormToFont(self);
 | 
|---|
| 260 |   pnlBtns.Top := pnlBottom.Top + pnlBottom.Height;
 | 
|---|
| 261 | 
 | 
|---|
| 262 |   FCatInfo := TORStringList.Create;
 | 
|---|
| 263 |   FData := TORStringList.Create;
 | 
|---|
| 264 |   FUserInfo := TORStringList.Create;
 | 
|---|
| 265 |   FDivisions := TORStringList.Create;
 | 
|---|
| 266 |   FServices := TORStringList.Create;
 | 
|---|
| 267 |   FLocations := TORStringList.Create;
 | 
|---|
| 268 |   FClasses := TORStringList.Create;
 | 
|---|
| 269 |   FUsers := TORStringList.Create;
 | 
|---|
| 270 |   FMasterList := TORStringList.Create;
 | 
|---|
| 271 |   FMasterList.Assign(GetAllRemindersAndCategories);
 | 
|---|
| 272 |   for i := 0 to FMasterList.Count-1 do
 | 
|---|
| 273 |   begin
 | 
|---|
| 274 |     tmp := FMasterList[i];
 | 
|---|
| 275 |     tmp2 := piece(tmp,U,4);
 | 
|---|
| 276 |     if tmp2 = piece(tmp,U,3) then
 | 
|---|
| 277 |       tmp2 := '';
 | 
|---|
| 278 |     tmp3 := piece(tmp,U,5);
 | 
|---|
| 279 |     if tmp3 = '' then tmp3 := ' ';
 | 
|---|
| 280 |     idx := pos(tmp3,RemClsCode);
 | 
|---|
| 281 |     if idx > 0 then
 | 
|---|
| 282 |       tmp3 := RemClsText[idx]
 | 
|---|
| 283 |     else
 | 
|---|
| 284 |       tmp3 := '';
 | 
|---|
| 285 |     if tmp3 <> '' then
 | 
|---|
| 286 |     begin
 | 
|---|
| 287 |       if tmp2 <> '' then
 | 
|---|
| 288 |         tmp2 := tmp2 + ' - ';
 | 
|---|
| 289 |       tmp2 := tmp2 + tmp3;
 | 
|---|
| 290 |     end;
 | 
|---|
| 291 |     if tmp2 <> '' then
 | 
|---|
| 292 |       tmp2 := ' (' + tmp2 + ')';
 | 
|---|
| 293 |     tmp := Piece(tmp,U,1) + Pieces(tmp,U,2,3) + tmp2 + U + tmp2;
 | 
|---|
| 294 |     FMasterList[i] := tmp;
 | 
|---|
| 295 |   end;
 | 
|---|
| 296 | 
 | 
|---|
| 297 |   FUserMode := AsUser;
 | 
|---|
| 298 |   FCurUser := User.DUZ;
 | 
|---|
| 299 |   GetUserInfo(User.DUZ);
 | 
|---|
| 300 |   FCurLoc := Encounter.Location;
 | 
|---|
| 301 |   idx := FUserInfo.IndexOfPiece(DivisionCode);
 | 
|---|
| 302 |   if idx >= 0 then
 | 
|---|
| 303 |     FCurDiv := StrToIntDef(Piece(FUserInfo[idx],U,2),0)
 | 
|---|
| 304 |   else
 | 
|---|
| 305 |     FCurDiv := 0;
 | 
|---|
| 306 |   idx := FUserInfo.IndexOfPiece(ServiceCode);
 | 
|---|
| 307 |   if idx >= 0 then
 | 
|---|
| 308 |     FCurSer := StrToIntDef(Piece(FUserInfo[idx],U,2),0)
 | 
|---|
| 309 |   else
 | 
|---|
| 310 |     FCurSer := User.Service;
 | 
|---|
| 311 |   cbxUser.InitLongList(User.Name);
 | 
|---|
| 312 |   cbxUser.SelectByIEN(FCurUser);
 | 
|---|
| 313 |   GetPCECodes(FDivisions, TAG_HISTLOC);
 | 
|---|
| 314 |   FDivisions.Delete(0);
 | 
|---|
| 315 |   FCurClass := 0;
 | 
|---|
| 316 |   if AsUser then
 | 
|---|
| 317 |   begin
 | 
|---|
| 318 |     pnlCAC.Visible := FALSE;
 | 
|---|
| 319 |     LocCombo := cbxUserLoc;
 | 
|---|
| 320 |     btnLock.Visible := FALSE;
 | 
|---|
| 321 |   end
 | 
|---|
| 322 |   else
 | 
|---|
| 323 |   begin
 | 
|---|
| 324 |     pnlUser.Visible := FALSE;
 | 
|---|
| 325 |     LocCombo := cbxLocation;
 | 
|---|
| 326 |     cbxDivision.Items.Assign(FDivisions);
 | 
|---|
| 327 |     cbxDivision.SelectByIEN(FCurDiv);
 | 
|---|
| 328 |     cbxService.InitLongList(GetExternalName(dlService, FCurSer));
 | 
|---|
| 329 |     cbxService.SelectByIEN(FCurSer);
 | 
|---|
| 330 |     cbxClass.InitLongList('');
 | 
|---|
| 331 |     if FCurClass <> 0 then
 | 
|---|
| 332 |       cbxClass.SelectByIEN(FCurClass);
 | 
|---|
| 333 |   end;
 | 
|---|
| 334 |   LocCombo.InitLongList(Encounter.LocationName);
 | 
|---|
| 335 |   LocCombo.SelectByIEN(FCurLoc);
 | 
|---|
| 336 |   if AsUser then
 | 
|---|
| 337 |     cbUser.Checked := TRUE;
 | 
|---|
| 338 | 
 | 
|---|
| 339 |   tvAll.Items.BeginUpdate;
 | 
|---|
| 340 |   try
 | 
|---|
| 341 |     for i := 0 to FMasterList.Count-1 do
 | 
|---|
| 342 |     begin
 | 
|---|
| 343 |       Node := TORTreeNode(tvAll.Items.Add(nil,''));
 | 
|---|
| 344 |       Node.StringData := FMasterList[i];
 | 
|---|
| 345 |       if copy(FMasterList[i],1,1) = CVCatCode then
 | 
|---|
| 346 |       begin
 | 
|---|
| 347 |         idx := 1;
 | 
|---|
| 348 |         tvAll.Items.AddChild(Node, DummyNode);
 | 
|---|
| 349 |       end
 | 
|---|
| 350 |       else
 | 
|---|
| 351 |         idx := 0;
 | 
|---|
| 352 |       Node.ImageIndex := idx;
 | 
|---|
| 353 |       Node.SelectedIndex := idx;
 | 
|---|
| 354 |     end;
 | 
|---|
| 355 |   finally
 | 
|---|
| 356 |     tvAll.Items.EndUpdate;
 | 
|---|
| 357 |   end;
 | 
|---|
| 358 |   
 | 
|---|
| 359 |   FInitialized := TRUE;
 | 
|---|
| 360 |   UpdateView;
 | 
|---|
| 361 |   UpdateButtons;
 | 
|---|
| 362 | end;
 | 
|---|
| 363 | 
 | 
|---|
| 364 | procedure TfrmRemCoverSheet.cbxLocationNeedData(Sender: TObject;
 | 
|---|
| 365 |   const StartFrom: String; Direction, InsertAt: Integer);
 | 
|---|
| 366 | begin
 | 
|---|
| 367 |   TORComboBox(Sender).ForDataUse(SubSetOfLocations(StartFrom, Direction));
 | 
|---|
| 368 | end;
 | 
|---|
| 369 | 
 | 
|---|
| 370 | procedure TfrmRemCoverSheet.cbxServiceNeedData(Sender: TObject;
 | 
|---|
| 371 |   const StartFrom: String; Direction, InsertAt: Integer);
 | 
|---|
| 372 | begin
 | 
|---|
| 373 |   cbxService.ForDataUse(ServiceSearch(StartFrom, Direction, TRUE));
 | 
|---|
| 374 | end;
 | 
|---|
| 375 | 
 | 
|---|
| 376 | procedure TfrmRemCoverSheet.cbxUserNeedData(Sender: TObject;
 | 
|---|
| 377 |   const StartFrom: String; Direction, InsertAt: Integer);
 | 
|---|
| 378 | begin
 | 
|---|
| 379 |   cbxUser.ForDataUse(SubSetOfPersons(StartFrom, Direction));
 | 
|---|
| 380 | end;
 | 
|---|
| 381 | 
 | 
|---|
| 382 | procedure TfrmRemCoverSheet.cbxClassNeedData(Sender: TObject;
 | 
|---|
| 383 |   const StartFrom: String; Direction, InsertAt: Integer);
 | 
|---|
| 384 | begin
 | 
|---|
| 385 |   cbxClass.ForDataUse(SubSetOfUserClasses(StartFrom, Direction));
 | 
|---|
| 386 | end;
 | 
|---|
| 387 | 
 | 
|---|
| 388 | procedure TfrmRemCoverSheet.FormDestroy(Sender: TObject);
 | 
|---|
| 389 | begin
 | 
|---|
| 390 |   FMasterList.Free;
 | 
|---|
| 391 |   FUsers.Free;
 | 
|---|
| 392 |   FClasses.Free;
 | 
|---|
| 393 |   FLocations.Free;
 | 
|---|
| 394 |   FServices.Free;
 | 
|---|
| 395 |   FDivisions.Free;
 | 
|---|
| 396 |   FUserInfo.Free;
 | 
|---|
| 397 |   FData.KillObjects;
 | 
|---|
| 398 |   FData.Free;
 | 
|---|
| 399 |   FCatInfo.KillObjects;
 | 
|---|
| 400 |   FCatInfo.Free;
 | 
|---|
| 401 | end;
 | 
|---|
| 402 | 
 | 
|---|
| 403 | procedure TfrmRemCoverSheet.GetUserInfo(AUser: Int64);
 | 
|---|
| 404 | begin
 | 
|---|
| 405 |   if FUser <> AUser then
 | 
|---|
| 406 |   begin
 | 
|---|
| 407 |     FUser := AUser;
 | 
|---|
| 408 |     FUserInfo.Assign(UserDivClassInfo(FUser));
 | 
|---|
| 409 |   end;
 | 
|---|
| 410 | end;
 | 
|---|
| 411 | 
 | 
|---|
| 412 | function TfrmRemCoverSheet.GetCurrent(IEN: Int64; Level: TRemCoverDataLevel;
 | 
|---|
| 413 |                            Show: boolean; Add: boolean = FALSE): TORStringList;
 | 
|---|
| 414 | var
 | 
|---|
| 415 |   lvl, cls, sIEN: string;
 | 
|---|
| 416 |   tmpSL: TORStringList;
 | 
|---|
| 417 |   i, idx: integer;
 | 
|---|
| 418 | 
 | 
|---|
| 419 | begin
 | 
|---|
| 420 |   idx := FData.IndexOfPiece(DataCode[Level] + IntToStr(IEN));
 | 
|---|
| 421 |   if idx < 0 then
 | 
|---|
| 422 |   begin
 | 
|---|
| 423 |     if (IEN = 0) and (not (Level in [dlPackage, dlSystem])) then
 | 
|---|
| 424 |     begin
 | 
|---|
| 425 |       Result := nil;
 | 
|---|
| 426 |       exit;
 | 
|---|
| 427 |     end;
 | 
|---|
| 428 |     cls := '';
 | 
|---|
| 429 |     sIEN := IntToStr(IEN);
 | 
|---|
| 430 |     lvl := InternalName[Level];
 | 
|---|
| 431 |     case Level of
 | 
|---|
| 432 |       dlDivision, dlService, dlLocation, dlUser:
 | 
|---|
| 433 |         lvl := lvl + '.`' + sIEN;
 | 
|---|
| 434 |       dlUserClass:
 | 
|---|
| 435 |         cls := sIEN;
 | 
|---|
| 436 |     end;
 | 
|---|
| 437 |     if (lvl <> '') then
 | 
|---|
| 438 |     begin
 | 
|---|
| 439 |       tmpSL := TORStringList.Create;
 | 
|---|
| 440 |       try
 | 
|---|
| 441 |         tmpSL.Assign(GetCoverSheetLvlData(lvl, cls));
 | 
|---|
| 442 |         if (not Add) and (tmpSL.Count = 0) then
 | 
|---|
| 443 |           FreeAndNil(tmpSL);
 | 
|---|
| 444 |         idx := FData.AddObject(DataCode[Level] + IntToStr(IEN), tmpSL);
 | 
|---|
| 445 |       except
 | 
|---|
| 446 |         tmpSL.Free;
 | 
|---|
| 447 |         raise;
 | 
|---|
| 448 |       end;
 | 
|---|
| 449 |     end;
 | 
|---|
| 450 |   end;
 | 
|---|
| 451 |   if idx >= 0 then
 | 
|---|
| 452 |   begin
 | 
|---|
| 453 |     tmpSL := TORStringList(FData.Objects[idx]);
 | 
|---|
| 454 |     if Add and (not assigned(tmpSL)) then
 | 
|---|
| 455 |     begin
 | 
|---|
| 456 |       tmpSL := TORStringList.Create;
 | 
|---|
| 457 |       FData.Objects[idx] := tmpSL;
 | 
|---|
| 458 |     end;
 | 
|---|
| 459 |   end
 | 
|---|
| 460 |   else
 | 
|---|
| 461 |     tmpSL := nil;
 | 
|---|
| 462 |   if Show and assigned(tmpSL) then
 | 
|---|
| 463 |   begin
 | 
|---|
| 464 |     for i := 0 to tmpSL.Count-1 do
 | 
|---|
| 465 |       SetupItem(lvView.Items.Add, tmpSL[i], Level, IEN);
 | 
|---|
| 466 |   end;
 | 
|---|
| 467 |   Result := tmpSL;
 | 
|---|
| 468 | end;
 | 
|---|
| 469 | 
 | 
|---|
| 470 | procedure TfrmRemCoverSheet.UpdateView;
 | 
|---|
| 471 | var
 | 
|---|
| 472 |   idx: integer;
 | 
|---|
| 473 | 
 | 
|---|
| 474 | begin
 | 
|---|
| 475 |   if FInitialized and (not FUpdatingView) then
 | 
|---|
| 476 |   begin
 | 
|---|
| 477 |     lvView.Items.BeginUpdate;
 | 
|---|
| 478 |     try
 | 
|---|
| 479 |       lvView.Items.Clear;
 | 
|---|
| 480 |       GetCurrent(0, dlPackage, TRUE);
 | 
|---|
| 481 |       GetCurrent(0, dlSystem, TRUE);
 | 
|---|
| 482 |       GetCurrent(FCurDiv, dlDivision, TRUE);
 | 
|---|
| 483 |       GetCurrent(FCurSer, dlService, TRUE);
 | 
|---|
| 484 |       GetCurrent(FCurLoc, dlLocation, TRUE);
 | 
|---|
| 485 |       if FCurClass > 0 then
 | 
|---|
| 486 |         GetCurrent(FCurClass, dlUserClass, TRUE)
 | 
|---|
| 487 |       else
 | 
|---|
| 488 |       begin
 | 
|---|
| 489 |         idx := -1;
 | 
|---|
| 490 |         repeat
 | 
|---|
| 491 |           idx := FUserInfo.IndexOfPiece(UserClassCode,U,1,idx);
 | 
|---|
| 492 |           if idx >= 0 then
 | 
|---|
| 493 |             GetCurrent(StrToIntDef(Piece(FUserInfo[idx],U,2),0), dlUserClass, TRUE)
 | 
|---|
| 494 |         until(idx < 0);
 | 
|---|
| 495 |       end;
 | 
|---|
| 496 |       GetCurrent(FCurUser, dlUser, TRUE);
 | 
|---|
| 497 |     finally
 | 
|---|
| 498 |       lvView.Items.EndUpdate;
 | 
|---|
| 499 |     end;
 | 
|---|
| 500 |   end;
 | 
|---|
| 501 | end;
 | 
|---|
| 502 | 
 | 
|---|
| 503 | procedure TfrmRemCoverSheet.SetupItem(Item: TListItem; const Data: string);
 | 
|---|
| 504 | var
 | 
|---|
| 505 |   AddCode, RemCode, rIEN, Seq: string;
 | 
|---|
| 506 | 
 | 
|---|
| 507 | begin
 | 
|---|
| 508 |   Seq := Piece(Data,U,1);
 | 
|---|
| 509 |   rIEN := Piece(Data,U,2);
 | 
|---|
| 510 |   Item.Caption := Piece(Data,U,3);
 | 
|---|
| 511 |   AddCode := copy(rIEN,1,1);
 | 
|---|
| 512 |   RemCode := copy(rIEN,2,1);
 | 
|---|
| 513 |   delete(rIEN,1,1);
 | 
|---|
| 514 |   if AddCode = CVLockCode then
 | 
|---|
| 515 |     Item.StateIndex := 5
 | 
|---|
| 516 |   else
 | 
|---|
| 517 |   if AddCode = CVRemoveCode then
 | 
|---|
| 518 |     Item.StateIndex := 4
 | 
|---|
| 519 |   else
 | 
|---|
| 520 |   if AddCode = CVAddCode then
 | 
|---|
| 521 |     Item.StateIndex := 3;
 | 
|---|
| 522 |   if RemCode = CVCatCode then
 | 
|---|
| 523 |     Item.ImageIndex := 1
 | 
|---|
| 524 |   else
 | 
|---|
| 525 |   if RemCode = CVRemCode then
 | 
|---|
| 526 |     Item.ImageIndex := 0
 | 
|---|
| 527 |   else
 | 
|---|
| 528 |     Item.ImageIndex := -1;
 | 
|---|
| 529 |   Item.SubItems.Clear;
 | 
|---|
| 530 |   Item.SubItems.Add(Seq);     // IdxSeq  = 0
 | 
|---|
| 531 |   Item.SubItems.Add('');      // IdxLvl  = 1
 | 
|---|
| 532 |   Item.SubItems.Add('');      // IdxType = 2
 | 
|---|
| 533 |   Item.SubItems.Add('');      // IdxTIEN = 3
 | 
|---|
| 534 |   Item.SubItems.Add('');      // IdxLvl2 = 4
 | 
|---|
| 535 |   Item.SubItems.Add(AddCode); // IdxAdd  = 5
 | 
|---|
| 536 |   Item.SubItems.Add(rIEN);    // IdxIEN  = 6
 | 
|---|
| 537 | end;
 | 
|---|
| 538 | 
 | 
|---|
| 539 | procedure TfrmRemCoverSheet.SetupItem(Item: TListItem; const Data: string;
 | 
|---|
| 540 |                          Level: TRemCoverDataLevel; IEN: Int64);
 | 
|---|
| 541 | begin
 | 
|---|
| 542 |   SetupItem(Item, Data);
 | 
|---|
| 543 |   Item.SubItems[IdxLvl]  := DataName[Level];
 | 
|---|
| 544 |   Item.SubItems[IdxType] := GetExternalName(Level, IEN);
 | 
|---|
| 545 |   Item.SubItems[IdxTIEN] := IntToStr(IEN);
 | 
|---|
| 546 |   Item.SubItems[IdxLvl2] := IntToStr(ord(Level));
 | 
|---|
| 547 | end;
 | 
|---|
| 548 | 
 | 
|---|
| 549 | function TfrmRemCoverSheet.GetExternalName(Level: TRemCoverDataLevel; IEN: Int64): string;
 | 
|---|
| 550 | 
 | 
|---|
| 551 |   function GetNameFromList(List: TORStringList; IEN: Int64; FileNum: Double): string;
 | 
|---|
| 552 |   var
 | 
|---|
| 553 |     idx: integer;
 | 
|---|
| 554 | 
 | 
|---|
| 555 |   begin
 | 
|---|
| 556 |     idx := List.IndexOfPiece(IntToStr(IEN));
 | 
|---|
| 557 |     if idx < 0 then
 | 
|---|
| 558 |       idx := List.Add(IntToStr(IEN) + U + ExternalName(IEN, FileNum));
 | 
|---|
| 559 |     Result := piece(List[idx],U,2);
 | 
|---|
| 560 |   end;
 | 
|---|
| 561 | 
 | 
|---|
| 562 | begin
 | 
|---|
| 563 |   case Level of
 | 
|---|
| 564 |     dlDivision:  Result := GetNameFromList(FDivisions, IEN, 4);
 | 
|---|
| 565 |     dlService:   Result := GetNameFromList(FServices, IEN, 49);
 | 
|---|
| 566 |     dlLocation:  Result := GetNameFromList(FLocations, IEN, 44);
 | 
|---|
| 567 |     dlUserClass: Result := GetNameFromList(FClasses, IEN, 8930);
 | 
|---|
| 568 |     dlUser:      Result := GetNameFromList(FUsers, IEN, 200);
 | 
|---|
| 569 |     else         Result := '';
 | 
|---|
| 570 |   end;
 | 
|---|
| 571 | end;
 | 
|---|
| 572 | 
 | 
|---|
| 573 | procedure TfrmRemCoverSheet.cbxDivisionChange(Sender: TObject);
 | 
|---|
| 574 | begin
 | 
|---|
| 575 |   FCurDiv := cbxDivision.ItemIEN;
 | 
|---|
| 576 |   FUpdatePending := cbDivision;
 | 
|---|
| 577 |   if not cbxDivision.DroppedDown then
 | 
|---|
| 578 |     cbxDropDownClose(nil);
 | 
|---|
| 579 | end;
 | 
|---|
| 580 | 
 | 
|---|
| 581 | procedure TfrmRemCoverSheet.cbxServiceChange(Sender: TObject);
 | 
|---|
| 582 | begin
 | 
|---|
| 583 |   FCurSer := cbxService.ItemIEN;
 | 
|---|
| 584 |   FUpdatePending := cbService;
 | 
|---|
| 585 |   if not cbxService.DroppedDown then
 | 
|---|
| 586 |     cbxDropDownClose(nil);
 | 
|---|
| 587 | end;
 | 
|---|
| 588 | 
 | 
|---|
| 589 | procedure TfrmRemCoverSheet.cbxLocationChange(Sender: TObject);
 | 
|---|
| 590 | begin
 | 
|---|
| 591 |   FCurLoc := TORComboBox(Sender).ItemIEN;
 | 
|---|
| 592 |   FUpdatePending := cbLocation;
 | 
|---|
| 593 |   if not TORComboBox(Sender).DroppedDown then
 | 
|---|
| 594 |     cbxDropDownClose(nil);
 | 
|---|
| 595 | end;
 | 
|---|
| 596 | 
 | 
|---|
| 597 | procedure TfrmRemCoverSheet.cbxClassChange(Sender: TObject);
 | 
|---|
| 598 | begin
 | 
|---|
| 599 |   FCurClass := cbxClass.ItemIEN;
 | 
|---|
| 600 |   FUpdatePending := cbUserClass;
 | 
|---|
| 601 |   if not cbxClass.DroppedDown then
 | 
|---|
| 602 |     cbxDropDownClose(nil);
 | 
|---|
| 603 | end;
 | 
|---|
| 604 | 
 | 
|---|
| 605 | procedure TfrmRemCoverSheet.cbxUserChange(Sender: TObject);
 | 
|---|
| 606 | var
 | 
|---|
| 607 |   NewVal, idx: integer;
 | 
|---|
| 608 | 
 | 
|---|
| 609 | begin
 | 
|---|
| 610 |   FCurUser := cbxUser.ItemIEN;
 | 
|---|
| 611 |   GetUserInfo(FCurUser);
 | 
|---|
| 612 |   idx := FUserInfo.IndexOfPiece(DivisionCode);
 | 
|---|
| 613 |   if idx >= 0 then
 | 
|---|
| 614 |   begin
 | 
|---|
| 615 |     NewVal := StrToIntDef(Piece(FUserInfo[idx],U,2),0);
 | 
|---|
| 616 |     if NewVal <> FCurDiv then
 | 
|---|
| 617 |     begin
 | 
|---|
| 618 |       FCurDiv := NewVal;
 | 
|---|
| 619 |       cbxDivision.InitLongList(GetExternalName(dlDivision, NewVal));
 | 
|---|
| 620 |       cbxDivision.SelectByIEN(NewVal);
 | 
|---|
| 621 |     end;
 | 
|---|
| 622 |   end;
 | 
|---|
| 623 |   idx := FUserInfo.IndexOfPiece(ServiceCode);
 | 
|---|
| 624 |   if idx >= 0 then
 | 
|---|
| 625 |   begin
 | 
|---|
| 626 |     NewVal := StrToIntDef(Piece(FUserInfo[idx],U,2),0);
 | 
|---|
| 627 |     if NewVal <> FCurSer then
 | 
|---|
| 628 |     begin
 | 
|---|
| 629 |       FCurSer := NewVal;
 | 
|---|
| 630 |       cbxService.InitLongList(GetExternalName(dlService, NewVal));
 | 
|---|
| 631 |       cbxService.SelectByIEN(NewVal);
 | 
|---|
| 632 |     end;
 | 
|---|
| 633 |   end;
 | 
|---|
| 634 |   FCurClass := 0;
 | 
|---|
| 635 |   cbxClass.ItemIndex := -1;
 | 
|---|
| 636 |   FUpdatePending := cbUser;
 | 
|---|
| 637 |   if not cbxUser.DroppedDown then
 | 
|---|
| 638 |     cbxDropDownClose(nil);
 | 
|---|
| 639 | end;
 | 
|---|
| 640 | 
 | 
|---|
| 641 | procedure TfrmRemCoverSheet.cbxDropDownClose(Sender: TObject);
 | 
|---|
| 642 | begin
 | 
|---|
| 643 |   if assigned(FUpdatePending) then
 | 
|---|
| 644 |   begin
 | 
|---|
| 645 |     UpdateView;
 | 
|---|
| 646 |     if FInitialized and (not FUserMode) then
 | 
|---|
| 647 |     begin
 | 
|---|
| 648 |       if FUpdatePending.Checked then
 | 
|---|
| 649 |         cbEditLevelClick(FUpdatePending)
 | 
|---|
| 650 |       else
 | 
|---|
| 651 |         FUpdatePending.Checked := TRUE;
 | 
|---|
| 652 |     end;
 | 
|---|
| 653 |     FUpdatePending := nil;
 | 
|---|
| 654 |   end;
 | 
|---|
| 655 | end;
 | 
|---|
| 656 | 
 | 
|---|
| 657 | procedure TfrmRemCoverSheet.cbEditLevelClick(Sender: TObject);
 | 
|---|
| 658 | var
 | 
|---|
| 659 |   cb: TORCheckBox;
 | 
|---|
| 660 |   tmp: string;
 | 
|---|
| 661 | 
 | 
|---|
| 662 | begin
 | 
|---|
| 663 |   cb := TORCheckBox(Sender);
 | 
|---|
| 664 |   if cb.Checked then
 | 
|---|
| 665 |   begin
 | 
|---|
| 666 |     FEditingLevel := TRemCoverDataLevel(cb.Tag);
 | 
|---|
| 667 |     if FEditingLevel <> dlUserClass then
 | 
|---|
| 668 |     begin
 | 
|---|
| 669 |       FCurClass := 0;
 | 
|---|
| 670 |       cbxClass.ItemIndex := -1;
 | 
|---|
| 671 |     end;
 | 
|---|
| 672 |     case FEditingLevel of
 | 
|---|
| 673 |       dlDivision:  FEditingIEN := FCurDiv;
 | 
|---|
| 674 |       dlService:   FEditingIEN := FCurSer;
 | 
|---|
| 675 |       dlLocation:  FEditingIEN := FCurLoc;
 | 
|---|
| 676 |       dlUserClass: FEditingIEN := FCurClass;
 | 
|---|
| 677 |       dlUser:      FEditingIEN := FCurUser;
 | 
|---|
| 678 |       else         FEditingIEN := 0;
 | 
|---|
| 679 |     end;
 | 
|---|
| 680 |     if FEditingIEN = 0 then
 | 
|---|
| 681 |       tmp := ' '
 | 
|---|
| 682 |     else
 | 
|---|
| 683 |       tmp := ': ';
 | 
|---|
| 684 |     lblEdit.Caption := '  Editing Cover Sheet Reminders for ' + DataName[FEditingLevel] +
 | 
|---|
| 685 |                         tmp + GetExternalName(FEditingLevel, FEditingIEN);
 | 
|---|
| 686 |     lvCover.Columns[0].Caption := DataName[FEditingLevel] + ' Level Reminders';
 | 
|---|
| 687 |     UpdateView;
 | 
|---|
| 688 |     UpdateMasterListView;
 | 
|---|
| 689 |   end
 | 
|---|
| 690 |   else
 | 
|---|
| 691 |   begin
 | 
|---|
| 692 |     FEditingLevel := dlPackage;
 | 
|---|
| 693 |     FEditingIEN := 0;
 | 
|---|
| 694 |     lblEdit.Caption := '';
 | 
|---|
| 695 |     lvCover.Items.BeginUpdate;
 | 
|---|
| 696 |     try
 | 
|---|
| 697 |       lvCover.Items.Clear;
 | 
|---|
| 698 |     finally
 | 
|---|
| 699 |       lvCover.Items.EndUpdate;
 | 
|---|
| 700 |     end;
 | 
|---|
| 701 |   end;
 | 
|---|
| 702 | 
 | 
|---|
| 703 | end;
 | 
|---|
| 704 | 
 | 
|---|
| 705 | procedure TfrmRemCoverSheet.UpdateMasterListView;
 | 
|---|
| 706 | var
 | 
|---|
| 707 |   i: integer;
 | 
|---|
| 708 |   tmpSL: TStringList;
 | 
|---|
| 709 |   itm: TListItem;
 | 
|---|
| 710 | 
 | 
|---|
| 711 | begin
 | 
|---|
| 712 |   lvCover.Items.BeginUpdate;
 | 
|---|
| 713 |   try
 | 
|---|
| 714 |     lvCover.Items.Clear;
 | 
|---|
| 715 |     if FEditingLevel <> dlPackage then
 | 
|---|
| 716 |     begin
 | 
|---|
| 717 |       tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE);
 | 
|---|
| 718 |       if assigned(tmpSL) then
 | 
|---|
| 719 |       begin
 | 
|---|
| 720 |         for i := 0 to tmpSL.Count-1 do
 | 
|---|
| 721 |         begin
 | 
|---|
| 722 |           itm := lvCover.Items.Add;
 | 
|---|
| 723 |           SetupItem(itm, tmpSL[i]);
 | 
|---|
| 724 |         end;
 | 
|---|
| 725 |       end;
 | 
|---|
| 726 |     end;
 | 
|---|
| 727 |   finally
 | 
|---|
| 728 |     lvCover.Items.EndUpdate;
 | 
|---|
| 729 |   end;
 | 
|---|
| 730 |   UpdateButtons;
 | 
|---|
| 731 | end;
 | 
|---|
| 732 | 
 | 
|---|
| 733 | procedure TfrmRemCoverSheet.UpdateButtons;
 | 
|---|
| 734 | var
 | 
|---|
| 735 |   ok: boolean;
 | 
|---|
| 736 |   i: integer;
 | 
|---|
| 737 |   Current, Lowest, Highest: integer;
 | 
|---|
| 738 | 
 | 
|---|
| 739 | begin
 | 
|---|
| 740 |   lvCover.Enabled := (FEditingLevel <> dlPackage);
 | 
|---|
| 741 |   ok := assigned(tvAll.Selected) and (FEditingLevel <> dlPackage);
 | 
|---|
| 742 |   sbCopyRight.Enabled := ok;
 | 
|---|
| 743 | 
 | 
|---|
| 744 |   ok := assigned(lvCover.Selected) and (FEditingLevel <> dlPackage);
 | 
|---|
| 745 |   sbCopyLeft.Enabled := ok;
 | 
|---|
| 746 | 
 | 
|---|
| 747 |   ok := assigned(lvCover.Selected);
 | 
|---|
| 748 |   lblSeq.Enabled := ok;
 | 
|---|
| 749 |   edtSeq.Enabled := ok;
 | 
|---|
| 750 | 
 | 
|---|
| 751 |   FUpdating := TRUE;
 | 
|---|
| 752 |   try
 | 
|---|
| 753 |     udSeq.Enabled := ok;
 | 
|---|
| 754 |     if ok then
 | 
|---|
| 755 |       udSeq.Position := StrToIntDef(lvCover.Selected.SubItems[IdxSeq],1)
 | 
|---|
| 756 |     else
 | 
|---|
| 757 |       udSeq.Position := 1;
 | 
|---|
| 758 |   finally
 | 
|---|
| 759 |     FUpdating := FALSE;
 | 
|---|
| 760 |   end;
 | 
|---|
| 761 | 
 | 
|---|
| 762 |   btnAdd.Enabled := ok;
 | 
|---|
| 763 |   btnRemove.Enabled := ok;
 | 
|---|
| 764 |   btnLock.Enabled := ok and (FEditingLevel <> dlUser);
 | 
|---|
| 765 |   if ok then
 | 
|---|
| 766 |     ok :=(lvCover.Items.Count > 1);
 | 
|---|
| 767 |   Lowest := 99999;
 | 
|---|
| 768 |   Highest := -1;
 | 
|---|
| 769 |   if ok then
 | 
|---|
| 770 |   begin
 | 
|---|
| 771 |     for i := 0 to lvCover.Items.Count-1 do
 | 
|---|
| 772 |     begin
 | 
|---|
| 773 |       Current := StrToIntDef(lvCover.Items[i].SubItems[IdxSeq], 0);
 | 
|---|
| 774 |       if Lowest > Current then
 | 
|---|
| 775 |         Lowest := Current;
 | 
|---|
| 776 |       if Highest < Current then
 | 
|---|
| 777 |         Highest := Current;
 | 
|---|
| 778 |     end;
 | 
|---|
| 779 |     Current := StrToIntDef(lvCover.Selected.SubItems[IdxSeq], 0)
 | 
|---|
| 780 |   end
 | 
|---|
| 781 |   else
 | 
|---|
| 782 |     Current := 0;
 | 
|---|
| 783 |   sbUp.Enabled := ok and (Current > Lowest);
 | 
|---|
| 784 |   sbDown.Enabled := ok and (Current < Highest);
 | 
|---|
| 785 | end;
 | 
|---|
| 786 | 
 | 
|---|
| 787 | procedure TfrmRemCoverSheet.tvAllExpanding(Sender: TObject;
 | 
|---|
| 788 |   Node: TTreeNode; var AllowExpansion: Boolean);
 | 
|---|
| 789 | var
 | 
|---|
| 790 |   List: TORStringList;
 | 
|---|
| 791 |   i, idx: integer;
 | 
|---|
| 792 |   CNode: TORTreeNode;
 | 
|---|
| 793 | 
 | 
|---|
| 794 | begin
 | 
|---|
| 795 |   if Node.GetFirstChild.Text = DummyNode then
 | 
|---|
| 796 |   begin
 | 
|---|
| 797 |     Node.DeleteChildren;
 | 
|---|
| 798 |     List := GetCatInfo(copy(piece(TORTreeNode(Node).StringData,U,1),2,99));
 | 
|---|
| 799 |     if assigned(List) then
 | 
|---|
| 800 |     begin
 | 
|---|
| 801 |       for i := 0 to List.Count-1 do
 | 
|---|
| 802 |       begin
 | 
|---|
| 803 |         CNode := TORTreeNode(tvAll.Items.AddChild(Node,''));
 | 
|---|
| 804 |         CNode.StringData := List[i];
 | 
|---|
| 805 |         if copy(List[i],1,1) = CVCatCode then
 | 
|---|
| 806 |         begin
 | 
|---|
| 807 |           idx := 1;
 | 
|---|
| 808 |           tvAll.Items.AddChild(CNode, DummyNode);
 | 
|---|
| 809 |         end
 | 
|---|
| 810 |         else
 | 
|---|
| 811 |           idx := 0;
 | 
|---|
| 812 |         CNode.ImageIndex := idx;
 | 
|---|
| 813 |         CNode.SelectedIndex := idx;
 | 
|---|
| 814 |       end;
 | 
|---|
| 815 |     end;
 | 
|---|
| 816 |   end;
 | 
|---|
| 817 |   if FInternalExpansion then
 | 
|---|
| 818 |     AllowExpansion := FALSE
 | 
|---|
| 819 |   else
 | 
|---|
| 820 |     AllowExpansion := Node.HasChildren;
 | 
|---|
| 821 | end;
 | 
|---|
| 822 | 
 | 
|---|
| 823 | function TfrmRemCoverSheet.GetCatInfo(CatIEN: string): TORStringList;
 | 
|---|
| 824 | var
 | 
|---|
| 825 |   i, j, idx: integer;
 | 
|---|
| 826 |   tmp: string;
 | 
|---|
| 827 |   tmpSL: TStrings;
 | 
|---|
| 828 | 
 | 
|---|
| 829 | begin
 | 
|---|
| 830 |   idx := FCatInfo.IndexOf(CatIEN);
 | 
|---|
| 831 |   if idx < 0 then
 | 
|---|
| 832 |   begin
 | 
|---|
| 833 |     Result := TORStringList.Create;
 | 
|---|
| 834 |     try
 | 
|---|
| 835 |       tmpSL := GetCategoryItems(StrToIntDef(CatIEN,0));
 | 
|---|
| 836 |       for i := 0 to tmpSL.Count-1 do
 | 
|---|
| 837 |       begin
 | 
|---|
| 838 |         tmp := copy(tmpSL[i],1,1);
 | 
|---|
| 839 |         if tmp = CVCatCode then
 | 
|---|
| 840 |           idx := 3
 | 
|---|
| 841 |         else
 | 
|---|
| 842 |           idx := 4;
 | 
|---|
| 843 |         tmp := tmp + Piece(tmpSL[i],U,2) + U + Piece(tmpSL[i],U,idx);
 | 
|---|
| 844 |         j := FMasterList.IndexOfPiece(piece(tmp,U,1));
 | 
|---|
| 845 |         if j >= 0 then
 | 
|---|
| 846 |           tmp := tmp + piece(FMasterList[j],U,3);
 | 
|---|
| 847 |         Result.Add(tmp);
 | 
|---|
| 848 |       end;
 | 
|---|
| 849 |       FCatInfo.AddObject(CatIEN, Result);
 | 
|---|
| 850 |     except
 | 
|---|
| 851 |       Result.Free;
 | 
|---|
| 852 |       raise;
 | 
|---|
| 853 |     end;
 | 
|---|
| 854 |   end
 | 
|---|
| 855 |   else
 | 
|---|
| 856 |     Result := TORStringList(FCatInfo.Objects[idx]);
 | 
|---|
| 857 | end;
 | 
|---|
| 858 | 
 | 
|---|
| 859 | procedure TfrmRemCoverSheet.MarkListAsChanged;
 | 
|---|
| 860 | var
 | 
|---|
| 861 |   tmp: string;
 | 
|---|
| 862 |   idx: integer;
 | 
|---|
| 863 | 
 | 
|---|
| 864 | begin
 | 
|---|
| 865 |   idx := FData.IndexOfPiece(DataCode[FEditingLevel] + IntToStr(FEditingIEN));
 | 
|---|
| 866 |   if idx >= 0 then
 | 
|---|
| 867 |   begin
 | 
|---|
| 868 |     tmp := FData[idx];
 | 
|---|
| 869 |     SetPiece(Tmp,U,2,BoolChar[TRUE]);
 | 
|---|
| 870 |     FData[idx] := tmp;
 | 
|---|
| 871 |     btnApply.Enabled := TRUE;
 | 
|---|
| 872 |     UpdateView;
 | 
|---|
| 873 |   end;
 | 
|---|
| 874 | end;
 | 
|---|
| 875 | 
 | 
|---|
| 876 | procedure TfrmRemCoverSheet.edtSeqChange(Sender: TObject);
 | 
|---|
| 877 | begin
 | 
|---|
| 878 |   if FUpdating or (not FInitialized) then exit;
 | 
|---|
| 879 |   if FBottomSortTag <> 2 then
 | 
|---|
| 880 |   begin
 | 
|---|
| 881 |     FBottomSortTag := 2;
 | 
|---|
| 882 |     lvCover.CustomSort(nil, 0);
 | 
|---|
| 883 |   end;
 | 
|---|
| 884 |   SetSeq(lvCover.Selected, IntToStr(udSeq.Position));
 | 
|---|
| 885 |   lvCover.CustomSort(nil, 0);
 | 
|---|
| 886 |   UpdateButtons;
 | 
|---|
| 887 | end;
 | 
|---|
| 888 | 
 | 
|---|
| 889 | procedure TfrmRemCoverSheet.tvAllExpanded(Sender: TObject;
 | 
|---|
| 890 |   Node: TTreeNode);
 | 
|---|
| 891 | var
 | 
|---|
| 892 |   idx: integer;
 | 
|---|
| 893 | 
 | 
|---|
| 894 | begin
 | 
|---|
| 895 |   if Node.Expanded then
 | 
|---|
| 896 |     idx := 2
 | 
|---|
| 897 |   else
 | 
|---|
| 898 |     idx := 1;
 | 
|---|
| 899 |   Node.ImageIndex := idx;
 | 
|---|
| 900 |   Node.SelectedIndex := idx;
 | 
|---|
| 901 | end;
 | 
|---|
| 902 | 
 | 
|---|
| 903 | procedure TfrmRemCoverSheet.tvAllChange(Sender: TObject; Node: TTreeNode);
 | 
|---|
| 904 | begin
 | 
|---|
| 905 |   UpdateButtons;
 | 
|---|
| 906 | end;
 | 
|---|
| 907 | 
 | 
|---|
| 908 | procedure TfrmRemCoverSheet.lvCoverChange(Sender: TObject; Item: TListItem;
 | 
|---|
| 909 |   Change: TItemChange);
 | 
|---|
| 910 | begin
 | 
|---|
| 911 |   UpdateButtons;
 | 
|---|
| 912 | end;
 | 
|---|
| 913 | 
 | 
|---|
| 914 | function TfrmRemCoverSheet.GetIndex(List: TORStringList;
 | 
|---|
| 915 |   Item: TListItem): integer;
 | 
|---|
| 916 | var
 | 
|---|
| 917 |   IEN: string;
 | 
|---|
| 918 | 
 | 
|---|
| 919 | begin
 | 
|---|
| 920 |   if assigned(Item) and assigned(List) then
 | 
|---|
| 921 |   begin
 | 
|---|
| 922 |     IEN := Item.SubItems[IdxAdd] + Item.SubItems[IdxIEN];
 | 
|---|
| 923 |     Result := List.IndexOfPiece(IEN,U,2);
 | 
|---|
| 924 |   end
 | 
|---|
| 925 |   else
 | 
|---|
| 926 |     Result := -1;
 | 
|---|
| 927 | end;
 | 
|---|
| 928 | 
 | 
|---|
| 929 | procedure TfrmRemCoverSheet.ChangeStatus(Code: string);
 | 
|---|
| 930 | var
 | 
|---|
| 931 |   tmpSL: TORStringList;
 | 
|---|
| 932 |   Idx: integer;
 | 
|---|
| 933 |   tmp,p: string;
 | 
|---|
| 934 | 
 | 
|---|
| 935 | begin
 | 
|---|
| 936 |   tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE);
 | 
|---|
| 937 |   if assigned(tmpSL) then
 | 
|---|
| 938 |   begin
 | 
|---|
| 939 |     Idx := GetIndex(tmpSL, lvCover.Selected);
 | 
|---|
| 940 |     if Idx >= 0 then
 | 
|---|
| 941 |     begin
 | 
|---|
| 942 |       tmp := tmpSL[idx];
 | 
|---|
| 943 |       p := Piece(tmp,U,2);
 | 
|---|
| 944 |       SetPiece(tmp,U,2,Code + copy(p,2,MaxInt));
 | 
|---|
| 945 |       tmpSL[idx] := tmp;
 | 
|---|
| 946 |       MarkListAsChanged;
 | 
|---|
| 947 |       SetupItem(lvCover.Selected, tmp);
 | 
|---|
| 948 |     end;
 | 
|---|
| 949 |   end;
 | 
|---|
| 950 | end;
 | 
|---|
| 951 | 
 | 
|---|
| 952 | procedure TfrmRemCoverSheet.btnAddClick(Sender: TObject);
 | 
|---|
| 953 | begin
 | 
|---|
| 954 |   ChangeStatus(CVAddCode);
 | 
|---|
| 955 | end;
 | 
|---|
| 956 | 
 | 
|---|
| 957 | procedure TfrmRemCoverSheet.btnRemoveClick(Sender: TObject);
 | 
|---|
| 958 | begin
 | 
|---|
| 959 |   ChangeStatus(CVRemoveCode);
 | 
|---|
| 960 | end;
 | 
|---|
| 961 | 
 | 
|---|
| 962 | procedure TfrmRemCoverSheet.btnLockClick(Sender: TObject);
 | 
|---|
| 963 | begin
 | 
|---|
| 964 |   ChangeStatus(CVLockCode);
 | 
|---|
| 965 | end;
 | 
|---|
| 966 | 
 | 
|---|
| 967 | procedure TfrmRemCoverSheet.lvViewColumnClick(Sender: TObject;
 | 
|---|
| 968 |   Column: TListColumn);
 | 
|---|
| 969 | begin
 | 
|---|
| 970 |   if FTopSortTag = Column.Tag then
 | 
|---|
| 971 |     FTopSortUp := not FTopSortUp
 | 
|---|
| 972 |   else
 | 
|---|
| 973 |     FTopSortTag := Column.Tag;
 | 
|---|
| 974 |   lvView.CustomSort(nil, 0);
 | 
|---|
| 975 | end;
 | 
|---|
| 976 | 
 | 
|---|
| 977 | type
 | 
|---|
| 978 |   TSortData = (sdRem, sdSeq, sdLvl, sdOther);
 | 
|---|
| 979 | 
 | 
|---|
| 980 | procedure TfrmRemCoverSheet.lvCoverColumnClick(Sender: TObject;
 | 
|---|
| 981 |   Column: TListColumn);
 | 
|---|
| 982 | begin
 | 
|---|
| 983 |   if FBottomSortTag = Column.Tag then
 | 
|---|
| 984 |     FBottomSortUp := not FBottomSortUp
 | 
|---|
| 985 |   else
 | 
|---|
| 986 |     FBottomSortTag := Column.Tag;
 | 
|---|
| 987 |   lvCover.CustomSort(nil, 0);
 | 
|---|
| 988 | end;
 | 
|---|
| 989 | 
 | 
|---|
| 990 | procedure TfrmRemCoverSheet.lvViewCompare(Sender: TObject; Item1,
 | 
|---|
| 991 |   Item2: TListItem; Data: Integer; var Compare: Integer);
 | 
|---|
| 992 | var
 | 
|---|
| 993 |   i: integer;
 | 
|---|
| 994 |   odr: array[1..4] of TSortData;
 | 
|---|
| 995 |   s1, s2: string;
 | 
|---|
| 996 | 
 | 
|---|
| 997 | begin
 | 
|---|
| 998 |   odr[1] := TSortData(FTopSortTag-1);
 | 
|---|
| 999 |   case FTopSortTag of
 | 
|---|
| 1000 |     1: begin
 | 
|---|
| 1001 |          odr[2] := sdSeq;
 | 
|---|
| 1002 |          odr[3] := sdLvl;
 | 
|---|
| 1003 |          odr[4] := sdOther;
 | 
|---|
| 1004 |        end;
 | 
|---|
| 1005 | 
 | 
|---|
| 1006 |     2: begin
 | 
|---|
| 1007 |          odr[2] := sdLvl;
 | 
|---|
| 1008 |          odr[3] := sdOther;
 | 
|---|
| 1009 |          odr[4] := sdRem;
 | 
|---|
| 1010 |        end;
 | 
|---|
| 1011 | 
 | 
|---|
| 1012 |     3: begin
 | 
|---|
| 1013 |          odr[2] := sdOther;
 | 
|---|
| 1014 |          odr[3] := sdSeq;
 | 
|---|
| 1015 |          odr[4] := sdRem;
 | 
|---|
| 1016 |        end;
 | 
|---|
| 1017 | 
 | 
|---|
| 1018 |     4: begin
 | 
|---|
| 1019 |          odr[2] := sdLvl;
 | 
|---|
| 1020 |          odr[3] := sdSeq;
 | 
|---|
| 1021 |          odr[4] := sdRem;
 | 
|---|
| 1022 |        end;
 | 
|---|
| 1023 |   end;
 | 
|---|
| 1024 |   Compare := 0;
 | 
|---|
| 1025 |   for i := 1 to 4 do
 | 
|---|
| 1026 |   begin
 | 
|---|
| 1027 |     case odr[i] of
 | 
|---|
| 1028 |       sdRem:   begin
 | 
|---|
| 1029 |                  s1 := Item1.Caption;
 | 
|---|
| 1030 |                  s2 := Item2.Caption;
 | 
|---|
| 1031 |                end;
 | 
|---|
| 1032 | 
 | 
|---|
| 1033 |       sdSeq:   begin
 | 
|---|
| 1034 |                  s1 := RPad(Item1.SubItems[IdxSeq]);
 | 
|---|
| 1035 |                  s2 := RPad(Item2.SubItems[IdxSeq]);
 | 
|---|
| 1036 |                end;
 | 
|---|
| 1037 | 
 | 
|---|
| 1038 |       sdLvl:   begin
 | 
|---|
| 1039 |                  s1 := Item1.SubItems[IdxLvl2];
 | 
|---|
| 1040 |                  s2 := Item2.SubItems[IdxLvl2];
 | 
|---|
| 1041 |                end;
 | 
|---|
| 1042 | 
 | 
|---|
| 1043 |       sdOther: begin
 | 
|---|
| 1044 |                  s1 := Item1.SubItems[IdxType];
 | 
|---|
| 1045 |                  s2 := Item2.SubItems[IdxType];
 | 
|---|
| 1046 |                end;
 | 
|---|
| 1047 | 
 | 
|---|
| 1048 |     end;
 | 
|---|
| 1049 |     Compare := CompareText(s1, s2);
 | 
|---|
| 1050 |     if Compare <> 0 then break;
 | 
|---|
| 1051 |   end;
 | 
|---|
| 1052 |   if not FTopSortUp then
 | 
|---|
| 1053 |     Compare := -Compare;
 | 
|---|
| 1054 | end;
 | 
|---|
| 1055 | 
 | 
|---|
| 1056 | procedure TfrmRemCoverSheet.lvCoverCompare(Sender: TObject; Item1,
 | 
|---|
| 1057 |   Item2: TListItem; Data: Integer; var Compare: Integer);
 | 
|---|
| 1058 | var
 | 
|---|
| 1059 |   i: integer;
 | 
|---|
| 1060 |   odr: array[1..2] of TSortData;
 | 
|---|
| 1061 |   s1, s2: string;
 | 
|---|
| 1062 | 
 | 
|---|
| 1063 | begin
 | 
|---|
| 1064 |   case FBottomSortTag of
 | 
|---|
| 1065 |     1: begin
 | 
|---|
| 1066 |          odr[1] := sdRem;
 | 
|---|
| 1067 |          odr[2] := sdSeq;
 | 
|---|
| 1068 |        end;
 | 
|---|
| 1069 | 
 | 
|---|
| 1070 |     2: begin
 | 
|---|
| 1071 |          odr[1] := sdSeq;
 | 
|---|
| 1072 |          odr[2] := sdRem;
 | 
|---|
| 1073 |        end;
 | 
|---|
| 1074 |   end;
 | 
|---|
| 1075 |   Compare := 0;
 | 
|---|
| 1076 |   for i := 1 to 2 do
 | 
|---|
| 1077 |   begin
 | 
|---|
| 1078 |     case odr[i] of
 | 
|---|
| 1079 |       sdRem:   begin
 | 
|---|
| 1080 |                  s1 := Item1.Caption;
 | 
|---|
| 1081 |                  s2 := Item2.Caption;
 | 
|---|
| 1082 |                end;
 | 
|---|
| 1083 | 
 | 
|---|
| 1084 |       sdSeq:   begin
 | 
|---|
| 1085 |                  s1 := RPad(Item1.SubItems[IdxSeq]);
 | 
|---|
| 1086 |                  s2 := RPad(Item2.SubItems[IdxSeq]);
 | 
|---|
| 1087 |                end;
 | 
|---|
| 1088 |     end;
 | 
|---|
| 1089 |     Compare := CompareText(s1, s2);
 | 
|---|
| 1090 |     if Compare <> 0 then break;
 | 
|---|
| 1091 |   end;
 | 
|---|
| 1092 |   if not FBottomSortUp then
 | 
|---|
| 1093 |     Compare := -Compare;
 | 
|---|
| 1094 | end;
 | 
|---|
| 1095 | 
 | 
|---|
| 1096 | procedure TfrmRemCoverSheet.sbUpClick(Sender: TObject);
 | 
|---|
| 1097 | var
 | 
|---|
| 1098 |   NextItem: TListItem;
 | 
|---|
| 1099 |   Seq1, Seq2: string;
 | 
|---|
| 1100 | 
 | 
|---|
| 1101 | begin
 | 
|---|
| 1102 |   if assigned(lvCover.Selected) then
 | 
|---|
| 1103 |   begin
 | 
|---|
| 1104 |     if FBottomSortTag <> 2 then
 | 
|---|
| 1105 |     begin
 | 
|---|
| 1106 |       FBottomSortTag := 2;
 | 
|---|
| 1107 |       lvCover.CustomSort(nil, 0);
 | 
|---|
| 1108 |     end;
 | 
|---|
| 1109 |     if lvCover.Selected.Index > 0 then
 | 
|---|
| 1110 |     begin
 | 
|---|
| 1111 |       NextItem := lvCover.Items[lvCover.Selected.Index - 1];
 | 
|---|
| 1112 |       Seq1 := NextItem.SubItems[IdxSeq];
 | 
|---|
| 1113 |       Seq2 := lvCover.Selected.SubItems[IdxSeq];
 | 
|---|
| 1114 |       SetSeq(NextItem, Seq2);
 | 
|---|
| 1115 |       SetSeq(lvCover.Selected, Seq1);
 | 
|---|
| 1116 |       lvCover.CustomSort(nil, 0);
 | 
|---|
| 1117 |       UpdateButtons;
 | 
|---|
| 1118 |     end;            
 | 
|---|
| 1119 |   end;
 | 
|---|
| 1120 | end;
 | 
|---|
| 1121 | 
 | 
|---|
| 1122 | procedure TfrmRemCoverSheet.sbDownClick(Sender: TObject);
 | 
|---|
| 1123 | var
 | 
|---|
| 1124 |   NextItem: TListItem;
 | 
|---|
| 1125 |   Seq1, Seq2: string;
 | 
|---|
| 1126 | 
 | 
|---|
| 1127 | begin
 | 
|---|
| 1128 |   if assigned(lvCover.Selected) then
 | 
|---|
| 1129 |   begin
 | 
|---|
| 1130 |     if FBottomSortTag <> 2 then
 | 
|---|
| 1131 |     begin
 | 
|---|
| 1132 |       FBottomSortTag := 2;
 | 
|---|
| 1133 |       lvCover.CustomSort(nil, 0);
 | 
|---|
| 1134 |     end;
 | 
|---|
| 1135 |     if lvCover.Selected.Index < (lvCover.Items.Count-1) then
 | 
|---|
| 1136 |     begin
 | 
|---|
| 1137 |       NextItem := lvCover.Items[lvCover.Selected.Index + 1];
 | 
|---|
| 1138 |       Seq1 := NextItem.SubItems[IdxSeq];
 | 
|---|
| 1139 |       Seq2 := lvCover.Selected.SubItems[IdxSeq];
 | 
|---|
| 1140 |       SetSeq(NextItem, Seq2);
 | 
|---|
| 1141 |       SetSeq(lvCover.Selected, Seq1);
 | 
|---|
| 1142 |       lvCover.CustomSort(nil, 0);
 | 
|---|
| 1143 |       UpdateButtons;
 | 
|---|
| 1144 |     end;
 | 
|---|
| 1145 |   end;
 | 
|---|
| 1146 | end;
 | 
|---|
| 1147 | 
 | 
|---|
| 1148 | procedure TfrmRemCoverSheet.SetSeq(Item: TListItem; const Value: string);
 | 
|---|
| 1149 | var
 | 
|---|
| 1150 |   tmpSL: TORStringList;
 | 
|---|
| 1151 |   Idx: integer;
 | 
|---|
| 1152 |   tmp: string;
 | 
|---|
| 1153 | 
 | 
|---|
| 1154 | begin
 | 
|---|
| 1155 |   tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE);
 | 
|---|
| 1156 |   if assigned(tmpSL) then
 | 
|---|
| 1157 |   begin
 | 
|---|
| 1158 |     Idx := GetIndex(tmpSL, Item);
 | 
|---|
| 1159 |     if Idx >= 0 then
 | 
|---|
| 1160 |     begin
 | 
|---|
| 1161 |       tmp := tmpSL[idx];
 | 
|---|
| 1162 |       if(Piece(Tmp,U,1) <> Value) then
 | 
|---|
| 1163 |       begin
 | 
|---|
| 1164 |         SetPiece(tmp,U,1,Value);
 | 
|---|
| 1165 |         tmpSL[idx] := tmp;
 | 
|---|
| 1166 |         MarkListAsChanged;
 | 
|---|
| 1167 |         SetupItem(Item, tmp);
 | 
|---|
| 1168 |       end;
 | 
|---|
| 1169 |     end;
 | 
|---|
| 1170 |   end;
 | 
|---|
| 1171 | end;
 | 
|---|
| 1172 | 
 | 
|---|
| 1173 | procedure TfrmRemCoverSheet.sbCopyRightClick(Sender: TObject);
 | 
|---|
| 1174 | var
 | 
|---|
| 1175 |   i: integer;
 | 
|---|
| 1176 |   Seq, Cur, Idx: integer;
 | 
|---|
| 1177 |   tmpSL: TORStringList;
 | 
|---|
| 1178 |   IEN: string;
 | 
|---|
| 1179 | 
 | 
|---|
| 1180 | begin
 | 
|---|
| 1181 |   if assigned(tvAll.Selected) then
 | 
|---|
| 1182 |   begin
 | 
|---|
| 1183 |     IEN := Piece(TORTreeNode(tvAll.Selected).StringData, U, 1);
 | 
|---|
| 1184 |     if ListHasData(IEN, IdxIEN) then
 | 
|---|
| 1185 |     begin
 | 
|---|
| 1186 |       ShowMessage('List already contains this Reminder');
 | 
|---|
| 1187 |       exit;
 | 
|---|
| 1188 |     end;
 | 
|---|
| 1189 |     if lvCover.Items.Count = 0 then
 | 
|---|
| 1190 |       Seq := 10
 | 
|---|
| 1191 |     else
 | 
|---|
| 1192 |     begin
 | 
|---|
| 1193 |       Seq := 0;
 | 
|---|
| 1194 |       for i := 0 to lvCover.Items.Count-1 do
 | 
|---|
| 1195 |       begin
 | 
|---|
| 1196 |         Cur := StrToIntDef(lvCover.Items[i].SubItems[IdxSeq], 0);
 | 
|---|
| 1197 |         if Seq < Cur then
 | 
|---|
| 1198 |           Seq := Cur;
 | 
|---|
| 1199 |       end;
 | 
|---|
| 1200 |       inc(Seq,10);
 | 
|---|
| 1201 |       if Seq > 999 then
 | 
|---|
| 1202 |       begin
 | 
|---|
| 1203 |         Seq := 999;
 | 
|---|
| 1204 |         while (Seq > 0) and ListHasData(IntToStr(Seq), IdxSeq) do dec(Seq);
 | 
|---|
| 1205 |       end;
 | 
|---|
| 1206 |     end;
 | 
|---|
| 1207 |     if Seq > 0 then
 | 
|---|
| 1208 |     begin
 | 
|---|
| 1209 |       tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE, TRUE);
 | 
|---|
| 1210 |       Idx := tmpSL.IndexOfPiece(IEN,U,2);
 | 
|---|
| 1211 |       if Idx < 0 then
 | 
|---|
| 1212 |       begin
 | 
|---|
| 1213 |         tmpSL.Add(IntToStr(Seq) + U + CVAddCode + TORTreeNode(tvAll.Selected).StringData);
 | 
|---|
| 1214 |         MarkListAsChanged;
 | 
|---|
| 1215 |         UpdateMasterListView;
 | 
|---|
| 1216 |         for i := 0 to lvCover.Items.Count-1 do
 | 
|---|
| 1217 |           if IEN = lvCover.Items[i].SubItems[IdxIEN] then
 | 
|---|
| 1218 |           begin
 | 
|---|
| 1219 |             lvCover.Selected := lvCover.Items[i];
 | 
|---|
| 1220 |             break;
 | 
|---|
| 1221 |           end;
 | 
|---|
| 1222 |       end;
 | 
|---|
| 1223 |     end;
 | 
|---|
| 1224 |   end;
 | 
|---|
| 1225 | end;
 | 
|---|
| 1226 | 
 | 
|---|
| 1227 | function TfrmRemCoverSheet.ListHasData(Seq: string; SubIdx: integer): boolean;
 | 
|---|
| 1228 | var
 | 
|---|
| 1229 |   i: integer;
 | 
|---|
| 1230 | 
 | 
|---|
| 1231 | begin
 | 
|---|
| 1232 |   Result := FALSE;
 | 
|---|
| 1233 |   for i := 0 to lvCover.Items.Count-1 do
 | 
|---|
| 1234 |     if Seq = lvCover.Items[i].SubItems[SubIdx] then
 | 
|---|
| 1235 |     begin
 | 
|---|
| 1236 |       Result := TRUE;
 | 
|---|
| 1237 |       break;
 | 
|---|
| 1238 |     end;
 | 
|---|
| 1239 | end;
 | 
|---|
| 1240 | 
 | 
|---|
| 1241 | procedure TfrmRemCoverSheet.udSeqChangingEx(Sender: TObject;
 | 
|---|
| 1242 |   var AllowChange: Boolean; NewValue: Smallint;
 | 
|---|
| 1243 |   Direction: TUpDownDirection);
 | 
|---|
| 1244 | begin
 | 
|---|
| 1245 |   if FUpdating or (not FInitialized) then exit;
 | 
|---|
| 1246 |   if ListHasData(IntToStr(NewValue), IdxSeq) then
 | 
|---|
| 1247 |   begin
 | 
|---|
| 1248 |     AllowChange := FALSE;
 | 
|---|
| 1249 |     case Direction of
 | 
|---|
| 1250 |       updUp:   udSeq.Position := NewValue + 1;
 | 
|---|
| 1251 |       updDown: udSeq.Position := NewValue - 1;
 | 
|---|
| 1252 |     end;
 | 
|---|
| 1253 |   end;
 | 
|---|
| 1254 | end;
 | 
|---|
| 1255 | 
 | 
|---|
| 1256 | procedure TfrmRemCoverSheet.sbCopyLeftClick(Sender: TObject);
 | 
|---|
| 1257 | var
 | 
|---|
| 1258 |   idx, Index, i: integer;
 | 
|---|
| 1259 |   tmpSL: TORStringList;
 | 
|---|
| 1260 | 
 | 
|---|
| 1261 | begin
 | 
|---|
| 1262 |   if assigned(lvCover.Selected) then
 | 
|---|
| 1263 |   begin
 | 
|---|
| 1264 |     tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE);
 | 
|---|
| 1265 |     if assigned(tmpSL) then
 | 
|---|
| 1266 |     begin
 | 
|---|
| 1267 |       Idx := GetIndex(tmpSL, lvCover.Selected);
 | 
|---|
| 1268 |       Index := lvCover.Selected.Index;
 | 
|---|
| 1269 |       if Idx >= 0 then
 | 
|---|
| 1270 |       begin
 | 
|---|
| 1271 |         tmpSL.Delete(Idx);
 | 
|---|
| 1272 |         MarkListAsChanged;
 | 
|---|
| 1273 |         UpdateMasterListView;
 | 
|---|
| 1274 |         if lvCover.Items.Count > 0 then
 | 
|---|
| 1275 |         begin
 | 
|---|
| 1276 |           if Index > 0 then
 | 
|---|
| 1277 |             dec(Index);
 | 
|---|
| 1278 |           for i := 0 to lvCover.Items.Count-1 do
 | 
|---|
| 1279 |             if lvCover.Items[i].Index = Index then
 | 
|---|
| 1280 |             begin
 | 
|---|
| 1281 |               lvCover.Selected := lvCover.Items[i];
 | 
|---|
| 1282 |               break;
 | 
|---|
| 1283 |             end;
 | 
|---|
| 1284 |         end;
 | 
|---|
| 1285 |       end;
 | 
|---|
| 1286 |     end;
 | 
|---|
| 1287 |   end;
 | 
|---|
| 1288 | end;
 | 
|---|
| 1289 | 
 | 
|---|
| 1290 | procedure TfrmRemCoverSheet.tvAllDblClick(Sender: TObject);
 | 
|---|
| 1291 | begin
 | 
|---|
| 1292 |   if sbCopyRight.Enabled then
 | 
|---|
| 1293 |     sbCopyRight.Click;
 | 
|---|
| 1294 | end;
 | 
|---|
| 1295 | 
 | 
|---|
| 1296 | procedure TfrmRemCoverSheet.btnApplyClick(Sender: TObject);
 | 
|---|
| 1297 | begin
 | 
|---|
| 1298 |   SaveData(TRUE);
 | 
|---|
| 1299 |   btnApply.Enabled := FALSE;
 | 
|---|
| 1300 | end;
 | 
|---|
| 1301 | 
 | 
|---|
| 1302 | procedure TfrmRemCoverSheet.btnOKClick(Sender: TObject);
 | 
|---|
| 1303 | begin
 | 
|---|
| 1304 |   SaveData(FALSE);
 | 
|---|
| 1305 | end;
 | 
|---|
| 1306 | 
 | 
|---|
| 1307 | procedure TfrmRemCoverSheet.SaveData(FromApply: boolean);
 | 
|---|
| 1308 | var
 | 
|---|
| 1309 |   i, j: integer;
 | 
|---|
| 1310 |   tmpSL: TORStringList;
 | 
|---|
| 1311 |   DeleteIt, DoRefresh: boolean;
 | 
|---|
| 1312 |   Level, lvl: TRemCoverDataLevel;
 | 
|---|
| 1313 |   ALevel, AClass, Code, IEN: string;
 | 
|---|
| 1314 | 
 | 
|---|
| 1315 | begin
 | 
|---|
| 1316 |   DoRefresh := FALSE;
 | 
|---|
| 1317 |   i := 0;
 | 
|---|
| 1318 |   while (i < FData.Count) do
 | 
|---|
| 1319 |   begin
 | 
|---|
| 1320 |     DeleteIt := FALSE;
 | 
|---|
| 1321 |     if(Piece(FData[i],U,2) = BoolChar[TRUE]) then
 | 
|---|
| 1322 |     begin
 | 
|---|
| 1323 |       tmpSL := TORStringList(FData.Objects[i]);
 | 
|---|
| 1324 |       if assigned(tmpSL) then
 | 
|---|
| 1325 |       begin
 | 
|---|
| 1326 |         Level := dlPackage;
 | 
|---|
| 1327 |         Code := copy(FData[i],1,1);
 | 
|---|
| 1328 |         for lvl := low(TRemCoverDataLevel) to high(TRemCoverDataLevel) do
 | 
|---|
| 1329 |         begin
 | 
|---|
| 1330 |           if DataCode[lvl] = Code then
 | 
|---|
| 1331 |           begin
 | 
|---|
| 1332 |             Level := lvl;
 | 
|---|
| 1333 |             break;
 | 
|---|
| 1334 |           end;
 | 
|---|
| 1335 |         end;
 | 
|---|
| 1336 |         if Level <> dlPackage then
 | 
|---|
| 1337 |         begin
 | 
|---|
| 1338 |           IEN := copy(Piece(FData[i],U,1),2,MaxInt);
 | 
|---|
| 1339 |           ALevel := InternalName[Level];
 | 
|---|
| 1340 |           ACLass := '';
 | 
|---|
| 1341 |           case Level of
 | 
|---|
| 1342 |             dlDivision, dlService, dlLocation, dlUser:
 | 
|---|
| 1343 |               ALevel := ALevel + '.`' + IEN;
 | 
|---|
| 1344 |             dlUserClass:
 | 
|---|
| 1345 |               AClass := IEN;
 | 
|---|
| 1346 |           end;
 | 
|---|
| 1347 |           for j := 0 to tmpSL.Count-1 do
 | 
|---|
| 1348 |             tmpSL[j] := pieces(tmpSL[j],U,1,2);
 | 
|---|
| 1349 |           SetCoverSheetLevelData(ALevel, AClass, tmpSL);
 | 
|---|
| 1350 |           tmpSL.Free;
 | 
|---|
| 1351 |           DeleteIt := TRUE;
 | 
|---|
| 1352 |           FDataSaved := TRUE;
 | 
|---|
| 1353 |           DoRefresh := TRUE;
 | 
|---|
| 1354 |         end;
 | 
|---|
| 1355 |       end;
 | 
|---|
| 1356 |     end;
 | 
|---|
| 1357 |     if DeleteIt then
 | 
|---|
| 1358 |       FData.Delete(i)
 | 
|---|
| 1359 |     else
 | 
|---|
| 1360 |       inc(i);
 | 
|---|
| 1361 |   end;
 | 
|---|
| 1362 |   if FromApply and DoRefresh then
 | 
|---|
| 1363 |     UpdateMasterListView;
 | 
|---|
| 1364 | end;
 | 
|---|
| 1365 | 
 | 
|---|
| 1366 | procedure TfrmRemCoverSheet.lvCoverDblClick(Sender: TObject);
 | 
|---|
| 1367 | begin
 | 
|---|
| 1368 |   if sbCopyLeft.Enabled then
 | 
|---|
| 1369 |     sbCopyLeft.Click;
 | 
|---|
| 1370 | end;
 | 
|---|
| 1371 | 
 | 
|---|
| 1372 | procedure TfrmRemCoverSheet.lvViewClick(Sender: TObject);
 | 
|---|
| 1373 | var
 | 
|---|
| 1374 |   lvl: TRemCoverDataLevel;
 | 
|---|
| 1375 |   i: integer;
 | 
|---|
| 1376 |   ClsName, TIEN, IEN, lvlName: string;
 | 
|---|
| 1377 |   ok: boolean;
 | 
|---|
| 1378 | 
 | 
|---|
| 1379 | begin
 | 
|---|
| 1380 |   if assigned(lvView.Selected) and (not FUpdatingView) then
 | 
|---|
| 1381 |   begin
 | 
|---|
| 1382 |     FUpdatingView := TRUE;
 | 
|---|
| 1383 |     try
 | 
|---|
| 1384 |       lvl := TRemCoverDataLevel(StrToIntDef(lvView.Selected.SubItems[IdxLvl2],ord(dlUser)));
 | 
|---|
| 1385 |       IEN := lvView.Selected.SubItems[IdxIEN];
 | 
|---|
| 1386 |       lvlName := lvView.Selected.SubItems[IdxLvl];
 | 
|---|
| 1387 |       TIEN := lvView.Selected.SubItems[IdxTIEN];
 | 
|---|
| 1388 |       ClsName := lvView.Selected.SubItems[IdxType];
 | 
|---|
| 1389 |       ok := (lvl <> FEditingLevel);
 | 
|---|
| 1390 |       if(not ok) and (lvl = dlUserClass) then
 | 
|---|
| 1391 |         ok := (FEditingIEN <> StrToIntDef(TIEN,0));
 | 
|---|
| 1392 |       if (not FUserMode) and ok and (lvl <> dlPackage) then
 | 
|---|
| 1393 |       begin
 | 
|---|
| 1394 |         case lvl of
 | 
|---|
| 1395 |           dlSystem:    FUpdatePending := cbSystem;
 | 
|---|
| 1396 |           dlDivision:  FUpdatePending := cbDivision;
 | 
|---|
| 1397 |           dlService:   FUpdatePending := cbService;
 | 
|---|
| 1398 |           dlLocation:  FUpdatePending := cbLocation;
 | 
|---|
| 1399 |           dlUserClass: FUpdatePending := cbUserClass;
 | 
|---|
| 1400 |           dlUser:      FUpdatePending := cbUser;
 | 
|---|
| 1401 |         end;
 | 
|---|
| 1402 |         if lvl = dlUserClass then
 | 
|---|
| 1403 |         begin
 | 
|---|
| 1404 |           cbxClass.InitLongList(ClsName);
 | 
|---|
| 1405 |           cbxClass.SelectByID(TIEN);
 | 
|---|
| 1406 |           FCurClass := cbxClass.ItemIEN;
 | 
|---|
| 1407 |         end;
 | 
|---|
| 1408 |         cbxDropDownClose(nil);
 | 
|---|
| 1409 |       end;
 | 
|---|
| 1410 |       if (lvl = FEditingLevel) then
 | 
|---|
| 1411 |       begin
 | 
|---|
| 1412 |         for i := 0 to lvCover.Items.Count-1 do
 | 
|---|
| 1413 |           if IEN = lvCover.Items[i].SubItems[IdxIEN] then
 | 
|---|
| 1414 |           begin
 | 
|---|
| 1415 |             lvCover.Selected := lvCover.Items[i];
 | 
|---|
| 1416 |             break;
 | 
|---|
| 1417 |           end;
 | 
|---|
| 1418 |       end;
 | 
|---|
| 1419 |       for i := 0 to lvView.Items.Count-1 do
 | 
|---|
| 1420 |       begin
 | 
|---|
| 1421 |         if (IEN = lvView.Items[i].SubItems[IdxIEN]) and
 | 
|---|
| 1422 |            (lvlName = lvView.Items[i].SubItems[IdxLvl]) then
 | 
|---|
| 1423 |         begin
 | 
|---|
| 1424 |           lvView.Selected := lvView.Items[i];
 | 
|---|
| 1425 |           break;
 | 
|---|
| 1426 |         end;
 | 
|---|
| 1427 |       end;
 | 
|---|
| 1428 |     finally
 | 
|---|
| 1429 |       FUpdatingView := FALSE;
 | 
|---|
| 1430 |     end;
 | 
|---|
| 1431 |   end;
 | 
|---|
| 1432 | end;
 | 
|---|
| 1433 | 
 | 
|---|
| 1434 | function TfrmRemCoverSheet.RPad(Str: String): String;
 | 
|---|
| 1435 | begin
 | 
|---|
| 1436 |   Result := StringOfChar('0',7-length(Str)) + Str;
 | 
|---|
| 1437 | end;
 | 
|---|
| 1438 | 
 | 
|---|
| 1439 | procedure TfrmRemCoverSheet.btnViewClick(Sender: TObject);
 | 
|---|
| 1440 | var
 | 
|---|
| 1441 |   frmRemCoverPreview: TfrmRemCoverPreview;
 | 
|---|
| 1442 |   CurSortOrder: integer;
 | 
|---|
| 1443 |   CurSortDir: boolean;
 | 
|---|
| 1444 |   i, idx, SeqCnt: integer;
 | 
|---|
| 1445 |   Lvl, LastLvl, tmp, AddCode, IEN, Seq, SortID: string;
 | 
|---|
| 1446 |   RemList, LvlList: TORStringList; // IEN^Name^Seq^SortID^Locked
 | 
|---|
| 1447 |   ANode: TTreeNode;
 | 
|---|
| 1448 | 
 | 
|---|
| 1449 |   procedure GetAllChildren(PNode: TTreeNode; const ASeq, ASortID: string);
 | 
|---|
| 1450 |   var
 | 
|---|
| 1451 |     Node: TTreeNode;
 | 
|---|
| 1452 | 
 | 
|---|
| 1453 |   begin
 | 
|---|
| 1454 |     PNode.Expand(FALSE);
 | 
|---|
| 1455 |     Node := PNode.GetFirstChild;
 | 
|---|
| 1456 |     while assigned(Node) do
 | 
|---|
| 1457 |     begin
 | 
|---|
| 1458 |       tmp := TORTreeNode(Node).StringData;
 | 
|---|
| 1459 |       if copy(tmp,1,1) = CVCatCode then
 | 
|---|
| 1460 |         GetAllChildren(Node, ASeq, ASortID)
 | 
|---|
| 1461 |       else
 | 
|---|
| 1462 |       begin
 | 
|---|
| 1463 |         if RemList.IndexOfPiece(Piece(tmp,u,1)) < 0 then
 | 
|---|
| 1464 |         begin
 | 
|---|
| 1465 |           SetPiece(tmp,u,3,ASeq);
 | 
|---|
| 1466 |           inc(SeqCnt);
 | 
|---|
| 1467 |           SortID := copy(ASortID,1,7) + RPad(IntToStr(SeqCnt)) + copy(ASortID,15,MaxInt);
 | 
|---|
| 1468 |           SetPiece(tmp,u,4,SortID);
 | 
|---|
| 1469 |           RemList.Add(tmp);
 | 
|---|
| 1470 |         end;
 | 
|---|
| 1471 |       end;
 | 
|---|
| 1472 |       Node := Node.GetNextSibling;
 | 
|---|
| 1473 |     end;
 | 
|---|
| 1474 |   end;
 | 
|---|
| 1475 | 
 | 
|---|
| 1476 | begin
 | 
|---|
| 1477 |   frmRemCoverPreview := TfrmRemCoverPreview.Create(Application);
 | 
|---|
| 1478 |   try
 | 
|---|
| 1479 |     CurSortOrder := FTopSortTag;
 | 
|---|
| 1480 |     CurSortDir := FTopSortUp;
 | 
|---|
| 1481 |     lvView.Items.BeginUpdate;
 | 
|---|
| 1482 |     try
 | 
|---|
| 1483 |       FTopSortTag := 3;
 | 
|---|
| 1484 |       FTopSortUp := TRUE;
 | 
|---|
| 1485 |       lvView.CustomSort(nil, 0);
 | 
|---|
| 1486 |       RemList := TORStringList.Create;
 | 
|---|
| 1487 |       try
 | 
|---|
| 1488 |         LvlList := TORStringList.Create;
 | 
|---|
| 1489 |         try
 | 
|---|
| 1490 |           LastLvl := '';
 | 
|---|
| 1491 |           for i := 0 to lvView.Items.Count-1 do
 | 
|---|
| 1492 |           begin
 | 
|---|
| 1493 |             Lvl := lvView.Items[i].SubItems[IdxLvl2];
 | 
|---|
| 1494 |             if LvL <> LastLvl then
 | 
|---|
| 1495 |             begin
 | 
|---|
| 1496 |               RemList.AddStrings(LvlList);
 | 
|---|
| 1497 |               LvlList.Clear;
 | 
|---|
| 1498 |               LastLvl := Lvl;
 | 
|---|
| 1499 |             end;
 | 
|---|
| 1500 |             IEN := lvView.Items[i].SubItems[IdxIEN];
 | 
|---|
| 1501 |             AddCode := lvView.Items[i].SubItems[IdxAdd];
 | 
|---|
| 1502 |             idx := RemList.IndexOfPiece(IEN);
 | 
|---|
| 1503 |             if AddCode = CVRemoveCode then
 | 
|---|
| 1504 |             begin
 | 
|---|
| 1505 |               if(idx >= 0) and (piece(RemList[idx],U,5) <> '1') then
 | 
|---|
| 1506 |                 RemList.Delete(idx);
 | 
|---|
| 1507 |             end
 | 
|---|
| 1508 |             else
 | 
|---|
| 1509 |             begin
 | 
|---|
| 1510 |               if idx < 0 then
 | 
|---|
| 1511 |               begin
 | 
|---|
| 1512 |                 Seq := lvView.Items[i].SubItems[IdxSeq];
 | 
|---|
| 1513 |                 SortID := RPad(Seq) + '0000000' + lvl + copy(lvView.Items[i].SubItems[IdxTIEN] + '0000000000',1,10);
 | 
|---|
| 1514 |                 tmp := IEN + U + lvView.Items[i].Caption + U + Seq + U + SortID;
 | 
|---|
| 1515 |                 if AddCode = CVLockCode then
 | 
|---|
| 1516 |                   tmp := tmp + U + '1';
 | 
|---|
| 1517 |                 RemList.Add(tmp);
 | 
|---|
| 1518 |               end
 | 
|---|
| 1519 |               else
 | 
|---|
| 1520 |               if (AddCode = CVLockCode) and (piece(RemList[idx],U,5) <> '1') then
 | 
|---|
| 1521 |               begin
 | 
|---|
| 1522 |                 tmp := RemList[idx];
 | 
|---|
| 1523 |                 SetPiece(tmp,U,5,'1');
 | 
|---|
| 1524 |                 RemList[idx] := tmp;
 | 
|---|
| 1525 |               end;
 | 
|---|
| 1526 |             end;
 | 
|---|
| 1527 |           end;
 | 
|---|
| 1528 |           RemList.AddStrings(LvlList);
 | 
|---|
| 1529 |           FTopSortTag := CurSortOrder;
 | 
|---|
| 1530 |           FTopSortUp := CurSortDir;
 | 
|---|
| 1531 |           lvView.CustomSort(nil, 0);
 | 
|---|
| 1532 | 
 | 
|---|
| 1533 |           LvlList.Clear;
 | 
|---|
| 1534 |           LvlList.Assign(RemList);
 | 
|---|
| 1535 |           RemList.Clear;
 | 
|---|
| 1536 |           FInternalExpansion := TRUE;
 | 
|---|
| 1537 |           try
 | 
|---|
| 1538 |             for i := 0 to LvlList.Count-1 do
 | 
|---|
| 1539 |             begin
 | 
|---|
| 1540 |               IEN := piece(LvlList[i],U,1);
 | 
|---|
| 1541 |               if (copy(LvlList[i],1,1) = CVCatCode) then
 | 
|---|
| 1542 |               begin
 | 
|---|
| 1543 |                 ANode := tvAll.Items.GetFirstNode;
 | 
|---|
| 1544 |                 while assigned(ANode) do
 | 
|---|
| 1545 |                 begin
 | 
|---|
| 1546 |                   if IEN = piece(TORTreeNode(ANode).StringData,U,1) then
 | 
|---|
| 1547 |                   begin
 | 
|---|
| 1548 |                     SeqCnt := 0;
 | 
|---|
| 1549 |                     GetAllChildren(ANode, Piece(LvlList[i], U, 3), Piece(LvlList[i], U, 4));
 | 
|---|
| 1550 |                     ANode := nil;
 | 
|---|
| 1551 |                   end
 | 
|---|
| 1552 |                   else
 | 
|---|
| 1553 |                     ANode := ANode.GetNextSibling;
 | 
|---|
| 1554 |                 end;
 | 
|---|
| 1555 |               end
 | 
|---|
| 1556 |               else
 | 
|---|
| 1557 |               if RemList.IndexOfPiece(IEN) < 0 then
 | 
|---|
| 1558 |                 RemList.Add(LvlList[i]);
 | 
|---|
| 1559 |             end;
 | 
|---|
| 1560 |           finally
 | 
|---|
| 1561 |             FInternalExpansion := FALSE;
 | 
|---|
| 1562 |           end;
 | 
|---|
| 1563 |         finally
 | 
|---|
| 1564 |           LvlList.Free;
 | 
|---|
| 1565 |         end;
 | 
|---|
| 1566 | 
 | 
|---|
| 1567 |         RemList.SortByPiece(4);
 | 
|---|
| 1568 |         for i := 0 to RemList.Count-1 do
 | 
|---|
| 1569 |         begin
 | 
|---|
| 1570 |           with frmRemCoverPreview.lvMain.Items.Add do
 | 
|---|
| 1571 |           begin
 | 
|---|
| 1572 |             tmp := RemList[i];
 | 
|---|
| 1573 |             Caption := Piece(tmp, U, 2);
 | 
|---|
| 1574 |             SubItems.Add(Piece(tmp, U, 3));
 | 
|---|
| 1575 |             SubItems.Add(Piece(tmp, U, 4));
 | 
|---|
| 1576 |           end;
 | 
|---|
| 1577 |         end;
 | 
|---|
| 1578 |       finally
 | 
|---|
| 1579 |         RemList.Free;
 | 
|---|
| 1580 |       end;
 | 
|---|
| 1581 |     finally
 | 
|---|
| 1582 |       lvView.Items.EndUpdate;
 | 
|---|
| 1583 |     end;
 | 
|---|
| 1584 |     frmRemCoverPreview.ShowModal;
 | 
|---|
| 1585 |   finally
 | 
|---|
| 1586 |     frmRemCoverPreview.Free;
 | 
|---|
| 1587 |   end;
 | 
|---|
| 1588 | end;
 | 
|---|
| 1589 | 
 | 
|---|
| 1590 | procedure TfrmRemCoverSheet.lvCoverKeyDown(Sender: TObject; var Key: Word;
 | 
|---|
| 1591 |   Shift: TShiftState);
 | 
|---|
| 1592 | begin
 | 
|---|
| 1593 |   if (Key = VK_DELETE) and sbCopyLeft.Enabled then
 | 
|---|
| 1594 |     sbCopyLeft.Click; 
 | 
|---|
| 1595 | end;
 | 
|---|
| 1596 | 
 | 
|---|
| 1597 | procedure TfrmRemCoverSheet.edtSeqKeyPress(Sender: TObject; var Key: Char);
 | 
|---|
| 1598 | begin
 | 
|---|
| 1599 |   if (Key < '0') or (Key > '9') then
 | 
|---|
| 1600 |     Key := #0; 
 | 
|---|
| 1601 | end;
 | 
|---|
| 1602 | 
 | 
|---|
| 1603 | procedure TfrmRemCoverSheet.cbxDivisionKeyDown(Sender: TObject;
 | 
|---|
| 1604 |   var Key: Word; Shift: TShiftState);
 | 
|---|
| 1605 | begin
 | 
|---|
| 1606 |   if (Key = VK_RETURN) and TORComboBox(Sender).DroppedDown then 
 | 
|---|
| 1607 |     TORComboBox(Sender).DroppedDown := FALSE; 
 | 
|---|
| 1608 | end;
 | 
|---|
| 1609 | 
 | 
|---|
| 1610 | function TfrmRemCoverSheet.GetCoverSheetLvlData(ALevel,
 | 
|---|
| 1611 |   AClass: string): TStrings;
 | 
|---|
| 1612 | var
 | 
|---|
| 1613 |   IEN: string;
 | 
|---|
| 1614 |   i, j: integer;
 | 
|---|
| 1615 | 
 | 
|---|
| 1616 | begin
 | 
|---|
| 1617 |   Result := GetCoverSheetLevelData(ALevel, AClass);
 | 
|---|
| 1618 |   for i := 0 to Result.Count-1 do
 | 
|---|
| 1619 |   begin
 | 
|---|
| 1620 |     IEN := copy(piece(Result[i],U,2),2,MaxInt);
 | 
|---|
| 1621 |     j := FMasterList.IndexOfPiece(IEN);
 | 
|---|
| 1622 |     if j >= 0 then
 | 
|---|
| 1623 |       Result[i] := Result[i] + piece(FMasterList[j],U,3);
 | 
|---|
| 1624 |   end;
 | 
|---|
| 1625 | end;
 | 
|---|
| 1626 | 
 | 
|---|
| 1627 | end.
 | 
|---|