Форум: "Начинающим";
Текущий архив: 2013.08.18;
Скачать: [xml.tar.bz2];
ВнизДиалог выбора папки через 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.002 c