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

Вниз

Диалог выбора папки через TTreeView и сетевое окружение с шарами   Найти похожие ветки 

 
Natashka90   (2012-12-07 12:37) [0]

Здравствуйте мастера!
Решила попробовать этот компонент для создания собственного диалога выбора папки, т.к. с SelectDirectory не подходит.
Нашла много примеров в интернете как выводить список папок и дисков локального ПК в дерево, но мне нужно выводить еще и сетевое окружение (шары, ПК и т.д.) в это же дерево.
Погуглив интернет ничего не нашла об этом совсем: ни примеров, ни даже вопросов об этом.
Реализуемо это вообще?
Спасибо за ответы!


 
Игорь Шевченко ©   (2012-12-07 12:43) [1]


> Реализуемо это вообще?


Реализуемо


 
Natashka90   (2012-12-07 12:55) [2]

Спасибо. Уже хоть что-то, хотя и не много :)
А можете ткнуть в пример или же указать в сторону чего смотреть/копать? Ну действительно ничего нет по этой теме нигде, по крайней мере я не нашла.


 
Игорь Шевченко ©   (2012-12-07 13:08) [3]

В сторону WNetEnum...-функций


 
Natashka90   (2012-12-07 13:33) [4]

Я так поняла, что речь о WNetEnumResource. Буду искать информацию по применению. Спасибо.


 
O'ShinW ©   (2012-12-07 14:42) [5]

у Rouse было что-то
гугл в руки по drkb


 
Rouse_ ©   (2012-12-07 15:30) [6]


> Natashka90  

Я же тебе уже говорил, используй TShellTreeView, он тебе покажет все что нужно, включая доступные шары...

Находится этот контрол в модуле ShellCtrls (поставляемого либо в виде исходного кода, либо в виде DCU).

Вот пример кода:

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   Shell: TShellTreeView;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Shell := TShellTreeView.Create(Self);
 Shell.Parent := Self;
 Shell.Align := alClient;
 Shell.ObjectTypes := [otFolders{, otNonFolders, otHidden}];
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 Shell.Free;
end;

end.


А вот картинка, что получается:

http://rouse.drkb.ru/tmp/111.png


 
Natashka90   (2012-12-07 15:34) [7]


> используй TShellTreeView,

Спасибо, Александр! Я не нашла этого компонента на вкладке компонентов Delphi2009. Теперь понятно, что он в подключаемом модуле и не VCL.

> Вот пример кода:
Огромное спасибо! Буду пробовать!


 
Natashka90   (2012-12-07 20:38) [8]

Попробовала ShellTreeVeiw, всё устраивает в принципе, если кто-нибудь еще подскажет, как у этого компонента обрабатывать события (onClick и пр.), то буду благодарна.


 
Natashka90   (2012-12-11 19:52) [9]

Неужели не обработать никак события? Сама ковырялась в коде модуля, там есть декларации событий onClick к примеру, но в implimitation ничего нет. Получается этот компонент в 2009 дельфи является рудиментом от предыдущих версий дельфи. В интернете встречается упоминание об отдельном компоненте в Samples в дельфи 6. А здесь такого нет :(


 
Rouse_ ©   (2012-12-11 19:54) [10]

А просто назначить OnClick не пробовала? Вообще-то это дерево, стало быть все события базового TTreeView в нем есть.


 
Natashka90   (2012-12-11 20:16) [11]

Дело в том, что честно не понимаю как назначить событие onClick, onChange, onKeyDown и т.п. компоненту, который отсутствует в палитре компонентов.
Пробовала так и безуспешно, но я и так понимаю, что это не верно, но всё же:
private
   { Private declarations }
        MyShellTree:TShellTreeView;
       procedure MyShellTreeClick(Sender: TObject);

implementation

procedure TForm2.MyShellTreeClick(Sender: TObject);
begin
showmessage("onClick");
end;


 
KilkennyCat ©   (2012-12-11 20:25) [12]

ну, все правильно.

теперь в событии создании формы (onCreate) :

MyShellTree.onClick :=  MyShellTreeClick(Sender: TObject);


 
KilkennyCat ©   (2012-12-11 20:29) [13]

хотя, лучше там, где создается дерево :)


 
Natashka90   (2012-12-11 20:42) [14]

ООО! Большое спасибочки, KilkennyCat  и Rouse_ ! Я вот до этого точно не додумалась бы без вашей помощи, опыта работы с компонентами не из палитры компонентов отсутствует попросту.  
Всё получилось:
private
  { Private declarations }
       MyShellTree:TShellTreeView;
      procedure MyShellTreeClick(Sender: TObject);

implementation

procedure TForm2.MyShellTreeClick(Sender: TObject);
begin
showmessage("onClick");
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
MyShellTree := TShellTreeView.Create(Self);
MyShellTree.onClick :=  MyShellTreeClick;
end;

Буду дальше изучать все события TreeView и создавать их в своей программе по такому методу.
Еще раз большое спасибо!


 
Natashka90   (2012-12-11 21:05) [15]

Еще небольшой вопросик остался:
Как лучше, правильнее, эстетичнее с точки зрения программирования создавать и уничтожать объект MyShellTree, если он не в основной форме будет, а во второй модальной:
1. при onCreate и onDestroy формы
или
2. при onShow и onClose формы соответственно?


 
KilkennyCat ©   (2012-12-11 21:30) [16]

1.
ибо 2. не дает никакого преимущества. возможно, некоторая эконмия ресурсов, но в этом случае надо подходить глобально и создавать модальную форму только при необходимости ее вызова, уничтожая по закрытию.


 
знайка   (2012-12-11 21:58) [17]

Форма сама разрушит.



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

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

Наверх




Память: 0.51 MB
Время: 0.005 c
3-1292399636
tadalex
2010-12-15 10:53
2013.08.18
Латвийская кодировка


2-1355252635
Pcrepair
2012-12-11 23:03
2013.08.18
Загрузка страниц в Потоке с idHTTP


3-1292346820
megavoid
2010-12-14 20:13
2013.08.18
[D2010] Магия мыши в TSQLQuery + DateTimePicker


6-1268845954
Vigi
2010-03-17 20:12
2013.08.18
Как правильно реализовать ?


2-1355233256
Дима
2012-12-11 17:40
2013.08.18
"Неопознанная ошибка" при загрузке проекта