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

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

Shell Controls [D7]


fog ©   (2007-12-09 16:25:00) 

Есть связка TShellComboBox + TShellListView. При изменении Path
ShellComboBox1.Path := 'E:\';
ShellListView1.Update;
ShellListView не обновляется. Обновляется ТОЛЬКО при ручном выборе.

Пробовал вместо ShellListView1.Update:
ShellComboBox1.Parent.Perform(WM_COMMAND, CBN_SELENDOK, 0);
с тем же результатом.

Где ошибка (в Perform) и как ShellListView обновить программно?


fog   (2007-12-09 23:35:00) [1]


> Johnmen ©   (09.12.07 20:46) [6]
> Сделай так
> 1.
> type
>  TMyShellComboBox = class(TShellComboBox);
> 2.
> ShellComboBox1.Path := 'E:\';
> TMyShellComboBox(ShellComboBox1).Select;


спасибо, сработало.


Johnmen   (2007-12-09 20:46:00) [2]

Сделай так
1.
type
 TMyShellComboBox = class(TShellComboBox);

2.
ShellComboBox1.Path := 'E:\';
TMyShellComboBox(TShellComboBox1).Select;


fog   (2007-12-09 19:05:00) [3]


> Johnmen ©   (09.12.07 18:33) [4]
>
> Сейчас попробовал. Работает.


Формально - да. Получается ShellComboBox1.Root = 'E:\'.

> если потребуется перейти на другой диск через ShellComboBox,
>  то придется заново восстаналивать ShellComboBox1.Root :
> = rfMyComputer.

backspace'ом в ShellListView можно вернутся до уровня rfDesktop, при этом в ShellComboBox'е как было 'E:\' так оно и остается. Не годится.


Johnmen   (2007-12-09 18:33:00) [4]


> fog   (09.12.07 18:31) [3]

Сейчас попробовал. Работает.


fog   (2007-12-09 18:31:00) [5]


> Johnmen ©   (09.12.07 17:16) [1]
> ShellListView1.Root := ShellComboBox1.Path;


Идея хорошая, но не работает. Если изначально ShellComboBox1.Root = rfMyComputer, то изменение ShellListView1.Root повлечет за собой изменение ShellComboBox1.Root; в итоге - если потребуется перейти на другой диск через ShellComboBox, то придется заново восстаналивать ShellComboBox1.Root := rfMyComputer.


{RASkov}   (2007-12-09 17:25:00) [6]

> [0] fog   (09.12.07 16:25)
> ShellComboBox1.Path := 'E:\';

Или попробуй так:
ShellComboBox1. Root:='E:\';


Johnmen   (2007-12-09 17:16:00) [7]

ShellComboBox1.Path := 'E:\';
ShellListView1.Root := ShellComboBox1.Path;


Наверх

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