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

Вниз

Помогите составить алгоритм!   Найти похожие ветки 

 
adminwik   (2010-08-04 09:43) [0]

Здравствуйте! Вопрос на счет компонента treeview!
Создал дерево каталогов с графическим изображением папок и файлов.
есть изображение двух видов папок(пустая(0), непустая(1)) в imageliste.

как составить алгоритм дерева каталогов, чтоб если папка была пустой: imageindex=7, а если непустая то imageindex=8.



unit Tf;

interface

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

type
 TForm1 = class(TForm)
   TreeView1: TTreeView;
   procedure TreeView1Expanding(Sender: TObject; Node: TTreeNode;
     var AllowExpansion: Boolean);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
{$R FileCtrl}

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.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
 var AllowExpansion: Boolean);
begin
TreeView1.Items.BeginUpdate;
Node.DeleteChildren;
NextLevel(Node);
TreeView1.Items.EndUpdate;
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;

end.


 
12 ©   (2010-08-04 09:47) [1]


> как составить алгоритм дерева каталогов, чтоб если папка
> была пустой: imageindex=7

if Node.HasChildren them node.ImageIndex:=7;



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

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

Наверх





Память: 0.45 MB
Время: 0.003 c
2-1280473558
я_только_учусь
2010-07-30 11:05
2010.10.24
как получить x?


15-1279398576
Юрий
2010-07-18 00:29
2010.10.24
С днем рождения ! 18 июля 2010 воскресенье


6-1227811974
stas
2008-11-27 21:52
2010.10.24
Проверить наличие коннекта к определенному IP


2-1280785783
Clam
2010-08-03 01:49
2010.10.24
Как узнать принадлежит ли точка треугольнику в пространстве?


2-1280385376
azamatufa
2010-07-29 10:36
2010.10.24
Прошу прощения, создать RUN-time Paradox7





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