Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

файловая система и TREEVIEW   Найти похожие ветки 

 
main   (2004-11-23 11:54) [0]

Спасибо всем за помощь.
Вот что получилось
(*
ПРОГРАММА ПРЕДНАЗНАЧЕНА ДЛЯ ВЫВОДА РЕЗУЛЬТАТОВ ПОИСКА ФАЙЛОВ
В ВИДЕ ДЕРЕВА, А ТАКЖЕ ДЛЯ ВЫВОДА ПОЛНОГО ИМЕНИ ФАЙЛА(УЧИТЫВАЯ
КАТАЛОГИ)
*)

unit Uscandir;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, Buttons, ComCtrls;

type
 TForm1 = class(TForm)
   TreeView1: TTreeView;// ДЕРЕВО КАТАЛОГОВ И ФАЙЛОВ
   BitBtn1: TBitBtn;    //НАЖАТИЕ КНОПКИ ПРИВОДИТ К НАЧАЛУ ПОИСКА
   Label1: TLabel;      // ВЫВОДИМ ИМЯ НАЙДЕННОГО ФАЙЛА ВО ВРЕМЯ ПОИСКА
   Label2: TLabel;      //ВЫВОДИМ ПОЛНОЕ ИМЯ ФАЙЛА ПРИ ВЫДЕЛЕНИИ ЕГО В ДЕРЕВЕ
   procedure BitBtn1Click(Sender: TObject); //ИЩЕМ ФАЙЛЫ
   procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
   //ВЫВОДИМ ПОЛНОЕ ИМЯ ФАЙЛА
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}
(* ИЩЕМ ФАЙЛЫ С ЗАДАННЫМ РАСШИРЕНИЕМ В УКАЗАННОМ КАТАЛОГЕ*)
procedure TForm1.BitBtn1Click(Sender: TObject);
var
 CachedStrs: TStringList;
 Procedure AddItem(Lev: Integer; ParentNode: TTreeNode; S: String);
   Function FindNodeWithText(AParent: TTreeNode; Const S: String): TTreeNode;
   Var
     K : Integer;
     fStr : String;
     tmpNode: TTreeNode;
   Begin
   Result := Nil;
   fStr := S + IntToStr(Integer(AParent));
   K := CachedStrs.IndexOf(fStr);
   If K > -1 Then
     Result := Pointer(CachedStrs.Objects[K])
   Else
     Begin
     If AParent <> Nil Then
     tmpNode := AParent.getFirstChild
     else
     tmpNode := TreeView1.Items.GetFirstNode;
     While tmpNode <> Nil Do
       Begin
       If tmpNode.Text = S Then
         Begin
         Result := tmpNode;
         CachedStrs.AddObject(fStr, Pointer(tmpNode));
         break;
         End;
       tmpNode := tmpNode.getNextSibling;
       End;
      End
    End;

 Var
   prefix: String;
   ID : Integer;
   aNode : TTreeNode;
 Begin
 If S = "" Then Exit;
 ID := Pos("\", S);
 prefix := "";
 If ID > 0 Then
 prefix := Copy(S, 1, ID - 1)
 Else
   Begin
   prefix := S;
   S := "";
   End;
 aNode := FindNodeWithText(ParentNode, prefix);
 If aNode = Nil Then
   Begin
   aNode := TreeView1.Items.AddChild(ParentNode, prefix);
   label1.Caption:="Найден файл "+anode.Text;
   repaint;
   End;
 AddItem(Lev + 1, aNode, Copy(S, ID + 1, Length(S)));
 End;

procedure ScanDir(StartDir: string;
                 Mask:     string;
                 treeview1:ttreeview);
var
 SearchRec : TSearchRec;
begin
if Mask = "" then Mask := "*.*";
if StartDir[Length(StartDir)] <> "\"
then  StartDir := StartDir + "\";
if FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
 begin
   repeat
   application.ProcessMessages;
   if (SearchRec.Attr and faDirectory) <> faDirectory then
   Additem(0,nil,startdir+searchrec.name);
   until FindNext(SearchRec) <> 0;
   FindClose(SearchRec);
  end;

if FindFirst(StartDir+"*.*", fadirectory, SearchRec) = 0 then
 begin
   repeat
   application.ProcessMessages;
     if (SearchRec.Name <> "..") and (SearchRec.Name <> ".")
     then
       begin
       ScanDir(StartDir + SearchRec.Name + "\",Mask,treeview1);
       end;
   until FindNext(SearchRec) <> 0;
   FindClose(SearchRec);
  end;

end;

(*ОСНОВНАЯ ПРОЦЕДУРА*)
begin
CachedStrs := TStringList.Create;
CachedStrs.Duplicates := dupIgnore;
CachedStrs.Sorted := True;
 Try
 TreeView1.Items.BeginUpdate;
 TreeView1.SortType := stNone;
 scandir("d:\novikova","*.txt",treeview1);
 finally
 TreeView1.Items.EndUpdate;
 CachedStrs.Free;
end;

end;

// ВЫВОДИМ ИМЯ ФАЙЛА С УЧЕТОМ КАТАЛОГА
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
 st:string;
 lev,i:integer;
begin
st:=node.Text;
label2.Caption:=st;
repaint;
lev:=node.Level;
if lev<>0 then
 for i:=1 to lev do
 begin
 st:=node.Parent.Text+"\"+st;
 label2.Caption:=st;
 node:=node.Parent;
 end;

end;

end.
Вопрос
Нужно сделать из этого компоненту. Помогите, кто может...


 
Ozone ©   (2004-11-23 12:43) [1]

Тебе сюда - http://www.delphimaster.ru/cgi-bin/forum.pl?n=12


 
main   (2004-11-23 12:58) [2]

Спасибо...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.04 c
14-1100502344
AlexG
2004-11-15 10:05
2004.12.05
У кого есть набор статистических функций?


14-1100589983
ИМХО
2004-11-16 10:26
2004.12.05
1986 год: честно ли Динамо Киев стало чемпионом СССР?


1-1101048113
Dyusha
2004-11-21 17:41
2004.12.05
Текст в Memo


1-1101149739
LinaIns
2004-11-22 21:55
2004.12.05
Клик правой кнопко мыши сделать левым


4-1098203270
Grundic
2004-10-19 20:27
2004.12.05
!ПОЛНЫЙ! путь к .EXE через PID или его HANDLE - как?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский