Add: Find and replace text in files

This commit is contained in:
Alexander Koblov 2007-03-28 20:46:49 +00:00
commit fe83530101
9 changed files with 357 additions and 169 deletions

View file

@ -413,10 +413,9 @@ begin
FMappingHandle := CreateFileMapping(FFileHandle, nil, PAGE_READONLY, 0, 0, nil);
if FMappingHandle <> 0 then
begin
FMappedFile := MapViewOfFile(FMappingHandle, FILE_MAP_READ, 0, 0, 0);
FMappedFile := MapViewOfFile(FMappingHandle, FILE_MAP_READ, 0, 0, 0)
else
Exit;
end;
FPosition:=0;
Invalidate;

View file

View file

View file

@ -1,12 +1,12 @@
inherited frmFindDlg: TfrmFindDlg
Left = 289
Height = 461
Top = 25
Left = 229
Height = 476
Top = 39
Width = 541
HorzScrollBar.Page = 540
VertScrollBar.Page = 460
VertScrollBar.Page = 475
VertScrollBar.Range = 316
ActiveControl = cbDateFrom
ActiveControl = edtFindPathStart
Caption = 'frmFindDlg'
KeyPreview = True
OnClose = frmFindDlgClose
@ -17,20 +17,20 @@ inherited frmFindDlg: TfrmFindDlg
object Splitter1: TSplitter
Cursor = crVSplit
Height = 1
Top = 295
Width = 541
Align = alTop
ResizeAnchor = akTop
end
object Panel2: TPanel
Height = 281
Top = 1
Height = 295
Width = 541
Align = alTop
BevelOuter = bvNone
FullRepaint = False
TabOrder = 0
object pgcSearch: TPageControl
Height = 273
Height = 296
Width = 446
ActivePage = tsStandard
Anchors = [akTop, akLeft, akRight]
@ -41,7 +41,7 @@ inherited frmFindDlg: TfrmFindDlg
object lblFindPathStart: TLabel
Left = 8
Height = 14
Top = 57
Top = 50
Width = 30
Caption = 'FileDir'
Color = clNone
@ -50,7 +50,7 @@ inherited frmFindDlg: TfrmFindDlg
object lblFindFileMask: TLabel
Left = 8
Height = 14
Top = 1
Top = 4
Width = 41
Caption = 'FileMask'
Color = clNone
@ -59,7 +59,7 @@ inherited frmFindDlg: TfrmFindDlg
object edtFindPathStart: TEdit
Left = 8
Height = 24
Top = 81
Top = 67
Width = 362
Anchors = [akTop, akLeft, akRight]
TabOrder = 0
@ -67,7 +67,7 @@ inherited frmFindDlg: TfrmFindDlg
object btnSelDir: TButton
Left = 378
Height = 25
Top = 80
Top = 66
Width = 25
Anchors = [akTop, akRight]
BorderSpacing.InnerBorder = 4
@ -90,8 +90,8 @@ inherited frmFindDlg: TfrmFindDlg
end
object gbFindData: TGroupBox
Left = 8
Height = 80
Top = 145
Height = 145
Top = 119
Width = 418
Anchors = [akTop, akLeft, akRight]
Caption = 'Find Data'
@ -101,35 +101,50 @@ inherited frmFindDlg: TfrmFindDlg
object cbCaseSens: TCheckBox
Left = 18
Height = 13
Top = 40
Top = 97
Width = 88
AllowGrayed = True
Caption = 'Case sensitive'
TabOrder = 0
end
object edtFindText: TEdit
Left = 16
Height = 24
Top = 8
Width = 366
Top = 9
Width = 338
Anchors = [akTop, akLeft, akRight]
TabOrder = 1
end
object cbNoThisText: TCheckBox
Left = 154
Height = 13
Top = 40
Top = 97
Width = 177
Caption = 'Find files NOT containing the text'
TabOrder = 2
end
object cbReplaceText: TCheckBox
Left = 16
Height = 13
Top = 41
Width = 80
Caption = 'Replace text'
OnChange = cbReplaceTextChange
TabOrder = 4
end
object edtReplaceText: TEdit
Left = 16
Height = 23
Top = 65
Width = 346
Enabled = False
TabOrder = 3
end
end
object cbFindInFile: TCheckBox
Left = 12
Height = 13
Top = 121
Top = 98
Width = 67
AllowGrayed = True
Caption = 'Find in file'
OnClick = cbFindInFileClick
TabOrder = 4
@ -405,8 +420,8 @@ inherited frmFindDlg: TfrmFindDlg
end
end
object Panel1: TPanel
Height = 179
Top = 282
Height = 180
Top = 296
Width = 541
Align = alClient
BevelOuter = bvNone
@ -450,7 +465,7 @@ inherited frmFindDlg: TfrmFindDlg
end
end
object lsFoundedFiles: TListBox
Height = 125
Height = 76
Top = 54
Width = 541
Align = alClient
@ -459,6 +474,53 @@ inherited frmFindDlg: TfrmFindDlg
PopupMenu = PopupMenuFind
TabOrder = 1
end
object Panel4: TPanel
Height = 50
Top = 130
Width = 541
Align = alBottom
TabOrder = 2
object btnView: TButton
Left = 24
Height = 25
Top = 14
Width = 104
BorderSpacing.InnerBorder = 4
Caption = '&View'
OnClick = btnViewClick
TabOrder = 0
end
object btnNewSearch: TButton
Left = 152
Height = 25
Top = 14
Width = 104
BorderSpacing.InnerBorder = 4
Caption = '&New search'
OnClick = btnNewSearchClick
TabOrder = 1
end
object btnGoToPath: TButton
Left = 280
Height = 25
Top = 14
Width = 104
BorderSpacing.InnerBorder = 4
Caption = '&Go to file'
OnClick = btnGoToPathClick
TabOrder = 2
end
object btnWorkWithFound: TButton
Left = 408
Height = 25
Top = 14
Width = 104
BorderSpacing.InnerBorder = 4
Caption = 'Feed to &listbox'
OnClick = btnWorkWithFoundClick
TabOrder = 3
end
end
end
object PopupMenuFind: TPopupMenu
left = 152

View file

@ -1,135 +1,150 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TfrmFindDlg','FORMDATA',[
'TPF0'#241#11'TfrmFindDlg'#10'frmFindDlg'#4'Left'#3'!'#1#6'Height'#3#205#1#3
+'Top'#2#25#5'Width'#3#29#2#18'HorzScrollBar.Page'#3#28#2#18'VertScrollBar.Pa'
+'ge'#3#204#1#19'VertScrollBar.Range'#3'<'#1#13'ActiveControl'#7#10'cbDateFro'
+'m'#7'Caption'#6#10'frmFindDlg'#10'KeyPreview'#9#7'OnClose'#7#15'frmFindDlgC'
+'lose'#12'OnCloseQuery'#7#14'FormCloseQuery'#10'OnKeyPress'#7#12'FormKeyPres'
+'s'#6'OnShow'#7#14'frmFindDlgShow'#8'Position'#7#14'poScreenCenter'#0#9'TSpl'
+'itter'#9'Splitter1'#6'Cursor'#7#8'crVSplit'#6'Height'#2#1#5'Width'#3#29#2#5
+'Align'#7#5'alTop'#12'ResizeAnchor'#7#5'akTop'#0#0#6'TPanel'#6'Panel2'#6'Hei'
+'ght'#3#25#1#3'Top'#2#1#5'Width'#3#29#2#5'Align'#7#5'alTop'#10'BevelOuter'#7
+#6'bvNone'#11'FullRepaint'#8#8'TabOrder'#2#0#0#12'TPageControl'#9'pgcSearch'
+#6'Height'#3#17#1#5'Width'#3#190#1#10'ActivePage'#7#10'tsStandard'#7'Anchors'
+#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabIndex'#2#0#8'TabOrder'#2#0#0#9'TTab'
+'Sheet'#10'tsStandard'#7'Caption'#6#8'Standard'#0#6'TLabel'#16'lblFindPathSt'
+'art'#4'Left'#2#8#6'Height'#2#14#3'Top'#2'9'#5'Width'#2#30#7'Caption'#6#7'Fi'
+'leDir'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#15'lblFindFileM'
+'ask'#4'Left'#2#8#6'Height'#2#14#3'Top'#2#1#5'Width'#2')'#7'Caption'#6#8'Fil'
+'eMask'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#5'TEdit'#16'edtFindPathSt'
+'art'#4'Left'#2#8#6'Height'#2#24#3'Top'#2'Q'#5'Width'#3'j'#1#7'Anchors'#11#5
+'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#0#0#0#7'TButton'#9'btnSelDir'#4
+'Left'#3'z'#1#6'Height'#2#25#3'Top'#2'P'#5'Width'#2#25#7'Anchors'#11#5'akTop'
+#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'...'#7'OnClic'
+'k'#7#14'btnSelDirClick'#8'TabOrder'#2#2#0#0#9'TComboBox'#15'cmbFindFileMask'
+#4'Left'#2#8#6'Height'#2#21#3'Top'#2#25#5'Width'#3'j'#1#7'Anchors'#11#5'akTo'
+'p'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'
+#20'cbactSearchAscending'#0#10'ItemHeight'#2#18#9'MaxLength'#2#0#11'ParentCt'
+'l3D'#8#8'TabOrder'#2#1#4'Text'#6#1'*'#0#0#9'TGroupBox'#10'gbFindData'#4'Lef'
+'t'#2#8#6'Height'#2'P'#3'Top'#3#145#0#5'Width'#3#162#1#7'Anchors'#11#5'akTop'
+#6'akLeft'#7'akRight'#0#7'Caption'#6#9'Find Data'#7'Enabled'#8#11'ParentCtl3'
+'D'#8#8'TabOrder'#2#3#0#9'TCheckBox'#10'cbCaseSens'#4'Left'#2#18#6'Height'#2
+#13#3'Top'#2'('#5'Width'#2'X'#11'AllowGrayed'#9#7'Caption'#6#14'Case sensiti'
+'ve'#8'TabOrder'#2#0#0#0#5'TEdit'#11'edtFindText'#4'Left'#2#16#6'Height'#2#24
+#3'Top'#2#8#5'Width'#3'n'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8
+'TabOrder'#2#1#0#0#9'TCheckBox'#12'cbNoThisText'#4'Left'#3#154#0#6'Height'#2
+#13#3'Top'#2'('#5'Width'#3#177#0#7'Caption'#6'"Find files NOT containing the'
+' text'#8'TabOrder'#2#2#0#0#0#9'TCheckBox'#12'cbFindInFile'#4'Left'#2#12#6'H'
+'eight'#2#13#3'Top'#2'y'#5'Width'#2'C'#11'AllowGrayed'#9#7'Caption'#6#12'Fin'
+'d in file'#7'OnClick'#7#17'cbFindInFileClick'#8'TabOrder'#2#4#0#0#0#9'TTabS'
+'heet'#10'tsAdvanced'#7'Caption'#6#8'Advanced'#10'ImageIndex'#2#1#0#9'TDateE'
+'dit'#10'deDateFrom'#4'Left'#2#4#6'Height'#2#23#3'Top'#2')'#5'Width'#2'P'#5
+'Color'#7#9'clBtnFace'#7'Enabled'#8#8'ReadOnly'#8#8'TabOrder'#2#0#4'Text'#6
+#10'23.02.2007'#11'ButtonWidth'#2#23#10'Glyph.Data'#10'3'#2#0#0'/'#2#0#0'/* '
+'XPM */'#10'static char *calendar[] = {'#10'/* columns rows colors chars-per'
+'-pixel */'#10'"14 12 17 1",'#10'" c black",'#10'". c #800000",'#10'"X c #0'
+'08000",'#10'"o c #808000",'#10'"O c navy",'#10'"+ c #800080",'#10'"@ c #008'
+'080",'#10'"# c #808080",'#10'"$ c #C0C0C0",'#10'"% c red",'#10'"& c green",'
+#10'"* c yellow",'#10'"= c blue",'#10'"- c magenta",'#10'"; c cyan",'#10'": '
+'c gray100",'#10'"> c None",'#10'/* pixels */'#10'">> >>",'#10'">>:'
+'$$$$$$$$:O#",'#10'">>::::::::::O#",'#10'">>:: :: :O#",'#10'">>: :: ::::'
+'O#",'#10'">>:: :: $:O#",'#10'">>:: ::::: :O#",'#10'">>:: ::$:$ :O#",'#10
+'">>: : $:O#",'#10'">>::::::::::O#",'#10'">> O OO O O#",'#10'">>>#####'
+'######"'#10'};'#10#9'NumGlyphs'#2#1#11'ParentColor'#8#23'CalendarDisplaySet'
+'tings'#11#14'dsShowHeadings'#14'dsShowDayNames'#0#9'OKCaption'#6#2'OK'#13'C'
+'ancelCaption'#6#6'Cancel'#4'Date'#5#0#0#0#0#0#0#224#152#14'@'#0#0#9'TDateEd'
+'it'#8'deDateTo'#4'Left'#3#164#0#6'Height'#2#23#3'Top'#2')'#5'Width'#2'P'#5
+'Color'#7#9'clBtnFace'#7'Enabled'#8#8'ReadOnly'#8#8'TabOrder'#2#1#4'Text'#6
+#10'23.02.2007'#11'ButtonWidth'#2#23#10'Glyph.Data'#10'3'#2#0#0'/'#2#0#0'/* '
+'XPM */'#10'static char *calendar[] = {'#10'/* columns rows colors chars-per'
+'-pixel */'#10'"14 12 17 1",'#10'" c black",'#10'". c #800000",'#10'"X c #0'
+'08000",'#10'"o c #808000",'#10'"O c navy",'#10'"+ c #800080",'#10'"@ c #008'
+'080",'#10'"# c #808080",'#10'"$ c #C0C0C0",'#10'"% c red",'#10'"& c green",'
+#10'"* c yellow",'#10'"= c blue",'#10'"- c magenta",'#10'"; c cyan",'#10'": '
+'c gray100",'#10'"> c None",'#10'/* pixels */'#10'">> >>",'#10'">>:'
+'$$$$$$$$:O#",'#10'">>::::::::::O#",'#10'">>:: :: :O#",'#10'">>: :: ::::'
+'O#",'#10'">>:: :: $:O#",'#10'">>:: ::::: :O#",'#10'">>:: ::$:$ :O#",'#10
,'">>: : $:O#",'#10'">>::::::::::O#",'#10'">> O OO O O#",'#10'">>>#####'
+'######"'#10'};'#10#9'NumGlyphs'#2#1#11'ParentColor'#8#23'CalendarDisplaySet'
+'tings'#11#14'dsShowHeadings'#14'dsShowDayNames'#0#9'OKCaption'#6#2'OK'#13'C'
+'ancelCaption'#6#6'Cancel'#4'Date'#5#0#0#0#0#0#0#224#152#14'@'#0#0#9'TCheckB'
+'ox'#10'cbDateFrom'#4'Left'#2#4#6'Height'#2#13#3'Top'#2#22#5'Width'#2'H'#7'C'
+'aption'#6#10'Date From:'#8'OnChange'#7#16'cbDateFromChange'#8'TabOrder'#2#2
+#0#0#9'TCheckBox'#14'cbNotOlderThan'#4'Left'#2#4#6'Height'#2#13#3'Top'#3#136
+#0#5'Width'#2'Z'#7'Caption'#6#15'Not older than:'#8'OnChange'#7#20'cbNotOlde'
+'rThanChange'#8'TabOrder'#2#3#0#0#9'TSpinEdit'#14'seNotOlderThan'#4'Left'#2#4
+#6'Height'#2#20#3'Top'#3#161#0#5'Width'#2'j'#7'Enabled'#8#8'TabOrder'#2#4#0#0
+#9'TComboBox'#11'cbDelayUnit'#4'Left'#3#164#0#6'Height'#2#21#3'Top'#3#160#0#5
+'Width'#2'n'#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSear'
+'chAscending'#0#7'Enabled'#8#9'ItemIndex'#2#2#13'Items.Strings'#1#6#9'Minute'
+'(s)'#6#7'Hour(s)'#6#6'Day(s)'#6#7'Week(s)'#6#8'Month(s)'#6#7'Year(s)'#0#9'M'
+'axLength'#2#0#8'TabOrder'#2#5#4'Text'#6#6'Day(s)'#0#0#9'TCheckBox'#14'cbFil'
+'eSizeFrom'#4'Left'#2#4#6'Height'#2#13#3'Top'#3#193#0#5'Width'#2'X'#7'Captio'
+'n'#6#15'File Size From:'#8'OnChange'#7#20'cbFileSizeFromChange'#8'TabOrder'
+#2#6#0#0#9'TCheckBox'#8'cbDateTo'#4'Left'#3#164#0#6'Height'#2#13#3'Top'#2#22
+#5'Width'#2'>'#7'Caption'#6#8'Date To:'#8'OnChange'#7#14'cbDateToChange'#8'T'
+'abOrder'#2#7#0#0#9'TCheckBox'#12'cbFileSizeTo'#4'Left'#3#164#0#6'Height'#2
+#13#3'Top'#3#193#0#5'Width'#2'N'#7'Caption'#6#13'File Size To:'#8'OnChange'#7
+#18'cbFileSizeToChange'#8'TabOrder'#2#8#0#0#9'TSpinEdit'#14'seFileSizeFrom'#4
+'Left'#2#4#6'Height'#2#20#3'Top'#3#217#0#5'Width'#2'j'#7'Enabled'#8#8'TabOrd'
+'er'#2#9#0#0#9'TSpinEdit'#12'seFileSizeTo'#4'Left'#3#164#0#6'Height'#2#20#3
+'Top'#3#217#0#5'Width'#2'n'#7'Enabled'#8#8'TabOrder'#2#10#0#0#9'TComboBox'#15
+'cbUnitOfMeasure'#4'Left'#3#28#1#6'Height'#2#21#3'Top'#3#217#0#5'Width'#2'H'
+#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'
+#0#9'ItemIndex'#2#1#13'Items.Strings'#1#6#4'Byte'#6#5'Kbyte'#6#5'Mbyte'#6#5
+'Gbyte'#0#9'MaxLength'#2#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#11#4
+'Text'#6#5'Kbyte'#0#0#9'TCheckBox'#10'cbTimeFrom'#4'Left'#2#4#6'Height'#2#13
+#3'Top'#2'I'#5'Width'#2'E'#7'Caption'#6#10'Time from:'#8'OnChange'#7#16'cbTi'
+'meFromChange'#8'TabOrder'#2#12#0#0#9'TCheckBox'#8'cbTimeTo'#4'Left'#3#164#0
+#6'Height'#2#13#3'Top'#2'I'#5'Width'#2':'#7'Caption'#6#8'Time to:'#8'OnChang'
+'e'#7#14'cbTimeToChange'#8'TabOrder'#2#13#0#0#9'TMaskEdit'#10'meTimeFrom'#4
+'Left'#2#4#6'Height'#2#23#3'Top'#2'a'#5'Width'#2'P'#7'Enabled'#8#8'EditMask'
+#6#8'00:00:00'#9'MaxLength'#2#8#11'ParentColor'#8#8'TabOrder'#2#14#4'Text'#6
+#8'00:00:00'#8'OnChange'#7#12'meTimeChange'#0#0#9'TMaskEdit'#8'meTimeTo'#4'L'
+'eft'#3#164#0#6'Height'#2#23#3'Top'#2'a'#5'Width'#2'P'#7'Enabled'#8#8'EditMa'
+'sk'#6#8'00:00:00'#9'MaxLength'#2#8#11'ParentColor'#8#8'TabOrder'#2#15#4'Tex'
+'t'#6#8'00:00:00'#8'OnChange'#7#12'meTimeChange'#0#0#0#0#7'TButton'#8'btnClo'
+'se'#4'Left'#3#198#1#6'Height'#2#25#3'Top'#2'G'#5'Width'#2'K'#7'Anchors'#11#5
+'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#6'&Close'
+#7'OnClick'#7#13'btnCloseClick'#8'TabOrder'#2#3#0#0#7'TButton'#7'btnStop'#4
+'Left'#3#198#1#6'Height'#2#25#3'Top'#2'g'#5'Width'#2'K'#7'Anchors'#11#5'akTo'
+'p'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#6'Cancel'#9#7'Caption'#6#6
+'Cancel'#7'Enabled'#8#7'OnClick'#7#12'btnStopClick'#8'TabOrder'#2#1#0#0#7'TB'
+'utton'#8'btnStart'#4'Left'#3#198#1#6'Height'#2#25#3'Top'#2''''#5'Width'#2'K'
+#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Cap'
+'tion'#6#6'&Start'#7'Default'#9#7'OnClick'#7#13'btnStartClick'#8'TabOrder'#2
+#2#0#0#0#6'TPanel'#6'Panel1'#6'Height'#3#179#0#3'Top'#3#26#1#5'Width'#3#29#2
+#5'Align'#7#8'alClient'#10'BevelOuter'#7#6'bvNone'#11'FullRepaint'#8#8'TabOr'
+'der'#2#1#0#6'TPanel'#6'Panel3'#6'Height'#2'6'#5'Width'#3#29#2#5'Align'#7#5
+'alTop'#10'BevelInner'#7#8'bvRaised'#10'BevelOuter'#7#9'bvLowered'#11'FullRe'
+'paint'#8#8'TabOrder'#2#0#0#6'TLabel'#9'lblStatus'#4'Left'#2#8#6'Height'#2#13
+#3'Top'#2#30#5'Width'#2','#7'Caption'#6#9'lblStatus'#5'Color'#7#6'clNone'#10
+'Font.Color'#7#7'clBlack'#11'Font.Height'#2#13#9'Font.Name'#6#15'adobe-helve'
+'tica'#10'Font.Pitch'#7#10'fpVariable'#10'Font.Style'#11#6'fsBold'#0#11'Pare'
+'ntColor'#8#0#0#6'TLabel'#10'lblCurrent'#4'Left'#2#8#6'Height'#2#13#3'Top'#2
+#12#5'Width'#2'1'#7'Caption'#6#10'lblCurrent'#5'Color'#7#6'clNone'#10'Font.C'
+'olor'#7#7'clBlack'#11'Font.Height'#2#13#9'Font.Name'#6#15'adobe-helvetica'
+#10'Font.Pitch'#7#10'fpVariable'#10'Font.Style'#11#6'fsBold'#0#11'ParentColo'
+'r'#8#0#0#0#8'TListBox'#14'lsFoundedFiles'#6'Height'#2'}'#3'Top'#2'6'#5'Widt'
+'h'#3#29#2#5'Align'#7#8'alClient'#11'MultiSelect'#9#10'OnDblClick'#7#22'lsFo'
+'undedFilesDblClick'#9'PopupMenu'#7#13'PopupMenuFind'#8'TabOrder'#2#1#0#0#0
,#10'TPopupMenu'#13'PopupMenuFind'#4'left'#3#152#0#3'top'#3#152#1#0#9'TMenuIt'
+'em'#14'miShowInViewer'#7'Caption'#6#14'Show In Viewer'#7'OnClick'#7#19'miSh'
+'owInViewerClick'#0#0#0#0
'TPF0'#241#11'TfrmFindDlg'#10'frmFindDlg'#4'Left'#3#229#0#6'Height'#3#220#1#3
+'Top'#2''''#5'Width'#3#29#2#18'HorzScrollBar.Page'#3#28#2#18'VertScrollBar.P'
+'age'#3#219#1#19'VertScrollBar.Range'#3'<'#1#13'ActiveControl'#7#16'edtFindP'
+'athStart'#7'Caption'#6#10'frmFindDlg'#10'KeyPreview'#9#7'OnClose'#7#15'frmF'
+'indDlgClose'#12'OnCloseQuery'#7#14'FormCloseQuery'#10'OnKeyPress'#7#12'Form'
+'KeyPress'#6'OnShow'#7#14'frmFindDlgShow'#8'Position'#7#14'poScreenCenter'#0
+#9'TSplitter'#9'Splitter1'#6'Cursor'#7#8'crVSplit'#6'Height'#2#1#3'Top'#3''''
+#1#5'Width'#3#29#2#5'Align'#7#5'alTop'#12'ResizeAnchor'#7#5'akTop'#0#0#6'TPa'
+'nel'#6'Panel2'#6'Height'#3''''#1#5'Width'#3#29#2#5'Align'#7#5'alTop'#10'Bev'
+'elOuter'#7#6'bvNone'#11'FullRepaint'#8#8'TabOrder'#2#0#0#12'TPageControl'#9
+'pgcSearch'#6'Height'#3'('#1#5'Width'#3#190#1#10'ActivePage'#7#10'tsStandard'
+#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabIndex'#2#0#8'TabOrder'#2
+#0#0#9'TTabSheet'#10'tsStandard'#7'Caption'#6#8'Standard'#0#6'TLabel'#16'lbl'
+'FindPathStart'#4'Left'#2#8#6'Height'#2#14#3'Top'#2'2'#5'Width'#2#30#7'Capti'
+'on'#6#7'FileDir'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#15'lb'
+'lFindFileMask'#4'Left'#2#8#6'Height'#2#14#3'Top'#2#4#5'Width'#2')'#7'Captio'
+'n'#6#8'FileMask'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#5'TEdit'#16'edt'
+'FindPathStart'#4'Left'#2#8#6'Height'#2#24#3'Top'#2'C'#5'Width'#3'j'#1#7'Anc'
+'hors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#0#0#0#7'TButton'#9'b'
+'tnSelDir'#4'Left'#3'z'#1#6'Height'#2#25#3'Top'#2'B'#5'Width'#2#25#7'Anchors'
+#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'.'
+'..'#7'OnClick'#7#14'btnSelDirClick'#8'TabOrder'#2#2#0#0#9'TComboBox'#15'cmb'
+'FindFileMask'#4'Left'#2#8#6'Height'#2#21#3'Top'#2#25#5'Width'#3'j'#1#7'Anch'
+'ors'#11#5'akTop'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11#22'cbactEnd'
+'OfLineComplete'#20'cbactSearchAscending'#0#10'ItemHeight'#2#18#9'MaxLength'
+#2#0#11'ParentCtl3D'#8#8'TabOrder'#2#1#4'Text'#6#1'*'#0#0#9'TGroupBox'#10'gb'
+'FindData'#4'Left'#2#8#6'Height'#3#145#0#3'Top'#2'w'#5'Width'#3#162#1#7'Anch'
+'ors'#11#5'akTop'#6'akLeft'#7'akRight'#0#7'Caption'#6#9'Find Data'#7'Enabled'
+#8#11'ParentCtl3D'#8#8'TabOrder'#2#3#0#9'TCheckBox'#10'cbCaseSens'#4'Left'#2
+#18#6'Height'#2#13#3'Top'#2'a'#5'Width'#2'X'#7'Caption'#6#14'Case sensitive'
+#8'TabOrder'#2#0#0#0#5'TEdit'#11'edtFindText'#4'Left'#2#16#6'Height'#2#24#3
+'Top'#2#9#5'Width'#3'R'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'Ta'
+'bOrder'#2#1#0#0#9'TCheckBox'#12'cbNoThisText'#4'Left'#3#154#0#6'Height'#2#13
+#3'Top'#2'a'#5'Width'#3#177#0#7'Caption'#6'"Find files NOT containing the te'
+'xt'#8'TabOrder'#2#2#0#0#9'TCheckBox'#13'cbReplaceText'#4'Left'#2#16#6'Heigh'
+'t'#2#13#3'Top'#2')'#5'Width'#2'P'#7'Caption'#6#12'Replace text'#8'OnChange'
+#7#19'cbReplaceTextChange'#8'TabOrder'#2#4#0#0#5'TEdit'#14'edtReplaceText'#4
+'Left'#2#16#6'Height'#2#23#3'Top'#2'A'#5'Width'#3'Z'#1#7'Enabled'#8#8'TabOrd'
+'er'#2#3#0#0#0#9'TCheckBox'#12'cbFindInFile'#4'Left'#2#12#6'Height'#2#13#3'T'
+'op'#2'b'#5'Width'#2'C'#7'Caption'#6#12'Find in file'#7'OnClick'#7#17'cbFind'
+'InFileClick'#8'TabOrder'#2#4#0#0#0#9'TTabSheet'#10'tsAdvanced'#7'Caption'#6
+#8'Advanced'#10'ImageIndex'#2#1#0#9'TDateEdit'#10'deDateFrom'#4'Left'#2#4#6
+'Height'#2#23#3'Top'#2')'#5'Width'#2'P'#5'Color'#7#9'clBtnFace'#7'Enabled'#8
+#8'ReadOnly'#8#8'TabOrder'#2#0#4'Text'#6#10'23.02.2007'#11'ButtonWidth'#2#23
+#10'Glyph.Data'#10'3'#2#0#0'/'#2#0#0'/* XPM */'#10'static char *calendar[] ='
+' {'#10'/* columns rows colors chars-per-pixel */'#10'"14 12 17 1",'#10'" c'
+' black",'#10'". c #800000",'#10'"X c #008000",'#10'"o c #808000",'#10'"O c '
+'navy",'#10'"+ c #800080",'#10'"@ c #008080",'#10'"# c #808080",'#10'"$ c #C'
+'0C0C0",'#10'"% c red",'#10'"& c green",'#10'"* c yellow",'#10'"= c blue",'
+#10'"- c magenta",'#10'"; c cyan",'#10'": c gray100",'#10'"> c None",'#10'/*'
+' pixels */'#10'">> >>",'#10'">>:$$$$$$$$:O#",'#10'">>::::::::::O#"'
+','#10'">>:: :: :O#",'#10'">>: :: ::::O#",'#10'">>:: :: $:O#",'#10'">>'
+':: ::::: :O#",'#10'">>:: ::$:$ :O#",'#10'">>: : $:O#",'#10'">>:::::::::'
+':O#",'#10'">> O OO O O#",'#10'">>>###########"'#10'};'#10#9'NumGlyphs'#2#1
+#11'ParentColor'#8#23'CalendarDisplaySettings'#11#14'dsShowHeadings'#14'dsSh'
+'owDayNames'#0#9'OKCaption'#6#2'OK'#13'CancelCaption'#6#6'Cancel'#4'Date'#5#0
+#0#0#0#0#0#224#152#14'@'#0#0#9'TDateEdit'#8'deDateTo'#4'Left'#3#164#0#6'Heig'
+'ht'#2#23#3'Top'#2')'#5'Width'#2'P'#5'Color'#7#9'clBtnFace'#7'Enabled'#8#8'R'
+'eadOnly'#8#8'TabOrder'#2#1#4'Text'#6#10'23.02.2007'#11'ButtonWidth'#2#23#10
+'Glyph.Data'#10'3'#2#0#0'/'#2#0#0'/* XPM */'#10'static char *calendar[] = {'
+#10'/* columns rows colors chars-per-pixel */'#10'"14 12 17 1",'#10'" c bla'
+'ck",'#10'". c #800000",'#10'"X c #008000",'#10'"o c #808000",'#10'"O c navy'
+'",'#10'"+ c #800080",'#10'"@ c #008080",'#10'"# c #808080",'#10'"$ c #C0C0C'
+'0",'#10'"% c red",'#10'"& c green",'#10'"* c yellow",'#10'"= c blue",'#10'"'
,'- c magenta",'#10'"; c cyan",'#10'": c gray100",'#10'"> c None",'#10'/* pix'
+'els */'#10'">> >>",'#10'">>:$$$$$$$$:O#",'#10'">>::::::::::O#",'#10
+'">>:: :: :O#",'#10'">>: :: ::::O#",'#10'">>:: :: $:O#",'#10'">>:: :::'
+':: :O#",'#10'">>:: ::$:$ :O#",'#10'">>: : $:O#",'#10'">>::::::::::O#",'
+#10'">> O OO O O#",'#10'">>>###########"'#10'};'#10#9'NumGlyphs'#2#1#11'Pa'
+'rentColor'#8#23'CalendarDisplaySettings'#11#14'dsShowHeadings'#14'dsShowDay'
+'Names'#0#9'OKCaption'#6#2'OK'#13'CancelCaption'#6#6'Cancel'#4'Date'#5#0#0#0
+#0#0#0#224#152#14'@'#0#0#9'TCheckBox'#10'cbDateFrom'#4'Left'#2#4#6'Height'#2
+#13#3'Top'#2#22#5'Width'#2'H'#7'Caption'#6#10'Date From:'#8'OnChange'#7#16'c'
+'bDateFromChange'#8'TabOrder'#2#2#0#0#9'TCheckBox'#14'cbNotOlderThan'#4'Left'
+#2#4#6'Height'#2#13#3'Top'#3#136#0#5'Width'#2'Z'#7'Caption'#6#15'Not older t'
+'han:'#8'OnChange'#7#20'cbNotOlderThanChange'#8'TabOrder'#2#3#0#0#9'TSpinEdi'
+'t'#14'seNotOlderThan'#4'Left'#2#4#6'Height'#2#20#3'Top'#3#161#0#5'Width'#2
+'j'#7'Enabled'#8#8'TabOrder'#2#4#0#0#9'TComboBox'#11'cbDelayUnit'#4'Left'#3
+#164#0#6'Height'#2#21#3'Top'#3#160#0#5'Width'#2'n'#16'AutoCompleteText'#11#22
+'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#7'Enabled'#8#9'ItemIndex'
+#2#2#13'Items.Strings'#1#6#9'Minute(s)'#6#7'Hour(s)'#6#6'Day(s)'#6#7'Week(s)'
+#6#8'Month(s)'#6#7'Year(s)'#0#9'MaxLength'#2#0#8'TabOrder'#2#5#4'Text'#6#6'D'
+'ay(s)'#0#0#9'TCheckBox'#14'cbFileSizeFrom'#4'Left'#2#4#6'Height'#2#13#3'Top'
+#3#193#0#5'Width'#2'X'#7'Caption'#6#15'File Size From:'#8'OnChange'#7#20'cbF'
+'ileSizeFromChange'#8'TabOrder'#2#6#0#0#9'TCheckBox'#8'cbDateTo'#4'Left'#3
+#164#0#6'Height'#2#13#3'Top'#2#22#5'Width'#2'>'#7'Caption'#6#8'Date To:'#8'O'
+'nChange'#7#14'cbDateToChange'#8'TabOrder'#2#7#0#0#9'TCheckBox'#12'cbFileSiz'
+'eTo'#4'Left'#3#164#0#6'Height'#2#13#3'Top'#3#193#0#5'Width'#2'N'#7'Caption'
+#6#13'File Size To:'#8'OnChange'#7#18'cbFileSizeToChange'#8'TabOrder'#2#8#0#0
+#9'TSpinEdit'#14'seFileSizeFrom'#4'Left'#2#4#6'Height'#2#20#3'Top'#3#217#0#5
+'Width'#2'j'#7'Enabled'#8#8'TabOrder'#2#9#0#0#9'TSpinEdit'#12'seFileSizeTo'#4
+'Left'#3#164#0#6'Height'#2#20#3'Top'#3#217#0#5'Width'#2'n'#7'Enabled'#8#8'Ta'
+'bOrder'#2#10#0#0#9'TComboBox'#15'cbUnitOfMeasure'#4'Left'#3#28#1#6'Height'#2
+#21#3'Top'#3#217#0#5'Width'#2'H'#16'AutoCompleteText'#11#22'cbactEndOfLineCo'
+'mplete'#20'cbactSearchAscending'#0#9'ItemIndex'#2#1#13'Items.Strings'#1#6#4
+'Byte'#6#5'Kbyte'#6#5'Mbyte'#6#5'Gbyte'#0#9'MaxLength'#2#0#5'Style'#7#14'csD'
+'ropDownList'#8'TabOrder'#2#11#4'Text'#6#5'Kbyte'#0#0#9'TCheckBox'#10'cbTime'
+'From'#4'Left'#2#4#6'Height'#2#13#3'Top'#2'I'#5'Width'#2'E'#7'Caption'#6#10
+'Time from:'#8'OnChange'#7#16'cbTimeFromChange'#8'TabOrder'#2#12#0#0#9'TChec'
+'kBox'#8'cbTimeTo'#4'Left'#3#164#0#6'Height'#2#13#3'Top'#2'I'#5'Width'#2':'#7
+'Caption'#6#8'Time to:'#8'OnChange'#7#14'cbTimeToChange'#8'TabOrder'#2#13#0#0
+#9'TMaskEdit'#10'meTimeFrom'#4'Left'#2#4#6'Height'#2#23#3'Top'#2'a'#5'Width'
+#2'P'#7'Enabled'#8#8'EditMask'#6#8'00:00:00'#9'MaxLength'#2#8#11'ParentColor'
+#8#8'TabOrder'#2#14#4'Text'#6#8'00:00:00'#8'OnChange'#7#12'meTimeChange'#0#0
+#9'TMaskEdit'#8'meTimeTo'#4'Left'#3#164#0#6'Height'#2#23#3'Top'#2'a'#5'Width'
+#2'P'#7'Enabled'#8#8'EditMask'#6#8'00:00:00'#9'MaxLength'#2#8#11'ParentColor'
+#8#8'TabOrder'#2#15#4'Text'#6#8'00:00:00'#8'OnChange'#7#12'meTimeChange'#0#0
+#0#0#7'TButton'#8'btnClose'#4'Left'#3#198#1#6'Height'#2#25#3'Top'#2'G'#5'Wid'
+'th'#2'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2
+#4#7'Caption'#6#6'&Close'#7'OnClick'#7#13'btnCloseClick'#8'TabOrder'#2#3#0#0
+#7'TButton'#7'btnStop'#4'Left'#3#198#1#6'Height'#2#25#3'Top'#2'g'#5'Width'#2
+'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#6
+'Cancel'#9#7'Caption'#6#6'Cancel'#7'Enabled'#8#7'OnClick'#7#12'btnStopClick'
+#8'TabOrder'#2#1#0#0#7'TButton'#8'btnStart'#4'Left'#3#198#1#6'Height'#2#25#3
+'Top'#2''''#5'Width'#2'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpaci'
+'ng.InnerBorder'#2#4#7'Caption'#6#6'&Start'#7'Default'#9#7'OnClick'#7#13'btn'
+'StartClick'#8'TabOrder'#2#2#0#0#0#6'TPanel'#6'Panel1'#6'Height'#3#180#0#3'T'
+'op'#3'('#1#5'Width'#3#29#2#5'Align'#7#8'alClient'#10'BevelOuter'#7#6'bvNone'
+#11'FullRepaint'#8#8'TabOrder'#2#1#0#6'TPanel'#6'Panel3'#6'Height'#2'6'#5'Wi'
+'dth'#3#29#2#5'Align'#7#5'alTop'#10'BevelInner'#7#8'bvRaised'#10'BevelOuter'
+#7#9'bvLowered'#11'FullRepaint'#8#8'TabOrder'#2#0#0#6'TLabel'#9'lblStatus'#4
+'Left'#2#8#6'Height'#2#13#3'Top'#2#30#5'Width'#2','#7'Caption'#6#9'lblStatus'
+#5'Color'#7#6'clNone'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#13#9'Fon'
+'t.Name'#6#15'adobe-helvetica'#10'Font.Pitch'#7#10'fpVariable'#10'Font.Style'
+#11#6'fsBold'#0#11'ParentColor'#8#0#0#6'TLabel'#10'lblCurrent'#4'Left'#2#8#6
+'Height'#2#13#3'Top'#2#12#5'Width'#2'1'#7'Caption'#6#10'lblCurrent'#5'Color'
+#7#6'clNone'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#13#9'Font.Name'#6
+#15'adobe-helvetica'#10'Font.Pitch'#7#10'fpVariable'#10'Font.Style'#11#6'fsB'
,'old'#0#11'ParentColor'#8#0#0#0#8'TListBox'#14'lsFoundedFiles'#6'Height'#2'L'
+#3'Top'#2'6'#5'Width'#3#29#2#5'Align'#7#8'alClient'#11'MultiSelect'#9#10'OnD'
+'blClick'#7#22'lsFoundedFilesDblClick'#9'PopupMenu'#7#13'PopupMenuFind'#8'Ta'
+'bOrder'#2#1#0#0#6'TPanel'#6'Panel4'#6'Height'#2'2'#3'Top'#3#130#0#5'Width'#3
+#29#2#5'Align'#7#8'alBottom'#8'TabOrder'#2#2#0#7'TButton'#7'btnView'#4'Left'
+#2#24#6'Height'#2#25#3'Top'#2#14#5'Width'#2'h'#25'BorderSpacing.InnerBorder'
+#2#4#7'Caption'#6#5'&View'#7'OnClick'#7#12'btnViewClick'#8'TabOrder'#2#0#0#0
+#7'TButton'#12'btnNewSearch'#4'Left'#3#152#0#6'Height'#2#25#3'Top'#2#14#5'Wi'
+'dth'#2'h'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#11'&New search'#7
+'OnClick'#7#17'btnNewSearchClick'#8'TabOrder'#2#1#0#0#7'TButton'#11'btnGoToP'
+'ath'#4'Left'#3#24#1#6'Height'#2#25#3'Top'#2#14#5'Width'#2'h'#25'BorderSpaci'
+'ng.InnerBorder'#2#4#7'Caption'#6#11'&Go to file'#7'OnClick'#7#16'btnGoToPat'
+'hClick'#8'TabOrder'#2#2#0#0#7'TButton'#16'btnWorkWithFound'#4'Left'#3#152#1
+#6'Height'#2#25#3'Top'#2#14#5'Width'#2'h'#25'BorderSpacing.InnerBorder'#2#4#7
+'Caption'#6#16'Feed to &listbox'#7'OnClick'#7#21'btnWorkWithFoundClick'#8'Ta'
+'bOrder'#2#3#0#0#0#0#10'TPopupMenu'#13'PopupMenuFind'#4'left'#3#152#0#3'top'
+#3#152#1#0#9'TMenuItem'#14'miShowInViewer'#7'Caption'#6#14'Show In Viewer'#7
+'OnClick'#7#19'miShowInViewerClick'#0#0#0#0
]);

View file

@ -30,6 +30,10 @@ type
btnClose: TButton;
btnStart: TButton;
btnStop: TButton;
btnView: TButton;
btnNewSearch: TButton;
btnGoToPath: TButton;
btnWorkWithFound: TButton;
cbFindInFile: TCheckBox;
cbNoThisText: TCheckBox;
cbDateFrom: TCheckBox;
@ -37,14 +41,17 @@ type
cbFileSizeFrom: TCheckBox;
cbDateTo: TCheckBox;
cbFileSizeTo: TCheckBox;
cbReplaceText: TCheckBox;
cbTimeFrom: TCheckBox;
cbTimeTo: TCheckBox;
cbDelayUnit: TComboBox;
cbUnitOfMeasure: TComboBox;
deDateFrom: TDateEdit;
deDateTo: TDateEdit;
edtReplaceText: TEdit;
meTimeFrom: TMaskEdit;
meTimeTo: TMaskEdit;
Panel4: TPanel;
seNotOlderThan: TSpinEdit;
seFileSizeFrom: TSpinEdit;
seFileSizeTo: TSpinEdit;
@ -68,13 +75,18 @@ type
lblCurrent: TLabel;
PopupMenuFind: TPopupMenu;
miShowInViewer: TMenuItem;
procedure btnGoToPathClick(Sender: TObject);
procedure btnNewSearchClick(Sender: TObject);
procedure btnSelDirClick(Sender: TObject);
procedure btnStartClick(Sender: TObject);
procedure btnViewClick(Sender: TObject);
procedure btnWorkWithFoundClick(Sender: TObject);
procedure cbDateFromChange(Sender: TObject);
procedure cbDateToChange(Sender: TObject);
procedure cbFileSizeFromChange(Sender: TObject);
procedure cbFileSizeToChange(Sender: TObject);
procedure cbNotOlderThanChange(Sender: TObject);
procedure cbReplaceTextChange(Sender: TObject);
procedure cbTimeFromChange(Sender: TObject);
procedure cbTimeToChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
@ -105,7 +117,7 @@ procedure ShowFindDlg(const sActPath:String);
implementation
uses
fViewer, uLng;
fViewer, uLng, uShowForm, fMain, uTypes, uFileOp;
procedure ShowFindDlg(const sActPath:String);
begin
@ -144,6 +156,20 @@ begin
edtFindPathStart.Text:=s;
end;
procedure TfrmFindDlg.btnNewSearchClick(Sender: TObject);
begin
Panel1.Visible := False;
Height := Panel2.Height;
end;
procedure TfrmFindDlg.btnGoToPathClick(Sender: TObject);
begin
frmMain.ActiveFrame.pnlFile.ActiveDir := ExtractFilePath(lsFoundedFiles.Items[lsFoundedFiles.ItemIndex]);
frmMain.ActiveFrame.pnlFile.LoadPanel;
frmMain.ActiveFrame.edtSearch.Text := ExtractFileName(lsFoundedFiles.Items[lsFoundedFiles.ItemIndex]);
Close;
end;
procedure TfrmFindDlg.btnStartClick(Sender: TObject);
var
dtTime : TDateTime;
@ -154,8 +180,8 @@ begin
Exit;
end;
//Panel1.Visible := True;
//Height := Panel2.Height + Panel1.Height;
Panel1.Visible := True;
Height := (Screen.Height * 4) div 5;
lsFoundedFiles.Items.Clear;
btnStop.Enabled:=True;
@ -171,6 +197,8 @@ begin
FindInFiles:=cbFindInFile.Checked;
FindData:=edtFindText.Text;
CaseSensitive:=cbCaseSens.Checked;
ReplaceInFiles := cbReplaceText.Checked;
ReplaceData := edtReplaceText.Text;
(* Date search *)
if cbDateFrom.Checked then
begin
@ -287,6 +315,40 @@ begin
end;
procedure TfrmFindDlg.btnViewClick(Sender: TObject);
begin
ShowViewerByGlob(lsFoundedFiles.Items[lsFoundedFiles.ItemIndex]);
end;
(* Not working full now *)
procedure TfrmFindDlg.btnWorkWithFoundClick(Sender: TObject);
var
I, Count : Integer;
fr:TFileRecItem;
sr : TSearchRec;
begin
Count := lsFoundedFiles.Items.Count - 1;
frmMain.ActiveFrame.pnlFile.FileList.Clear;
for I := 0 to Count do
begin
fr.sNameNoExt := lsFoundedFiles.Items[I];
fr.sName := fr.sNameNoExt;
FindFirst(fr.sNameNoExt, faAnyFile, sr);
fr.sExt := ExtractFileExt(fr.sNameNoExt);
fr.iSize := sr.Size;
fr.sTime := DateTimeToStr(Trunc(FileDateToDateTime(sr.Time)));
fr.iMode := sr.Attr;
fr.sModeStr := AttrToStr(sr.Attr);
fr.bLinkIsDir:=False;
fr.bSelected:=False;
frmMain.ActiveFrame.pnlFile.FileList.AddItem(@fr);
end;
frmMain.ActiveFrame.pnlFile.FileList.UpdateFileInformation;
frmMain.ActiveFrame.pnlFile.Sort;
Close;
end;
procedure TfrmFindDlg.cbDateFromChange(Sender: TObject);
begin
deDateFrom.Enabled := cbDateFrom.Checked;
@ -313,6 +375,13 @@ begin
cbDelayUnit.Enabled := cbNotOlderThan.Checked;
end;
procedure TfrmFindDlg.cbReplaceTextChange(Sender: TObject);
begin
edtReplaceText.Enabled := cbReplaceText.Checked;
cbNoThisText.Checked := False;
cbNoThisText.Enabled := not cbReplaceText.Checked;
end;
procedure TfrmFindDlg.cbTimeFromChange(Sender: TObject);
var
sTime : String;
@ -351,8 +420,8 @@ begin
edtFindPathStart.Text:=GetCurrentDir;
lblCurrent.Caption:='';
lblStatus.Caption:='';
//Panel1.Visible := False;
//Height := Panel2.Height + 4;
Panel1.Visible := False;
Height := Panel2.Height;
end;
procedure TfrmFindDlg.btnStopClick(Sender: TObject);
@ -383,6 +452,8 @@ procedure TfrmFindDlg.frmFindDlgClose(Sender: TObject;
var CloseAction: TCloseAction);
begin
// CloseAction:=caFree;
Panel1.Visible := False;
Height := Panel2.Height;
end;
procedure TfrmFindDlg.frmFindDlgShow(Sender: TObject);

View file

@ -481,7 +481,10 @@ begin
// show not-counted dir size and date
if ACol=2 then
begin
s:=cnvFormatFileSize(iSize);
if FPS_ISDIR(iMode) then
s:= '<DIR>'
else
s:=cnvFormatFileSize(iSize);
end
else
s:=sTime;

View file

@ -79,7 +79,7 @@ type
property SortDirection:Boolean read fSortDirect write fSortDirect; // maybe write method
property ActiveDir:String read GetActiveDir write SetActiveDir;
property LastActive:String read fLastActive write fLastActive;
property FileList: TFileList read fFileList;
property FileList: TFileList read fFileList write fFileList;
property SelectedCount:Integer read GetSelectedCount;
property FilesInDir:Integer read fFilesInDir;
property FilesSelected:Integer read fFilesSelected;

View file

@ -30,14 +30,11 @@ TFindThread = class(TThread)
{ Private declarations }
FPathStart:String;
FItems: TStrings;
FIsNoThisText,
FFindInFiles:Boolean;
FStatus: TLabel;
FCurrent: TLabel;
FCurrentFile:String;
FFilesScaned:Integer;
FFoundFile:String;
FFileMask : String;
FAttributes: Cardinal;
FCaseSens:Boolean;
@ -54,8 +51,14 @@ TFindThread = class(TThread)
FIsFileSizeTo : Boolean;
FFileSizeFrom,
FFileSizeTo : Int64;
(* Find text *)
FIsNoThisText,
FFindInFiles:Boolean;
FFindData:String;
(* Replace text *)
FReplaceInFiles : Boolean;
FReplaceData : String;
function CheckFileDate(DT : LongInt) : Boolean;
function CheckFileSize(FileSize : Int64) : Boolean;
@ -71,12 +74,16 @@ TFindThread = class(TThread)
property FilterMask:String read FFileMask write FFileMask;
property PathStart:String read FPathStart write FPathStart;
property Items:TStrings write FItems;
(* Find text *)
property FindInFiles:Boolean write FFindInFiles;
property IsNoThisText:Boolean write FIsNoThisText default False;
property Status:TLabel read FStatus write FStatus;
property Current:TLabel read FCurrent write FCurrent; // label current file
property CaseSensitive:boolean read FCaseSens write FCaseSens;
property FindData:String read FFindData write FFindData;
(* Replace text *)
property ReplaceInFiles:Boolean write FReplaceInFiles;
property ReplaceData:String read FReplaceData write FReplaceData;
(* Date search *)
property IsDateFrom:Boolean read FIsDateFrom write FIsDateFrom;
property IsDateTo:Boolean read FIsDateTo write FIsDateTo;
@ -217,6 +224,33 @@ Result := FindMmap(sFileName, sData, bCase);
end;
{$ENDIF}
procedure FileReplaceString(const FileName, SearchString, ReplaceString: string; bCase:Boolean);
var
fs: TFileStream;
S: string;
Flags : TReplaceFlags;
begin
Include(Flags, rfReplaceAll);
if not bCase then
Include(Flags, rfIgnoreCase);
fs := TFileStream.Create(FileName, fmOpenread or fmShareDenyNone);
try
SetLength(S, fs.Size);
fs.ReadBuffer(S[1], fs.Size);
finally
fs.Free;
end;
S := StringReplace(S, SearchString, replaceString, Flags);
fs := TFileStream.Create(FileName, fmCreate);
try
fs.WriteBuffer(S[1], Length(S));
finally
fs.Free;
end;
end;
function TFindThread.CheckFileDate(DT : LongInt) : Boolean;
var
DateTime: TDateTime;
@ -281,6 +315,10 @@ if not G_ValidateWildText(sr.Name, FFileMask) then
if (FFindInFiles and Result) then
begin
Result := FindInFile(Folder + PathDelim + sr.Name, FFindData, FCaseSens);
if (FReplaceInFiles and Result) then
FileReplaceString(Folder + PathDelim + sr.Name, FFindData, FReplaceData, FCaseSens);
if FIsNoThisText then
Result := not Result;
end;