1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122:
| unit FFThread;
interface
uses Classes, SysUtils, ComCtrls;
type pNodeInfo = ^tNodeInfo; tNodeInfo = RECORD Path: boolean; Name: string; END;
type FindFileThread = class(TThread) private PROCEDURE SetzeAnode; Procedure SetzeAnodeTMP; protected procedure Execute; override; end;
VAR SearchRec: tSearchRec; NodeTmp: tTreeNode; Info: pNodeInfo; i: integer; MaskeOK : Boolean; s : string;
implementation uses Unit1, jobs1;
procedure setAnode(const i:integer;const aN:tTreeNode); begin aN.ImageIndex := i; aN.SelectedIndex := i; aN.StateIndex := i; end;
procedure FindFileThread.SetzeAnode; begin aNode := aTree.Items.AddChildObject(aNode, SearchRec.Name, Info); setAnode(5, aNode); end; procedure FindFileThread.SetzeAnodeTMP; begin NodeTMp := aTree.Items.AddChildObject(aNode, SearchRec.Name, Info); setAnode(9, nodeTMP); if POS('DOC', s) > 0 then setAnode(6, nodeTMP); if POS('FIX', s) > 0 then setAnode(7, nodeTMP); if POS('XLS', s) > 0 then setAnode(16, nodeTMP); if POS('CSV', s) > 0 then setAnode(3, nodeTMP); if POS('VER', s) > 0 then setAnode(13, nodeTMP); if POS('GEO', s) > 0 then setAnode(1, nodeTMP); if POS('HT', s) > 0 then setAnode(10, nodeTMP); if POS('TXT', s) > 0 then setAnode(8, nodeTMP); if POS('PDF', s) > 0 then setAnode(11, nodeTMP); if POS('JPG', s) > 0 then setAnode(12, nodeTMP); if POS('BMP', s) > 0 then setAnode(2, nodeTMP); if POS('GIF', s) > 0 then setAnode(12, nodeTMP); if POS('MPG', s) > 0 then setAnode(15, nodeTMP); if POS('AVI', s) > 0 then setAnode(15, nodeTMP); if POS('TIF', s) > 0 then setAnode(12, nodeTMP); if POS('ZIP', s) > 0 then setAnode(0, nodeTMP); if POS('RTF', s) > 0 then setAnode(15, nodeTMP); end;
procedure FindFileThread.Execute; BEGIN aTree.Items.BeginUpdate; IF aPath[Length(aPath)] <> '\' THEN aPath := aPath + '\'; IF FindFirst(aPath + '*.*', faDirectory, SearchRec) = 0 THEN BEGIN REPEAT IF (SearchRec.Attr AND faDirectory = faDirectory) AND (SearchRec.Name[1] <> '.') AND (SearchRec.Name <> '_Privat') AND (SearchRec.Name <> '_Temp') AND (SearchRec.Name <> '_Help') AND (SearchRec.Name <> '_Config') THEN BEGIN IF (SearchRec.Attr AND faDirectory > 0) THEN BEGIN New(Info); Info^.Path := true; Info^.Name := aPath + SearchRec.Name; Synchronize(SetzeAnode); END; NodeTmp := aNode.Parent; aPath := aPath + SearchRec.Name; Execute; aNode := NodeTmp; END ELSE Begin for i:=1 to AnzStr(' ',Maske) do if POS( strx(' ',Maske,i), uppercase(ExtractFileExt(SearchRec.Name))) > 0 then begin MaskeOK:=True; break; end else MaskeOK:=False; if FileIsInDelList(SearchRec.Name)then MaskeOK:=False; IF aWithFiles AND (SearchRec.Name <> '.') AND (SearchRec.Name <> '..') AND ( (MaskeOK=True) or (Maske='') ) THEN BEGIN New(Info); Info^.Path := false; Info^.Name := aPath + SearchRec.Name; s := uppercase(ExtractFileExt(SearchRec.Name)); Synchronize(SetzeAnodeTMP); END; end; UNTIL FindNext(SearchRec) <> 0; FindClose(SearchRec); END; aTree.Items.EndUpdate; END;
end. |