Ignore:
Timestamp:
Jul 7, 2010, 4:51:54 PM (14 years ago)
Author:
Kevin Toppenberg
Message:

Upgrading to version 27

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cprs/trunk/CPRS-Chart/fRemCoverSheet.pas

    r456 r830  
    55uses
    66  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    7   ORCtrls, StdCtrls, ExtCtrls, ComCtrls, ImgList, mImgText, Buttons, ORClasses;
     7  ORCtrls, StdCtrls, ExtCtrls, ComCtrls, ImgList, mImgText, Buttons, ORClasses, fBase508Form,
     8  VA508AccessibilityManager, VA508ImageListLabeler;
    89
    910type
    1011  TRemCoverDataLevel = (dlPackage, dlSystem, dlDivision, dlService, dlLocation, dlUserClass, dlUser);
    1112
    12   TfrmRemCoverSheet = class(TForm)
     13  TfrmRemCoverSheet = class(TfrmBase508Form)
    1314    pnlBottom: TORAutoPanel;
    1415    pnlUser: TPanel;
     
    1617    lblRemLoc: TLabel;
    1718    pnlMiddle: TPanel;
    18     lvView: TCaptionListView;
    1919    pnlRight: TPanel;
    2020    mlgnCat: TfraImgText;
     
    5959    sbCopyLeft: TBitBtn;
    6060    splMain: TSplitter;
    61     lblView: TLabel;
    62     lblCAC: TStaticText;
    6361    btnView: TButton;
    6462    lblLegend: TLabel;
     63    imgLblRemCoverSheet: TVA508ImageListLabeler;
     64    compAccessCopyRight: TVA508ComponentAccessibility;
     65    compAccessCopyLeft: TVA508ComponentAccessibility;
     66    pnlTopLeft: TPanel;
     67    lvView: TCaptionListView;
     68    lblView: TLabel;
     69    lblCAC: TVA508StaticText;
     70    VA508ImageListLabeler1: TVA508ImageListLabeler;
    6571    procedure cbxLocationNeedData(Sender: TObject; const StartFrom: String;
    6672      Direction, InsertAt: Integer);
     
    105111    procedure btnOKClick(Sender: TObject);
    106112    procedure lvCoverDblClick(Sender: TObject);
    107     procedure lvViewClick(Sender: TObject);
    108113    procedure btnViewClick(Sender: TObject);
    109114    procedure lvCoverKeyDown(Sender: TObject; var Key: Word;
     
    112117    procedure cbxDivisionKeyDown(Sender: TObject; var Key: Word;
    113118      Shift: TShiftState);
     119    procedure FormCreate(Sender: TObject);
     120    procedure compAccessCopyRightCaptionQuery(Sender: TObject;
     121      var Text: string);
     122    procedure compAccessCopyLeftCaptionQuery(Sender: TObject; var Text: string);
     123    procedure lvViewChange(Sender: TObject; Item: TListItem;
     124      Change: TItemChange);
     125    procedure lvViewSelectItem(Sender: TObject; Item: TListItem;
     126      Selected: Boolean);
    114127  private
    115128    FData: TORStringList;     // DataCode IEN ^ Modified Flag  Object=TStringList
     
    141154    FUpdatingView: boolean;
    142155    FInternalExpansion: boolean;
     156    FSavePause: integer;
     157    FSelection: boolean;
     158    fOldFocusChanged: TNotifyEvent;
     159    procedure ActiveControlChanged(Sender: TObject);
     160    procedure SetButtonHints;
    143161    procedure GetUserInfo(AUser: Int64);
    144162    function GetCurrent(IEN: Int64; Level: TRemCoverDataLevel; Show: boolean;
     
    160178    function RPad(Str: String): String;
    161179    function GetCoverSheetLvlData(ALevel, AClass: string): TStrings;
     180    procedure LockButtonUpdate(data, FNAME, hint: string);
    162181  public
    163     procedure Init(AsUser: boolean);
     182     procedure Init(AsUser: boolean);
    164183  end;
    165184
     
    169188
    170189uses rCore, uCore, uPCE, rProbs, rTIU, ORFn, rReminders, uReminders,
    171   fRemCoverPreview;
     190  fRemCoverPreview, VAUtils, VA508AccessibilityRouter;
    172191
    173192{$R *.DFM}
     193{$R sremcvr}
    174194
    175195const
     
    221241  IdxIEN  = 6;
    222242
     243  UnlockHint = 'Unlock a Reminder, reverting it''s status back to Added';
     244  LockHint = 'Lock a Reminder to prevent it''s removal from a lower'
     245        + CRLF + 'level Coversheet display.  For example, if you lock'
     246        + CRLF + 'a Reminder at the Service level, then that Reminder'
     247        + CRLF + 'can not be removed from the coversheet display at'
     248        + CRLF + 'the Location, User Class, or User levels.';
     249  AddLockHint = 'Add and Lock a Reminder to prevent it''s removal from a lower'
     250        + CRLF + 'level Coversheet display.  For example, if you lock'
     251        + CRLF + 'a Reminder at the Service level, then that Reminder'
     252        + CRLF + 'can not be removed from the coversheet display at'
     253        + CRLF + 'the Location, User Class, or User levels.';
     254
    223255procedure EditCoverSheetReminderList(AsUser: boolean);
    224256var
     
    269301  FUsers := TORStringList.Create;
    270302  FMasterList := TORStringList.Create;
    271   FMasterList.Assign(GetAllRemindersAndCategories);
     303  //FMasterList.Assign(GetAllRemindersAndCategories);
     304  FastAssign(GetAllRemindersAndCategories, FMasterList);
    272305  for i := 0 to FMasterList.Count-1 do
    273306  begin
     
    324357    pnlUser.Visible := FALSE;
    325358    LocCombo := cbxLocation;
    326     cbxDivision.Items.Assign(FDivisions);
     359    //cbxDivision.Items.Assign(FDivisions);
     360    FastAssign(Fdivisions, cbxDivision.Items);
    327361    cbxDivision.SelectByIEN(FCurDiv);
    328362    cbxService.InitLongList(GetExternalName(dlService, FCurSer));
     
    388422procedure TfrmRemCoverSheet.FormDestroy(Sender: TObject);
    389423begin
     424  Screen.OnActiveControlChange := fOldFocusChanged;
    390425  FMasterList.Free;
    391426  FUsers.Free;
     
    399434  FCatInfo.KillObjects;
    400435  FCatInfo.Free;
     436  Application.HintHidePause := FSavePause  //Reset Hint pause to original setting
    401437end;
    402438
     
    406442  begin
    407443    FUser := AUser;
    408     FUserInfo.Assign(UserDivClassInfo(FUser));
     444    //FUserInfo.Assign(UserDivClassInfo(FUser));
     445    FastAssign(UserDivClassInfo(FUser), FUserInfo);
    409446  end;
    410447end;
     
    439476      tmpSL := TORStringList.Create;
    440477      try
    441         tmpSL.Assign(GetCoverSheetLvlData(lvl, cls));
     478        //tmpSL.Assign(GetCoverSheetLvlData(lvl, cls));
     479        FastAssign(GetCoverSheetLvlData(lvl, cls),  tmpSL);
    442480        if (not Add) and (tmpSL.Count = 0) then
    443481          FreeAndNil(tmpSL);
     
    501539end;
    502540
     541procedure TfrmRemCoverSheet.compAccessCopyLeftCaptionQuery(Sender: TObject;
     542  var Text: string);
     543begin
     544  Text := 'Remove Reminder from ' + DataName[FEditingLevel] + ' Level Reminders List';
     545end;
     546
     547procedure TfrmRemCoverSheet.compAccessCopyRightCaptionQuery(
     548  Sender: TObject; var Text: string);
     549begin
     550  Text := 'Copy Reminder into ' + DataName[FEditingLevel] + ' Level Reminders List';
     551end;
     552
    503553procedure TfrmRemCoverSheet.SetupItem(Item: TListItem; const Data: string);
    504554var
     
    557607    if idx < 0 then
    558608      idx := List.Add(IntToStr(IEN) + U + ExternalName(IEN, FileNum));
    559     Result := piece(List[idx],U,2);
     609      Result := piece(List[idx],U,2);
    560610  end;
    561611
     
    574624begin
    575625  FCurDiv := cbxDivision.ItemIEN;
     626  If FCurDiv < 1  then   //No value in Division combobox
     627  begin
     628    sbCopyLeft.Enabled := false;
     629    sbCopyRight.Enabled := false;
     630    FSelection := false;
     631  end
     632  else
     633    FSelection := true;
    576634  FUpdatePending := cbDivision;
    577635  if not cbxDivision.DroppedDown then
     
    582640begin
    583641  FCurSer := cbxService.ItemIEN;
     642  If FCurSer < 1  then   //No value in Service combobox
     643  begin
     644    sbCopyLeft.Enabled := false;
     645    sbCopyRight.Enabled := false;
     646    FSelection := false;
     647  end
     648  else
     649    FSelection := true;
    584650  FUpdatePending := cbService;
    585651  if not cbxService.DroppedDown then
     
    590656begin
    591657  FCurLoc := TORComboBox(Sender).ItemIEN;
     658  If FCurLoc < 1  then   //No value in Location combobox
     659  begin
     660    sbCopyLeft.Enabled := false;
     661    sbCopyRight.Enabled := false;
     662    FSelection := false;
     663  end
     664  else
     665    FSelection := true;
    592666  FUpdatePending := cbLocation;
    593667  if not TORComboBox(Sender).DroppedDown then
     
    598672begin
    599673  FCurClass := cbxClass.ItemIEN;
     674  If FCurClass < 1  then   //No value in User Class combobox
     675  begin
     676    sbCopyLeft.Enabled := false;
     677    sbCopyRight.Enabled := false;
     678    FSelection := false;
     679  end
     680  else
     681    FSelection := true;
    600682  FUpdatePending := cbUserClass;
    601683  if not cbxClass.DroppedDown then
     
    609691begin
    610692  FCurUser := cbxUser.ItemIEN;
     693  If FCurUser < 1  then   //No value in User combobox
     694  begin
     695    sbCopyLeft.Enabled := false;
     696    sbCopyRight.Enabled := false;
     697    FSelection := false;
     698  end
     699  else
     700    FSelection := true;
    611701  GetUserInfo(FCurUser);
    612702  idx := FUserInfo.IndexOfPiece(DivisionCode);
     
    679769    end;
    680770    if FEditingIEN = 0 then
    681       tmp := ' '
     771    begin
     772      tmp := ' ';
     773      IF FEditingLevel = dlSystem then
     774        FSelection := true
     775      else
     776      begin
     777        sbCopyLeft.Enabled := false;
     778        sbCopyRight.Enabled := false;
     779        FSelection := false;
     780      end;
     781    end
    682782    else
     783    begin
    683784      tmp := ': ';
     785      FSelection := true;
     786    end;
    684787    lblEdit.Caption := '  Editing Cover Sheet Reminders for ' + DataName[FEditingLevel] +
    685788                        tmp + GetExternalName(FEditingLevel, FEditingIEN);
    686789    lvCover.Columns[0].Caption := DataName[FEditingLevel] + ' Level Reminders';
     790
     791    SetButtonHints;   {Setup hints for Lock, Add, Remove buttons based on
     792                       Parameter Level}
    687793    UpdateView;
    688794    UpdateMasterListView;
     
    690796  else
    691797  begin
     798    FSelection := false;
     799    sbCopyLeft.Enabled := false;
     800    sbCopyRight.Enabled := false;
    692801    FEditingLevel := dlPackage;
    693802    FEditingIEN := 0;
     
    733842procedure TfrmRemCoverSheet.UpdateButtons;
    734843var
    735   ok: boolean;
    736   i: integer;
     844  FocusOK, ok: boolean;
     845  i, idx: integer;
    737846  Current, Lowest, Highest: integer;
     847  tmp: string;
     848  tmpSL: TORstringlist;
     849  doDownButton, doUpButton: boolean;
    738850
    739851begin
    740852  lvCover.Enabled := (FEditingLevel <> dlPackage);
    741   ok := assigned(tvAll.Selected) and (FEditingLevel <> dlPackage);
     853  ok := assigned(tvAll.Selected) and (FEditingLevel <> dlPackage) and (FSelection);
    742854  sbCopyRight.Enabled := ok;
    743855
    744   ok := assigned(lvCover.Selected) and (FEditingLevel <> dlPackage);
     856  ok := assigned(lvCover.Selected) and (FEditingLevel <> dlPackage) and (FSelection);
    745857  sbCopyLeft.Enabled := ok;
    746858
     
    760872  end;
    761873
    762   btnAdd.Enabled := ok;
    763   btnRemove.Enabled := ok;
    764   btnLock.Enabled := ok and (FEditingLevel <> dlUser);
     874  FocusOK := lvCover.Focused or sbUp.Focused or sbDown.Focused or edtSeq.Focused or
     875             udSeq.Focused or btnAdd.Focused or btnRemove.Focused or btnLock.Focused or
     876             btnOK.Focused; // add btnOK so you can shift-tab backwards into list
     877  btnAdd.Enabled := ok and FocusOK;
     878  btnRemove.Enabled := ok and (FEditingLevel <> dlSystem) and FocusOK;
     879  btnLock.Enabled := ok and (FEditingLevel <> dlUser) and FocusOK;
    765880  if ok then
     881  begin
     882    tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE);
     883    if assigned(tmpSL) then
     884    begin
     885      Idx := GetIndex(tmpSL, lvCover.Selected);
     886      if Idx >= 0 then
     887      begin
     888        tmp := tmpSL[idx];
     889        tmp := piece(tmp,u,2);
     890        tmp := copy(tmp,1,1);
     891        if tmp = 'L' then
     892        begin
     893          LockButtonUpdate('Unlock', 'BMP_UNLOCK', UnlockHint);
     894        end;
     895        if tmp = 'N' then
     896        begin
     897          LockButtonUpdate('Lock', 'BMP_LOCK', LockHint);
     898        end;
     899        if tmp = 'R' then
     900        begin
     901          LockButtonUpdate('Add && Lock', 'BMP_LOCK', AddLockHint);
     902        end;
     903      end;
     904    end;
    766905    ok :=(lvCover.Items.Count > 1);
     906  end;
    767907  Lowest := 99999;
    768908  Highest := -1;
     
    777917        Highest := Current;
    778918    end;
    779     Current := StrToIntDef(lvCover.Selected.SubItems[IdxSeq], 0)
     919    Current := StrToIntDef(lvCover.Selected.SubItems[IdxSeq], 0);
    780920  end
    781921  else
    782922    Current := 0;
     923  doDownButton := (sbUp.Focused and (Current = Lowest));
     924  doUpButton := (sbDown.Focused and (Current = Highest));
    783925  sbUp.Enabled := ok and (Current > Lowest);
    784926  sbDown.Enabled := ok and (Current < Highest);
     927  if doDownButton and sbDown.enabled then sbDown.SetFocus;
     928  if doUpButton and sbUp.enabled then sbUp.SetFocus;
    785929end;
    786930
     
    9461090      MarkListAsChanged;
    9471091      SetupItem(lvCover.Selected, tmp);
     1092      tmp := piece(tmp,u,2);
     1093      tmp := copy(tmp,1,1);
     1094      if tmp = 'L' then
     1095      begin
     1096        LockButtonUpdate('Unlock', 'BMP_UNLOCK', UnlockHint);
     1097      end;
     1098      if tmp = 'N' then
     1099      begin
     1100        LockButtonUpdate('Lock', 'BMP_LOCK', LockHint);
     1101      end;
     1102      if tmp = 'R' then
     1103      begin
     1104        LockButtonUpdate('Add && Lock', 'BMP_LOCK', AddLockHint);
     1105      end;
    9481106    end;
    9491107  end;
     
    11151273      SetSeq(lvCover.Selected, Seq1);
    11161274      lvCover.CustomSort(nil, 0);
     1275      If ScreenReaderSystemActive then
     1276        GetScreenReader.Speak('Reminder Moved up in Sequence');
    11171277      UpdateButtons;
    11181278    end;           
     
    11411301      SetSeq(lvCover.Selected, Seq1);
    11421302      lvCover.CustomSort(nil, 0);
     1303      If ScreenReaderSystemActive then
     1304        GetScreenReader.Speak('Reminder Moved down in Sequence');
    11431305      UpdateButtons;
    11441306    end;
     
    11841346    if ListHasData(IEN, IdxIEN) then
    11851347    begin
    1186       ShowMessage('List already contains this Reminder');
     1348      ShowMsg('List already contains this Reminder');
    11871349      exit;
    11881350    end;
     
    12211383          end;
    12221384      end;
     1385      if ScreenReaderSystemActive then
     1386        GetScreenReader.Speak('Reminder Added to ' + DataName[FEditingLevel] + ' Level Reminders List');
    12231387    end;
    12241388  end;
     
    12831447            end;
    12841448        end;
    1285       end;
    1286     end;
     1449        if ScreenReaderSystemActive then
     1450          GetScreenReader.Speak('Reminder Removed from ' + DataName[FEditingLevel] + ' Level Reminders List');
     1451      end;
     1452    end;
     1453    if sbCopyLeft.Enabled and (not sbCopyLeft.Focused) then
     1454      sbCopyLeft.SetFocus;   
    12871455  end;
    12881456end;
     
    13701538end;
    13711539
    1372 procedure TfrmRemCoverSheet.lvViewClick(Sender: TObject);
     1540procedure TfrmRemCoverSheet.lvViewChange(Sender: TObject; Item: TListItem;
     1541  Change: TItemChange);
     1542begin
     1543  lvViewSelectItem(Sender, Item, FALSE);
     1544end;
     1545
     1546procedure TfrmRemCoverSheet.lvViewSelectItem(Sender: TObject; Item: TListItem;
     1547  Selected: Boolean);
    13731548var
    13741549  lvl: TRemCoverDataLevel;
     
    14751650
    14761651begin
    1477   frmRemCoverPreview := TfrmRemCoverPreview.Create(Application);
     1652  Screen.OnActiveControlChange := fOldFocusChanged;
    14781653  try
    1479     CurSortOrder := FTopSortTag;
    1480     CurSortDir := FTopSortUp;
    1481     lvView.Items.BeginUpdate;
     1654    frmRemCoverPreview := TfrmRemCoverPreview.Create(Application);
    14821655    try
    1483       FTopSortTag := 3;
    1484       FTopSortUp := TRUE;
    1485       lvView.CustomSort(nil, 0);
    1486       RemList := TORStringList.Create;
     1656      CurSortOrder := FTopSortTag;
     1657      CurSortDir := FTopSortUp;
     1658      lvView.Items.BeginUpdate;
    14871659      try
    1488         LvlList := TORStringList.Create;
     1660        FTopSortTag := 3;
     1661        FTopSortUp := TRUE;
     1662        lvView.CustomSort(nil, 0);
     1663        RemList := TORStringList.Create;
    14891664        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
     1665          LvlList := TORStringList.Create;
     1666          try
     1667            LastLvl := '';
     1668            for i := 0 to lvView.Items.Count-1 do
    14951669            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
     1670              Lvl := lvView.Items[i].SubItems[IdxLvl2];
     1671              if LvL <> LastLvl then
    15111672              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);
     1673                RemList.AddStrings(LvlList);
     1674                LvlList.Clear;
     1675                LastLvl := Lvl;
     1676              end;
     1677              IEN := lvView.Items[i].SubItems[IdxIEN];
     1678              AddCode := lvView.Items[i].SubItems[IdxAdd];
     1679              idx := RemList.IndexOfPiece(IEN);
     1680              if AddCode = CVRemoveCode then
     1681              begin
     1682                if(idx >= 0) and (piece(RemList[idx],U,5) <> '1') then
     1683                  RemList.Delete(idx);
    15181684              end
    15191685              else
    1520               if (AddCode = CVLockCode) and (piece(RemList[idx],U,5) <> '1') then
    15211686              begin
    1522                 tmp := RemList[idx];
    1523                 SetPiece(tmp,U,5,'1');
    1524                 RemList[idx] := tmp;
     1687                if idx < 0 then
     1688                begin
     1689                  Seq := lvView.Items[i].SubItems[IdxSeq];
     1690                  SortID := RPad(Seq) + '0000000' + lvl + copy(lvView.Items[i].SubItems[IdxTIEN] + '0000000000',1,10);
     1691                  tmp := IEN + U + lvView.Items[i].Caption + U + Seq + U + SortID;
     1692                  if AddCode = CVLockCode then
     1693                    tmp := tmp + U + '1';
     1694                  RemList.Add(tmp);
     1695                end
     1696                else
     1697                if (AddCode = CVLockCode) and (piece(RemList[idx],U,5) <> '1') then
     1698                begin
     1699                  tmp := RemList[idx];
     1700                  SetPiece(tmp,U,5,'1');
     1701                  RemList[idx] := tmp;
     1702                end;
    15251703              end;
    15261704            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
     1705            RemList.AddStrings(LvlList);
     1706            FTopSortTag := CurSortOrder;
     1707            FTopSortUp := CurSortDir;
     1708            lvView.CustomSort(nil, 0);
     1709
     1710            LvlList.Clear;
     1711            //LvlList.Assign(RemList);
     1712            FastAssign(RemList, LvlList);
     1713            RemList.Clear;
     1714            FInternalExpansion := TRUE;
     1715            try
     1716              for i := 0 to LvlList.Count-1 do
    15421717              begin
    1543                 ANode := tvAll.Items.GetFirstNode;
    1544                 while assigned(ANode) do
     1718                IEN := piece(LvlList[i],U,1);
     1719                if (copy(LvlList[i],1,1) = CVCatCode) then
    15451720                begin
    1546                   if IEN = piece(TORTreeNode(ANode).StringData,U,1) then
     1721                  ANode := tvAll.Items.GetFirstNode;
     1722                  while assigned(ANode) do
    15471723                  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]);
     1724                    if IEN = piece(TORTreeNode(ANode).StringData,U,1) then
     1725                    begin
     1726                      SeqCnt := 0;
     1727                      GetAllChildren(ANode, Piece(LvlList[i], U, 3), Piece(LvlList[i], U, 4));
     1728                      ANode := nil;
     1729                    end
     1730                    else
     1731                      ANode := ANode.GetNextSibling;
     1732                  end;
     1733                end
     1734                else
     1735                if RemList.IndexOfPiece(IEN) < 0 then
     1736                  RemList.Add(LvlList[i]);
     1737              end;
     1738            finally
     1739              FInternalExpansion := FALSE;
    15591740            end;
    15601741          finally
    1561             FInternalExpansion := FALSE;
     1742            LvlList.Free;
     1743          end;
     1744
     1745          RemList.SortByPiece(4);
     1746          for i := 0 to RemList.Count-1 do
     1747          begin
     1748            with frmRemCoverPreview.lvMain.Items.Add do
     1749            begin
     1750              tmp := RemList[i];
     1751              Caption := Piece(tmp, U, 2);
     1752              SubItems.Add(Piece(tmp, U, 3));
     1753              SubItems.Add(Piece(tmp, U, 4));
     1754            end;
    15621755          end;
    15631756        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;
     1757          RemList.Free;
    15771758        end;
    15781759      finally
    1579         RemList.Free;
    1580       end;
     1760        lvView.Items.EndUpdate;
     1761      end;
     1762      frmRemCoverPreview.ShowModal;
    15811763    finally
    1582       lvView.Items.EndUpdate;
    1583     end;
    1584     frmRemCoverPreview.ShowModal;
     1764      frmRemCoverPreview.Free;
     1765    end;
    15851766  finally
    1586     frmRemCoverPreview.Free;
     1767    Screen.OnActiveControlChange := ActiveControlChanged;
    15871768  end;
    15881769end;
     
    15921773begin
    15931774  if (Key = VK_DELETE) and sbCopyLeft.Enabled then
    1594     sbCopyLeft.Click; 
     1775    sbCopyLeft.Click;
    15951776end;
    15961777
     
    15981779begin
    15991780  if (Key < '0') or (Key > '9') then
    1600     Key := #0; 
     1781    Key := #0;
    16011782end;
    16021783
     
    16041785  var Key: Word; Shift: TShiftState);
    16051786begin
    1606   if (Key = VK_RETURN) and TORComboBox(Sender).DroppedDown then 
    1607     TORComboBox(Sender).DroppedDown := FALSE; 
     1787  if (Key = VK_RETURN) and TORComboBox(Sender).DroppedDown then
     1788    TORComboBox(Sender).DroppedDown := FALSE;
    16081789end;
    16091790
     
    16251806end;
    16261807
     1808procedure TfrmRemCoverSheet.SetButtonHints;
     1809{This procedure sets the Lock, Add, and Remove button hints based on the
     1810 selected parameter level}
     1811begin
     1812  if FEditingLevel = dlDivision then
     1813  begin
     1814    btnLock.hint := 'Adds Reminder to the Coversheet display and Locks the Reminder'
     1815          + CRLF + 'so it can not be removed from the Coversheet display at any'
     1816          + CRLF + 'of the lower levels (Service, Location, User Class, User).';
     1817    btnRemove.hint := 'Removes Reminders from the Coversheet display.  Will not'
     1818          + CRLF + 'remove Reminders which are locked at the System level.';
     1819    btnAdd.hint := 'Adds Reminders to the Coversheet at the Division level and'
     1820          + CRLF + 'below.  It also removes the lock from a Reminder locked at'
     1821          + CRLF + 'the Division level while leaving the Reminder on the Coversheet.';
     1822  end
     1823  else if FEditingLevel = dlService then
     1824  begin
     1825    btnLock.hint := 'Adds Reminder to the Coversheet display and Locks the Reminder'
     1826          + CRLF + 'so it can not be removed from the Coversheet display at any of'
     1827          + CRLF + 'the lower levels (Location, User Class, User).';
     1828    btnRemove.hint := 'Removes Reminders from the Coversheet display.  Will not'
     1829          + CRLF + 'remove Reminders which are locked at the Division level or higher.';
     1830    btnAdd.hint := 'Adds Reminders to the Coversheet at the Service level and'
     1831          + CRLF + 'below.  It also removes the lock from a Reminder locked at the'
     1832          + CRLF + 'Service level while leaving the Reminder on the Coversheet.';
     1833  end
     1834  else if FEditingLevel = dlLocation then
     1835  begin
     1836    btnLock.hint := 'Adds Reminder to the Coversheet display and Locks the Reminder'
     1837          + CRLF + 'so it can not be removed from the Coversheet display at any of'
     1838          + CRLF + 'the lower levels (User Class, User).';
     1839    btnRemove.hint := 'Removes Reminders from the Coversheet display.  Will not'
     1840          + CRLF + 'remove Reminders which are locked at the Service level or higher.';
     1841    btnAdd.hint := 'Adds Reminders to the Coversheet at the Location level and'
     1842          + CRLF + 'below.  It also removes the lock from a Reminder locked at the'
     1843          + CRLF + 'Location level while leaving the Reminder on the Coversheet.';
     1844  end
     1845  else if FEditingLevel = dlUserClass then
     1846  begin
     1847    btnLock.hint := 'Adds Reminder to the Coversheet display and Locks the Reminder so'
     1848          + CRLF + 'it can not be removed from the Coversheet display at the User level.';
     1849    btnRemove.hint := 'Removes Reminders from the Coversheet display.  Will not remove'
     1850          + CRLF + 'Reminders which are locked at the Location level or higher.';
     1851    btnAdd.hint := 'Adds Reminders to the Coversheet at the User Class level and'
     1852          + CRLF + 'below.  It also removes the lock from a Reminder locked at the'
     1853          + CRLF + 'User Class level while leaving the Reminder on the Coversheet.';
     1854  end
     1855  else if FEditingLevel = dlUser then
     1856  begin
     1857    btnRemove.hint := 'Removes Reminders from the Coversheet display.  Will not'
     1858          + CRLF + 'remove Reminders which are locked at the User Class level'
     1859          + CRLF + 'or higher.';
     1860    btnAdd.hint := 'Adds Reminders to the Coversheet at the User level.';
     1861  end
     1862  else
     1863  begin
     1864    btnLock.hint := 'Adds Reminder to the Coversheet display and Locks the Reminder'
     1865          + CRLF + 'so it can not be removed from the Coversheet display at any of'
     1866          + CRLF + 'the lower levels (Division, Service, Location, User Class, User).';
     1867    btnRemove.hint := 'Removes Reminders from the Coversheet display.';
     1868    btnAdd.hint := 'Adds Reminders to the Coversheet at the System level and'
     1869          + CRLF + 'below.  It also removes the lock from a Reminder locked at the'
     1870          + CRLF + 'System level while leaving the Reminder on the Coversheet.';
     1871  end;
     1872end;
     1873
     1874procedure TfrmRemCoverSheet.FormCreate(Sender: TObject);
     1875begin
     1876  FSavePause := Application.HintHidePause;   //Save Hint Pause setting
     1877  Application.HintHidePause := 20000;   //Reset Hint Pause to 20 seconds
     1878  mlgnLock.hint := 'Lock a Reminder to prevent it''s removal from a lower'
     1879          + CRLF + 'level  Coversheet display.  For example, if you lock'
     1880          + CRLF + 'a Reminder at the Service level, then that Reminder'
     1881          + CRLF + 'can not be removed from the coversheet display at'
     1882          + CRLF + 'the Location, User Class, or User levels.';
     1883  fOldFocusChanged := Screen.OnActiveControlChange;
     1884  Screen.OnActiveControlChange := ActiveControlChanged;
     1885end;
     1886
     1887procedure TfrmRemCoverSheet.ActiveControlChanged(Sender: TObject);
     1888begin
     1889  if assigned(fOldFocusChanged) then fOldFocusChanged(Sender);
     1890  UpdateButtons;
     1891end;
     1892
     1893procedure TfrmRemCoverSheet.LockButtonUpdate(Data, FNAME, Hint: string);
     1894begin
     1895  btnLock.Caption := Data;
     1896  btnLock.Glyph.LoadFromResourceName(hinstance, FNAME);
     1897  if btnLock.Hint <> Hint then btnLock.Hint := Hint;
     1898  if FNAME = 'BMP_LOCK' then btnLock.OnClick := btnLockClick
     1899  else
     1900    btnLock.OnClick := btnAddClick;
     1901end;
     1902
    16271903end.
Note: See TracChangeset for help on using the changeset viewer.