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

Вниз

TShellTreeView   Найти похожие ветки 

 
Hro ©   (2002-08-30 23:44) [0]

Привет всем. Народ подскажите где взять help по TShellTreeView или как при инициализации установить нужный путь?

Заранее благодарю.


 
Ученик ©   (2002-08-31 00:23) [1]

ShellTreeView1.Path := Путь;
Исходники в Delphi6\Demos\ShellControls


 
Hro ©   (2002-08-31 09:14) [2]

> ShellTreeView1.Path := Путь; не сработал :(
Однако за путь к исходникам спасибо.


 
SuperOleg   (2002-08-31 14:25) [3]

не знаю чего там у тебя но я сделал так (внимательно просмотри это кусок из проги по этому сам знаешь но всё работоет)!!!

procedure TForm1.ShellListView1Click(Sender: TObject);
var s: string;
begin
with ShellListView1 do
if SelCount=1 then
with Folders[ItemIndex] do
begin
S:=PathName; //Полный путь к файлу
if S="" then //не все иконки соотв. файлам,напр. спсок
//групп в сетевом окружении
S:=DisplayName; //подпись к иконке
Memo1.Lines.LoadFromFile("Txt\"+s+".txt");
Image1.Picture.LoadFromFile("Picture\"+s+".bmp");
ExecuteDefault;
Label1.Caption:=S;
WinExec(PChar(s),SW_SHOW);
end;
end;


 
Hro ©   (2002-08-31 21:01) [4]

>SuperOleg Мне необходимо не выбирать выбранный (тофталогия получилась :) ) в дереве файл, а наоборот! Есть некая глобальная переменная S : string со значением например S := "C:\programs\myprog" и есть форма с TShellTreeView, вот необходимо чтоб при открытии этой формы в ShellTreeView была выбрана именно папка myprog.


 
Hro ©   (2002-09-01 09:40) [5]

Ну. Ну чтож это такое. Неужели никто не делал настройку какого либо каталога из свойе программы!


 
Ученик ©   (2002-09-01 11:50) [6]

>Hro © (01.09.02 09:40)

procedure TForm1.FormCreate(Sender: TObject);
begin
ShellTreeView1.Path := "C:\";
end;

работает ?



 
Hro ©   (2002-09-02 12:49) [7]

> Ученик. К сожалению предложенный тобой вариант неработает :(
Может какие свойства TShellView не так выставленны?


 
Ученик ©   (2002-09-02 12:57) [8]

>Hro © (02.09.02 12:49)
А не пробовал пройти в отладчике, что именно не работает, в тестовом примере я просто поместил TShellTreeView на форму и добавил Ученик © (01.09.02 11:50)


 
Hro ©   (2002-09-03 09:31) [9]

> Ученик ©
Смотри что я выцепил при отладке. В методе SetPath перед вызовом
SetPathFromID стоит FUpdating := True, а в SetPathFromID с самого начала при условии FUpdating = True - выход. Может я чего недопонял, но стоило мне поставить FUpdating := False как все заработало! Ниже привожу кусок из файла ShellCtrls и жирным выделил ключевые моменты. Сравни пожалуйста со своим исходником.

procedure TCustomShellTreeView.SetPath(const Value: string);
var
P: PWideChar;
NewPIDL: PItemIDList;
Flags,
NumChars: LongWord;
begin
NumChars := Length(Value);
Flags := 0;
P := StringToOleStr(Value);
try
OLECheck(DesktopShellFolder.ParseDisplayName(
0,
nil,
P,
NumChars,
NewPIDL,
Flags)
);
FUpdating := True;
SetPathFromID(NewPIDL);

except on EOleSysError do
raise EInvalidPath.CreateFmt(SErrorSettingPath, [Value]);
end;
FUpdating := False;
end;

procedure TCustomShellTreeView.SetPathFromID(ID: PItemIDList);
var
I: Integer;
Pidls: TList;
Temp, Node: TTreeNode;
begin
if FUpdating or (csLoading in ComponentState)
or ((SelectedFolder <> nil) and SamePIDL(SelectedFolder.AbsoluteID, ID)) then Exit;

FUpdating := True;
Items.BeginUpdate;
try
Pidls := CreatePIDLList(ID);
try
Node := Items[0];
for I := 0 to Pidls.Count-1 do
begin
Temp := FolderExists(Pidls[I], Node);
if Temp <> nil then
begin
Node := Temp;
Node.Expand(False);
end;
end;
Node := FolderExists(ID, Node);
Selected := Node;
if Assigned(Node) then
begin
if Assigned(FListView) then
FListView.TreeUpdate(TShellFolder(Node.Data).AbsoluteID);
if Assigned(FComboBox) then
FComboBox.TreeUpdate(TShellFolder(Node.Data).AbsoluteID);
end;
finally
DestroyPIDLList(Pidls);
end;
finally
Items.EndUpdate;
FUpdating := False;
end;
end;


 
Ученик ©   (2002-09-03 09:40) [10]

В моем исходнике FUpdating := True; нет, и сейчас припоминаю, что когда-то его убирал, но очень давно, сорри.


 
Hro ©   (2002-09-03 23:30) [11]

> Ученик © Ok! Значит все нормально! Спасибо за помощь!



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
3-50619
Igoryan
2002-08-26 17:40
2002.09.16
Работа С ODBC


1-50773
Micah'GF
2002-08-31 22:39
2002.09.16
Как изменить размер формы?


14-50981
France
2002-08-22 14:50
2002.09.16
ShowMessage или MessageDlg без uses Dialog


6-50900
the fate
2002-07-11 08:19
2002.09.16
Как с помощью делфи прослушать сокет?


8-50875
Studentic
2002-05-11 14:28
2002.09.16
OpenGL