Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Диалог выбора папки через 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]


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


Реализуемо


Наверх

Титульная страница Поиск, карта сайта Написать письмо