Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
velikijmerlin
Junior Developer
42 / 42 / 7
Регистрация: 08.06.2009
Сообщений: 261
1

Выполнение действий при выборе ветви TreeView

12.02.2010, 21:34. Просмотров 1007. Ответов 9
Метки нет (Все метки)

Доброго времени суток!
есть вопрос по треевью, вроде бы прочитал статейку... вроде бы даже что то работает... но толи где то запутался с условиями\циклами, толи не доконца понял сам компонент...

в общем идея приведённого ниже кода в следующем...
как только пользователь выбирает ветвь, например, "музыка" то по компу происходит поиск всех муз. файлов... и в таком роде по всему дереву...
подскажите в чём ошибка...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.TreeView1Click(Sender: TObject);
var
  i:integer;
  name: TFileName;
begin
//if treeview1.Selected.Index <> 0 then begin
//for i:=0 to treeview1.Items.Count - 1 do begin
//while TreeView1.Selected.Index <> 0 do begin
  treeview1.Items[0].Selected:= true;
  music:= FindFirst('C:\Documents and Settings\user\My Documents\My Music\muza\*.mp3', faAnyFile, SR);
    while music = 0 do begin
      name:= SR.Name;
      music:= FindNext(SR);
    end;
  showmessage('find is compleated!');
  FindClose(SR);
 
end;
end;
закомментированное не особенно важно, просто что то работает а что я не могу понять..((
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2010, 21:34
Ответы с готовыми решениями:

Вывод .mht в WebBrowser при выборе узла-потомка в TreeView в Delphi
Этот вопрос много где мелькал, но у меня вот такой: при нажатии на узел-потомок не выводится...

При выборе под-узла TreeView, в Memo загружать определенный текстовый файл
Подскажите как организовать такую штук : при выборе под вузла в TreeView, в Memo чтоб загружало ...

Как сделать так,чтобы при выборе строки в TreeView загружался текст?
Где я ошибся собственно? Судя по всему это строка с TreeView1, так как я не знаю как правильно...

TreeView, добавление новой ветви в дерево
помогите мне пожалуйста не могу создать код програмы &quot;Для добавления новой ветви в дерево...

Выделение ветви TreeView без изменения иконки
Как в TreeView сделать так, чтобы при разорачивании ветви была одна иконка, а при сворачивании...

9
Motzart
105 / 104 / 9
Регистрация: 10.01.2010
Сообщений: 392
13.02.2010, 00:36 2
ну, как самое первое, а что такое music? нигде не декларировано.

Добавлено через 4 минуты
втрое:
Delphi
1
FindFirst
c вашими параметрами не будет
Цитата Сообщение от velikijmerlin Посмотреть сообщение
то по компу происходит поиск всех муз. файлов...
а будет искать только в папке, которую вы указали - бла-бла\muza.

Добавлено через 4 минуты
Delphi
1
sr: TSearchRec;
как бы тоже не помешает написать
0
velikijmerlin
Junior Developer
42 / 42 / 7
Регистрация: 08.06.2009
Сообщений: 261
14.02.2010, 12:44  [ТС] 3
не, ну это понятно что фаиндфёрст будет по папке смотреть, просто не так написал..)))
но всё же вот полный код программки, но я не знаю что выбрать чтобы программа работала правильно For, while или же if

Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls;
 
type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    procedure TreeView1Click(Sender: TObject);
  private
    { Private declarations }
  public
music: integer;
SR: TSearchRec; //поисковая переменная
search_result: string;
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.TreeView1Click(Sender: TObject);
var
  i:integer;
  name: TFileName;
begin
//if treeview1.Selected.Index <> 0 then begin
//for i:=0 to treeview1.Items.Count - 1 do begin
//while TreeView1.Selected.Index <> 0 do begin
  treeview1.Items[0].Selected:= true;
  music:= FindFirst('C:\Documents and Settings\user\My Documents\My Music\muza\*.mp3', faAnyFile, SR);
    while music = 0 do begin
      name:= SR.Name;
      music:= FindNext(SR);
    end;
  showmessage('find is compleated!');
  FindClose(SR);
 
end;
end;
 
end.
Добавлено через 23 часа 31 минуту
темка ещё актуальна....
неужели никто не подскажет?((
0
}{NiM
65 / 65 / 16
Регистрация: 25.11.2009
Сообщений: 283
14.02.2010, 22:32 4
Цитата Сообщение от velikijmerlin Посмотреть сообщение
treeview1.Items[0].Selected:= true;
зачем выбирать всегда 1-й элемент.
затем
Цитата Сообщение от velikijmerlin Посмотреть сообщение
name:= SR.Name;
а вывод name где?? в никуда? к тому же Вы получаете только последний файл, а не все.
0
14.02.2010, 22:32
velikijmerlin
Junior Developer
42 / 42 / 7
Регистрация: 08.06.2009
Сообщений: 261
16.02.2010, 23:29  [ТС] 5
}{NiM, а как тогда получить не последний, а все файлы?

Добавлено через 11 минут
извиняюсь, уже разобрался..)))

Добавлено через 4 минуты
вот хочу обратно повториться, и спросить, что в этом коде надо исправить чтобы он выводил не на вторую подветку записи а на первую подветку, м?

Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    Memo1: TMemo;
    procedure TreeView1Click(Sender: TObject);
  private
    { Private declarations }
  public
music: integer;
SR: TSearchRec; //ïîèñêîâГ*Гї ïåðåìåГ*Г*Г*Гї
search_result: string;
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.TreeView1Click(Sender: TObject);
var
  name: TFileName;
begin
if treeview1.Selected.Index <> 0 then begin
  treeview1.Items[0].SelectedIndex:= 0;
  music:= FindFirst('C:\Documents and Settings\user\My Documents\My Music\muza\*.mp3', faAnyFile, SR);
    while music = 0 do begin
      name:= SR.Name;
      music:= FindNext(SR);
memo1.Lines.Add(name);
    end;
  showmessage('find is compleated!');
  FindClose(SR);
end;
 
end;
 
end.
0
velikijmerlin
Junior Developer
42 / 42 / 7
Регистрация: 08.06.2009
Сообщений: 261
20.02.2010, 23:18  [ТС] 6
тогда если так, то поставлю вопрос по другому...

как можно узнать номер дочерней ветки?
у меня дерево состоит из одной родительской ветке в которой есть 5 дочерних веток, мне надо узнать номер каждой из дочерних веток...
0
Motzart
105 / 104 / 9
Регистрация: 10.01.2010
Сообщений: 392
20.02.2010, 23:24 7
ну почитайте уже хоть что-нибудь по treeView!!! да в любом мануале написано, как получить индекс!!!!
0
velikijmerlin
Junior Developer
42 / 42 / 7
Регистрация: 08.06.2009
Сообщений: 261
21.02.2010, 00:20  [ТС] 8
Motzart, либо я очень тупой и не могу понять как это сделать, либо что то не то читаю..((( не мог бы кинуть ссылку?
0
Motzart
21.02.2010, 01:01
  #9

Не по теме:

не вопрос, утром скину (просто бухаем сейчас :))

0
velikijmerlin
Junior Developer
42 / 42 / 7
Регистрация: 08.06.2009
Сообщений: 261
21.02.2010, 01:30  [ТС] 10
Motzart, ок)
0
21.02.2010, 01:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2010, 01:30

Выполнение действий с очередью
Заполнить очередь 9 случайными вещественными элементами из промежутка . Найти произведение целых...

Выполнение действий по расписанию, в определенное время
как сделать что бы прога отслеживала время и если наступило к примеру 21:00 выполнила какие-то...

Выполнение двух действий на одной кнопке
Можно ли сделать выполнение с начало одной команды, а потом второй на одной кнопке. Добавлено...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru