Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1363336410
@!!ex
2013-03-15 12:33
2013.08.18
Ищу программиста, для разовой работы


15-1363171562
Jeer
2013-03-13 14:46
2013.08.18
Почти парад планет в эти дни -


15-1363532441
mikola35
2013-03-17 19:00
2013.08.18
модифицированное контексное меню


2-1355323960
Иван
2012-12-12 18:52
2013.08.18
Stringgrid запись без пустых строк


15-1360614602
Юрий
2013-02-12 00:30
2013.08.18
С днем рождения ! 12 февраля 2013 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский