From 4a3019e6dd32695d9cdfef1225bd0b4e39cd820c Mon Sep 17 00:00:00 2001 From: Mark van Renswoude Date: Tue, 14 Mar 2006 20:06:31 +0000 Subject: [PATCH] Added: precompiled packages included in version control Added: Read-Only toggle (applies to all related files; .pas, .dfm, .ddp) Added: Read-Only overlay indicator Fixed: right-click in the list now selects the item under the cursor (preserving a multi-select when right-clicking an already selected item) Fixed: Ctrl-Up/Down (for the MRU list) did not filter the list immediately Fixed: Issue #174 Fixed: Issue #178 --- Lib/D2006/UnitSwitcherD2006.bpl | Bin 0 -> 95744 bytes Lib/D7/UnitSwitcherD7.bpl | Bin 0 -> 95744 bytes Resources/ReadOnly.ico | Bin 0 -> 318 bytes Source/UnSwDialog.dfm | 50 ++++--- Source/UnSwDialog.pas | 237 ++++++++++++++++++++++++-------- 5 files changed, 208 insertions(+), 79 deletions(-) create mode 100644 Lib/D2006/UnitSwitcherD2006.bpl create mode 100644 Lib/D7/UnitSwitcherD7.bpl create mode 100644 Resources/ReadOnly.ico diff --git a/Lib/D2006/UnitSwitcherD2006.bpl b/Lib/D2006/UnitSwitcherD2006.bpl new file mode 100644 index 0000000000000000000000000000000000000000..46a649f0ae65cb095bc6a5823ad75bd01486dcab GIT binary patch literal 95744 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 d%BxMw+HO@LhmtbWokC-9w`9F&T-kJaa literal 0 HcmV?d00001 diff --git a/Lib/D7/UnitSwitcherD7.bpl b/Lib/D7/UnitSwitcherD7.bpl new file mode 100644 index 0000000000000000000000000000000000000000..2409be1887dcf8bc7151266252d6cf61c7abd8fd GIT binary patch literal 95744 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%0D7o*-yeFpBI5vXYXGS;iYa( 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 k2);E}ZfjcBW~%}r|40M>2Qxy<$N&HU literal 0 HcmV?d00001 diff --git a/Resources/ReadOnly.ico b/Resources/ReadOnly.ico new file mode 100644 index 0000000000000000000000000000000000000000..06809b3bf827c19aa95e12a5305533df54842d3c GIT binary patch literal 318 zcma)$F%Ez*32XsP=jD2RtKC4fH4W{5ER4fJ2^z0~BqyUMPbEZxx377#ClF3SJ zZckiC!o)(6Fe+OjXst0&|4_A#uxw=Fuh#H=2|sVwV?6KqoA literal 0 HcmV?d00001 diff --git a/Source/UnSwDialog.dfm b/Source/UnSwDialog.dfm index a0bfe4f..310c6d1 100644 --- a/Source/UnSwDialog.dfm +++ b/Source/UnSwDialog.dfm @@ -90,6 +90,7 @@ object frmUnSwDialog: TfrmUnSwDialog OnData = lstUnitsData OnDblClick = lstUnitsDblClick OnDrawItem = lstUnitsDrawItem + OnMouseDown = lstUnitsMouseDown end object pnlSubFilters: TPanel Left = 4 @@ -206,7 +207,7 @@ object frmUnSwDialog: TfrmUnSwDialog Left = 16 Top = 264 Bitmap = { - 494C010105000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 494C010106000900040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600 0000000000003600000028000000400000003000000001002000000000000030 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -340,7 +341,7 @@ object frmUnSwDialog: TfrmUnSwDialog 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000C0C0C000C0C0C000C0C0C000C0C0C0000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -348,7 +349,7 @@ object frmUnSwDialog: TfrmUnSwDialog 8000808080008080800080808000808080008080800080808000808080008080 8000808080000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000800000008000C0C0C0000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -356,7 +357,7 @@ object frmUnSwDialog: TfrmUnSwDialog C000FFFFFF00C0C0C000FFFFFF00C0C0C000FFFFFF00C0C0C000FFFFFF00C0C0 C000808080000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000FF0000008000C0C0C0000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -364,7 +365,7 @@ object frmUnSwDialog: TfrmUnSwDialog FF00C0C0C000FFFFFF00C0C0C000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00C0C0C0000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -372,7 +373,7 @@ object frmUnSwDialog: TfrmUnSwDialog C000FFFFFF00C0C0C000FFFFFF0000000000FFFFFF0080808000808080008080 8000808080008080800080808000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000800000008000C0C0C0000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -380,7 +381,7 @@ object frmUnSwDialog: TfrmUnSwDialog FF00C0C0C000FFFFFF00C0C0C00000000000FFFFFF00FFFFFF00C0C0C000FFFF FF00C0C0C000FFFFFF0080808000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000FF0000008000C0C0C0000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -388,7 +389,7 @@ object frmUnSwDialog: TfrmUnSwDialog C000FFFFFF00C0C0C000FFFFFF0000000000FFFFFF00C0C0C000FFFFFF00C0C0 C000FFFFFF00C0C0C00080808000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000FF0000008000C0C0C0000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -396,7 +397,7 @@ object frmUnSwDialog: TfrmUnSwDialog FF00C0C0C000FFFFFF00C0C0C00000000000FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000FF0000008000C0C0C0000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -404,7 +405,7 @@ object frmUnSwDialog: TfrmUnSwDialog C000FFFFFF00C0C0C000FFFFFF00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000FF0000008000C0C0C0000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -412,7 +413,7 @@ object frmUnSwDialog: TfrmUnSwDialog FF00C0C0C000FFFFFF00C0C0C00000000000FF000000FF000000FF000000FF00 0000FF00000000000000C0C0C000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF000000FF0000008000C0C0C0000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -420,7 +421,7 @@ object frmUnSwDialog: TfrmUnSwDialog C000FFFFFF00C0C0C000FFFFFF00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF00FFFFFF00C0C0C0000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -598,16 +599,15 @@ object frmUnSwDialog: TfrmUnSwDialog 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000030000000000000003000000000000 - 0003000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000300000000000000030000000000000003000000000000 - 00030000000000000003000000000000E000E000FFFFEC0FE000E000FFFF840F + 000000000000000000000000000000000003FFF0000000000003FFF000000000 + 0003FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000 + 0000FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000 + 0000FFF0000000000003FFFF000000000003FFFF000000000003FFFF00000000 + 0003FFFF000000000003FFFF00000000E000E000FFFFEC0FE000E000FFFF840F E000E0000000AC0FE000E0000000BF3FE000E0000000FFFFE000600000001000 E000200000001000E00000000000B000E00020000000F000E00060000000F000 E000E0000000F000E000E0000000F000E000E0000000F000E001E0010000F000 - E003E003FFFFF000E007E007FFFFF00000000000000000000000000000000000 - 000000000000} + E003E003FFFFF000E007E007FFFFF000} end object alMain: TActionList Left = 44 @@ -659,9 +659,13 @@ object frmUnSwDialog: TfrmUnSwDialog ShortCut = 16424 OnExecute = actMRUNextExecute end + object actReadOnly: TAction + Caption = '&Read only' + ShortCut = 49234 + OnExecute = actReadOnlyExecute + end end object pmnUnits: TPopupMenu - OnPopup = pmnUnitsPopup Left = 72 Top = 264 object pmnUnitsSelectAll: TMenuItem @@ -682,6 +686,12 @@ object frmUnSwDialog: TfrmUnSwDialog object pmnUnitsSep2: TMenuItem Caption = '-' end + object pmnUnitsReadOnly: TMenuItem + Action = actReadOnly + end + object pmnUnitsSep3: TMenuItem + Caption = '-' + end object pmnUnitsOpenFolder: TMenuItem Action = actOpenFolder end diff --git a/Source/UnSwDialog.pas b/Source/UnSwDialog.pas index d524197..fa91844 100644 --- a/Source/UnSwDialog.pas +++ b/Source/UnSwDialog.pas @@ -30,12 +30,15 @@ type private FColor: TColor; FImageIndex: Integer; + FOverlayIndex: Integer; protected + procedure VisitUnit(const AUnit: TUnSwUnit); procedure VisitModule(const AUnit: TUnSwModuleUnit); procedure VisitProject(const AUnit: TUnSwProjectUnit); public property Color: TColor read FColor; property ImageIndex: Integer read FImageIndex; + property OverlayIndex: Integer read FOverlayIndex; end; TfrmUnSwDialog = class(TForm) @@ -44,6 +47,7 @@ type actOpenDFMProperties: TAction; actOpenFolder: TAction; actOpenProperties: TAction; + actReadOnly: TAction; actSelectAll: TAction; actSelectInvert: TAction; actSortByName: TAction; @@ -64,10 +68,12 @@ type pmnUnitsOpenDFMProperties: TMenuItem; pmnUnitsOpenFolder: TMenuItem; pmnUnitsOpenProperties: TMenuItem; + pmnUnitsReadOnly: TMenuItem; pmnUnitsSelectAll: TMenuItem; pmnUnitsSelectInvert: TMenuItem; pmnUnitsSep1: TMenuItem; pmnUnitsSep2: TMenuItem; + pmnUnitsSep3: TMenuItem; pmnUnitsSortByName: TMenuItem; pmnUnitsSortByType: TMenuItem; pnlButtons: TPanel; @@ -82,6 +88,7 @@ type procedure actOpenDFMPropertiesExecute(Sender: TObject); procedure actOpenFolderExecute(Sender: TObject); procedure actOpenPropertiesExecute(Sender: TObject); + procedure actReadOnlyExecute(Sender: TObject); procedure actSelectAllExecute(Sender: TObject); procedure actSelectInvertExecute(Sender: TObject); procedure btnConfigurationClick(Sender: TObject); @@ -94,7 +101,7 @@ type procedure lstUnitsData(Control: TWinControl; Index: Integer; var Data: string); procedure lstUnitsDblClick(Sender: TObject); procedure lstUnitsDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); - procedure pmnUnitsPopup(Sender: TObject); + procedure lstUnitsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SortExecute(Sender: TObject); procedure TypeFilterChange(Sender: TObject); private @@ -129,6 +136,8 @@ type procedure LoadSettings(); procedure SaveSettings(); + + procedure UpdateUnitActions(); public class function Execute(const AUnits: TUnSwUnitList; const AFormsOnly: Boolean; @@ -184,10 +193,29 @@ type property ReadOnlyCount: Integer read FReadOnlyCount; end; + TUnSwSetReadOnlyVisitor = class(TUnSwOpenVisitor) + private + FReadOnlyFlag: Boolean; + protected + procedure OpenFile(const AFileName: String); override; + public + property ReadOnlyFlag: Boolean read FReadOnlyFlag write FReadOnlyFlag; + end; + {$R *.dfm} +function IsReadOnly(const AFileName: String): Boolean; +var + iAttr: Integer; + +begin + iAttr := FileGetAttr(AFileName); + Result := (iAttr <> -1) and ((iAttr and faReadOnly) <> 0); +end; + + { TUnSwOpenVisitor } constructor TUnSwOpenVisitor.Create(); begin @@ -207,9 +235,13 @@ end; function TUnSwOpenVisitor.IsProcessed(const AFileName: String; const ARegister: Boolean): Boolean; begin - Result := (FProcessed.IndexOf(AFileName) > -1); - if (not Result) and ARegister then - FProcessed.Add(AFileName); + Result := True; + if FileExists(AFileName) or DirectoryExists(AFileName) then + begin + Result := (FProcessed.IndexOf(AFileName) > -1); + if (not Result) and ARegister then + FProcessed.Add(AFileName); + end; end; procedure TUnSwOpenVisitor.VisitModule(const AUnit: TUnSwModuleUnit); @@ -238,7 +270,7 @@ begin sParams := '/e,'; // If it's a file, have explorer highlight it - if not DirectoryExists(AFileName) then + if not DirectoryExists(sFile) then sParams := sParams + '/select,'; sParams := sParams + ExtractShortPathName(sFile); @@ -280,22 +312,57 @@ end; { TUnSwReadOnlyVisitor } procedure TUnSwReadOnlyVisitor.OpenFile(const AFileName: String); +begin + if not IsProcessed(AFileName) then + if IsReadOnly(AFileName) then + Inc(FReadOnlyCount); +end; + + +{ TUnSwSetReadOnlyVisitor } +procedure TUnSwSetReadOnlyVisitor.OpenFile(const AFileName: String); var - iAttr: Integer; + fileInfo: TSearchRec; + fileAttr: Integer; + path: String; begin if not IsProcessed(AFileName) then begin - iAttr := FileGetAttr(AFileName); - if (iAttr and faReadOnly) <> 0 then - Inc(FReadOnlyCount); + path := ExtractFilePath(AFileName); + if FindFirst(ChangeFileExt(AFileName, '.*'), faAnyFile, fileInfo) = 0 then + begin + repeat + fileAttr := FileGetAttr(path + fileInfo.Name); + if fileAttr <> -1 then + begin + if ReadOnlyFlag then + fileAttr := fileAttr or faReadOnly + else + fileAttr := fileAttr and not faReadOnly; + + FileSetAttr(path + fileInfo.Name, fileAttr); + end; + until FindNext(fileInfo) <> 0; + + FindClose(fileInfo); + end; end; end; { TUnSwStyleVisitor } +procedure TUnSwStyleVisitor.VisitUnit(const AUnit: TUnSwUnit); +begin + if IsReadOnly(AUnit.FileName) then + FOverlayIndex := 5 + else + FOverlayIndex := -1; +end; + procedure TUnSwStyleVisitor.VisitModule(const AUnit: TUnSwModuleUnit); begin + VisitUnit(AUnit); case AUnit.UnitType of swutUnit: begin @@ -320,8 +387,9 @@ end; procedure TUnSwStyleVisitor.VisitProject(const AUnit: TUnSwProjectUnit); begin - FColor := Settings.Colors.ProjectSource; - FImageIndex := 4; + VisitUnit(AUnit); + FColor := Settings.Colors.ProjectSource; + FImageIndex := 4; end; @@ -421,6 +489,66 @@ begin end; end; +procedure TfrmUnSwDialog.UpdateUnitActions(); +var + bDFM: Boolean; + bUnits: Boolean; + iUnit: Integer; + pUnits: TUnSwUnitList; + pVisitor: TUnSwReadOnlyVisitor; + sStatus: String; + +begin + { Read-only status } + pUnits := GetActiveUnits(); + if Assigned(pUnits) then + try + pVisitor := TUnSwReadOnlyVisitor.Create(); + try + pUnits.AcceptVisitor(pVisitor); + actReadOnly.Checked := (pVisitor.ReadOnlyCount > 0); + + sStatus := ''; + if pVisitor.ReadOnlyCount > 0 then + if pVisitor.ReadOnlyCount = 1 then + sStatus := '1 read-only unit selected' + else + sStatus := Format('%d read-only units selected', + [pVisitor.ReadOnlyCount]); + + sbStatus.Panels[0].Text := sStatus; + finally + FreeAndNil(pVisitor); + end; + finally + FreeAndNil(pUnits); + end; + + { Properties } + bDFM := False; + bUnits := False; + + pUnits := GetActiveUnits(); + if Assigned(pUnits) then + try + bUnits := (pUnits.Count > 0); + + for iUnit := 0 to Pred(pUnits.Count) do + if (pUnits[iUnit] is TUnSwModuleUnit) and + (TUnSwModuleUnit(pUnits[iUnit]).UnitType in [swutForm, swutDataModule]) then + begin + bDFM := True; + break; + end; + finally + FreeAndNil(pUnits); + end; + + actOpenFolder.Enabled := bUnits; + actOpenProperties.Enabled := bUnits; + actOpenDFMProperties.Enabled := bDFM; +end; + procedure TfrmUnSwDialog.UpdateList(); var activeUnit: TUnSwUnit; @@ -689,6 +817,9 @@ begin cmbSearch.ItemIndex := FMRUIndex; ActiveControl := cmbSearch; cmbSearch.SelectAll(); + + if Assigned(cmbSearch.OnChange) then + cmbSearch.OnChange(nil); end; procedure TfrmUnSwDialog.actMRUNextExecute(Sender: TObject); @@ -810,34 +941,8 @@ begin end; procedure TfrmUnSwDialog.lstUnitsClick(Sender: TObject); -var - pUnits: TUnSwUnitList; - pVisitor: TUnSwReadOnlyVisitor; - sStatus: String; - begin - pUnits := GetActiveUnits(); - if Assigned(pUnits) then - try - pVisitor := TUnSwReadOnlyVisitor.Create(); - try - pUnits.AcceptVisitor(pVisitor); - - sStatus := ''; - if pVisitor.ReadOnlyCount > 0 then - if pVisitor.ReadOnlyCount = 1 then - sStatus := '1 read-only unit selected' - else - sStatus := Format('%d read-only units selected', - [pVisitor.ReadOnlyCount]); - - sbStatus.Panels[0].Text := sStatus; - finally - FreeAndNil(pVisitor); - end; - finally - FreeAndNil(pUnits); - end; + UpdateUnitActions(); end; procedure TfrmUnSwDialog.lstUnitsData(Control: TWinControl; Index: Integer; @@ -882,42 +987,56 @@ begin InflateRect(textRect, -2, -2); ilsTypes.Draw(Canvas, textRect.Left, textRect.Top, FStyleVisitor.ImageIndex); + if FStyleVisitor.OverlayIndex > -1 then + ilsTypes.Draw(Canvas, textRect.Left, textRect.Top, FStyleVisitor.OverlayIndex); + Inc(textRect.Left, ilsTypes.Width + 4); DrawText(Canvas.Handle, PChar(text), Length(text), textRect, DT_SINGLELINE or DT_LEFT or DT_VCENTER or DT_END_ELLIPSIS); end; end; -procedure TfrmUnSwDialog.pmnUnitsPopup(Sender: TObject); +procedure TfrmUnSwDialog.lstUnitsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var - bDFM: Boolean; - bUnits: Boolean; - iUnit: Integer; - pUnits: TUnSwUnitList; + itemIndex: Integer; begin - bDFM := False; - bUnits := False; + { Bij rechtermuisknop het item selecteren indien deze niet al + geselecteerd was } + if Button = mbRight then + begin + itemIndex := lstUnits.ItemAtPos(Point(X, Y), True); + if (itemIndex > -1) and (not lstUnits.Selected[itemIndex]) then + begin + lstUnits.ClearSelection; + lstUnits.Selected[itemIndex] := True; + UpdateUnitActions(); + end; + end; +end; - pUnits := GetActiveUnits(); +procedure TfrmUnSwDialog.actReadOnlyExecute(Sender: TObject); +var + pUnits: TUnSwUnitList; + pVisitor: TUnSwSetReadOnlyVisitor; + +begin + pUnits := GetActiveUnits(); if Assigned(pUnits) then try - bUnits := (pUnits.Count > 0); - - for iUnit := 0 to Pred(pUnits.Count) do - if (pUnits[iUnit] is TUnSwModuleUnit) and - (TUnSwModuleUnit(pUnits[iUnit]).UnitType in [swutForm, swutDataModule]) then - begin - bDFM := True; - break; - end; + pVisitor := TUnSwSetReadOnlyVisitor.Create(); + try + pVisitor.ReadOnlyFlag := not actReadOnly.Checked; + pUnits.AcceptVisitor(pVisitor); + finally + FreeAndNil(pVisitor); + end; finally FreeAndNil(pUnits); + + lstUnits.Invalidate(); + UpdateUnitActions(); end; - - actOpenFolder.Enabled := bUnits; - actOpenProperties.Enabled := bUnits; - actOpenDFMProperties.Enabled := bDFM; end; end.