![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Диалог выбора папки через TTreeView и сетевое окружение с шарами
Natashka90 © (2012-12-07 12:37:00)Здравствуйте мастера!
Решила попробовать этот компонент для создания собственного диалога выбора папки, т.к. с SelectDirectory не подходит.
Нашла много примеров в интернете как выводить список папок и дисков локального ПК в дерево, но мне нужно выводить еще и сетевое окружение (шары, ПК и т.д.) в это же дерево.
Погуглив интернет ничего не нашла об этом совсем: ни примеров, ни даже вопросов об этом.
Реализуемо это вообще?
Спасибо за ответы!
знайка (2012-12-11 21:58:00) [1]Форма сама разрушит.
KilkennyCat (2012-12-11 21:30:00) [2]1.
ибо 2. не дает никакого преимущества. возможно, некоторая эконмия ресурсов, но в этом случае надо подходить глобально и создавать модальную форму только при необходимости ее вызова, уничтожая по закрытию.
Natashka90 (2012-12-11 21:05:00) [3]Еще небольшой вопросик остался:
Как лучше, правильнее, эстетичнее с точки зрения программирования создавать и уничтожать объект MyShellTree, если он не в основной форме будет, а во второй модальной:
1. при onCreate и onDestroy формы
или
2. при onShow и onClose формы соответственно?
Natashka90 (2012-12-11 20:42:00) [4]ООО! Большое спасибочки, 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 и создавать их в своей программе по такому методу.
Еще раз большое спасибо!
KilkennyCat (2012-12-11 20:29:00) [5]хотя, лучше там, где создается дерево :)
KilkennyCat (2012-12-11 20:25:00) [6]ну, все правильно.
теперь в событии создании формы (onCreate) :
MyShellTree.onClick := MyShellTreeClick(Sender: TObject);
Natashka90 (2012-12-11 20:16:00) [7]Дело в том, что честно не понимаю как назначить событие onClick, onChange, onKeyDown и т.п. компоненту, который отсутствует в палитре компонентов.
Пробовала так и безуспешно, но я и так понимаю, что это не верно, но всё же:
private
{ Private declarations }
MyShellTree:TShellTreeView;
procedure MyShellTreeClick(Sender: TObject);
implementation
procedure TForm2.MyShellTreeClick(Sender: TObject);
begin
showmessage('onClick');
end;
Rouse_ (2012-12-11 19:54:00) [8]А просто назначить OnClick не пробовала? Вообще-то это дерево, стало быть все события базового TTreeView в нем есть.
Natashka90 (2012-12-11 19:52:00) [9]Неужели не обработать никак события? Сама ковырялась в коде модуля, там есть декларации событий onClick к примеру, но в implimitation ничего нет. Получается этот компонент в 2009 дельфи является рудиментом от предыдущих версий дельфи. В интернете встречается упоминание об отдельном компоненте в Samples в дельфи 6. А здесь такого нет :(
Natashka90 (2012-12-07 20:38:00) [10]Попробовала ShellTreeVeiw, всё устраивает в принципе, если кто-нибудь еще подскажет, как у этого компонента обрабатывать события (onClick и пр.), то буду благодарна.
Natashka90 (2012-12-07 15:34:00) [11]
> используй TShellTreeView,
Спасибо, Александр! Я не нашла этого компонента на вкладке компонентов Delphi2009. Теперь понятно, что он в подключаемом модуле и не VCL.
> Вот пример кода:
Огромное спасибо! Буду пробовать!
Rouse_ (2012-12-07 15:30:00) [12]
> 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
O'ShinW (2012-12-07 14:42:00) [13]у Rouse было что-то
гугл в руки по drkb
Natashka90 (2012-12-07 13:33:00) [14]Я так поняла, что речь о WNetEnumResource. Буду искать информацию по применению. Спасибо.
Игорь Шевченко (2012-12-07 13:08:00) [15]В сторону WNetEnum...-функций
Natashka90 (2012-12-07 12:55:00) [16]Спасибо. Уже хоть что-то, хотя и не много :)
А можете ткнуть в пример или же указать в сторону чего смотреть/копать? Ну действительно ничего нет по этой теме нигде, по крайней мере я не нашла.
Игорь Шевченко (2012-12-07 12:43:00) [17]
> Реализуемо это вообще?
Реализуемо