Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.01;
Скачать: CL | DM;

Вниз

treeview   Найти похожие ветки 

 
Катерина   (2005-12-12 21:28) [0]

Помогите пожалуйста доработать процедуру! надо все файлы *.RTF поместить в дерево. с обычными файлами все работает осталось сделать так, чтобы отображались только *.RTF. Буду очень благодарна!

procedure NextLevel(ParentNode: TTreeNode);

 function DirectoryName(name: string): boolean;
 begin
   result := (name > ".") and (name > "..");
 end;

var
 sr, srChild: TSearchRec;
 node: TTreeNode;
 path: string;
begin
 node := ParentNode;
 path := "";
 repeat
   path := node.Text + "\" + path;
   node := node.Parent;
 until
   node = nil;
 if FindFirst(path + "*.*", faDirectory, sr) = 0 then
 begin
   repeat
     if (sr.Attr and faDirectory > 0) and DirectoryName(sr.name) then
     begin
       node := Form1.TreeView1.Items.AddChild(ParentNode, sr.name);
     node.ImageIndex := 0;
       node.SelectedIndex := 1;
       node.HasChildren := false;
       if FindFirst(path + sr.name + "\*.*", faDirectory, srChild) = 0 then
       begin
         repeat
           if (srChild.Attr and faDirectory > 0) and DirectoryName(srChild.name) then
             node.HasChildren := true;
         until
           (FindNext(srChild) > 0) or node.HasChildren;
       end;
       FindClose(srChild);
     end;
   until
     FindNext(sr) > 0;
 end
 else
 ParentNode.HasChildren := false;
 FindClose(sr);
end;

procedure TForm1.FormCreate(Sender: TObject);
const
 IconNames: array [0..6] of string = ("CLOSEDFOLDER", "OPENFOLDER",
 "FLOPPY", "HARD", "NETWORK", "CDROM", "RAM");
var
 c: char;
 s: string;
 node: TTreeNode;
 DriveType: integer;
 bm, mask: TBitmap;
 i: integer;
begin
 TreeView1.Items.BeginUpdate;
 TreeView1.Images := TImageList.CreateSize(16, 16);
 bm := TBitmap.Create;
 mask := TBitmap.Create;
 for i := low(IconNames) to high(IconNames) do
 begin
   bm.Handle := LoadBitmap(HInstance, PChar(IconNames[i]));
   bm.Width := 16;
   bm.Height := 16;
   mask.Assign(bm);
   mask.Mask(clBlue);
   TreeView1.Images.Add(bm, mask);
 end;
 for c := "A" to "Z" do
 begin
   s := c + ":";
   DriveType := GetDriveType(PChar(s));
   if DriveType = 1 then
     continue;
   node := Form1.TreeView1.Items.AddChild(nil, s);
   case DriveType of
     DRIVE_REMOVABLE: node.ImageIndex := 2;
     DRIVE_FIXED: node.ImageIndex := 3;
     DRIVE_REMOTE: node.ImageIndex := 4;
     DRIVE_CDROM: node.ImageIndex := 5;
     else
       node.ImageIndex := 6;
   end;
   node.SelectedIndex := node.ImageIndex;
   node.HasChildren := true;
 end;
 TreeView1.Items.EndUpdate;
end;

procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
 var AllowExpansion: Boolean);
begin
TreeView1.Items.BeginUpdate;
node.DeleteChildren;
NextLevel(node);
TreeView1.Items.EndUpdate;

end;


 
alex-drob ©   (2005-12-12 22:28) [1]

if FindFirst(path + "*.rtf", faDirectory, sr) = 0 then


 
Alexander Panov ©   (2005-12-13 00:08) [2]

Для проверки можно также использовать функцию MatchesMask.

Что делает вот эта функция? -

function DirectoryName(name: string): boolean;
begin
  result := (name > ".") and (name > "..");
end;



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

Текущий архив: 2006.01.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.051 c
14-1133975547
Витёк
2005-12-07 20:12
2006.01.01
Операция XOR


2-1134689494
Змей
2005-12-16 02:31
2006.01.01
не активная кнопка "Свернуть"


5-1119899149
Radgar
2005-06-27 23:05
2006.01.01
Массив в компоненте


1-1133506111
Михаил_
2005-12-02 09:48
2006.01.01
Создание окон с отдельными кнопками на панели задач


14-1133884256
oleggar
2005-12-06 18:50
2006.01.01
добавить поле