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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.013 c
2-1134727704
Goast
2005-12-16 13:08
2006.01.01
Проблема с CoolTrayIcon


1-1133546462
Gear
2005-12-02 21:01
2006.01.01
как сделать перенос по словам в элементе ListBox?


4-1130512622
Arazel
2005-10-28 19:17
2006.01.01
Почему вторая форма не получает сообщение?


11-1113677326
thaddy
2005-04-16 22:48
2006.01.01
D2005


14-1133520452
oleggar
2005-12-02 13:47
2006.01.01
dbf viewer





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский