To nie jest takie proste, trzeba cały czas wyliczać foldery, przy każdym kliknięciu. Nie poradzisz sobie z tym, wiec podam prostszy sposób.
Na zakładce komponentów Win 3.1 masz komponenty:
TDriveComboBox - wylicza wszystkie dyski lokalne.
TDirectoryListBox - wylicza wszystkie foldery na dysku lokalnym
TFileListbox - wylicza wszystkie piki w wybranym folderze.
Umieszczasz na formularzu komponent DiveComboBox1, następnie umieszczasz komponent DirectoryListBox1, potem umieszczasz FileListBox1.
We właściwości DirList obiektu DriveComboBox1 wybierasz DirectoryListBox1, w ten sposób DriveComboBox1 będzie sterował zawartością obiektu DirectoryListBox1, a konkretnie DriveComboBox1 będzie decydował na którym dysku DirectoryListBox1 będzie wyliczał foldery.
We właściwości FileList obiektu DirectoryListBox1 wybierasz FileListBox1, w ten sposób DirectoryListBox1 będzie sterował zawartością obiektu FileListBox1, czyli FileListBox1 będzie wyświetlał zawartość folderu wybranego w DirecotryListBox1.
Masz jeszcze inne obiekty, np. TFilterComboBox, który umożliwia filtrowanie zawartości obiektu TFileListBox.
W celu uruchomienia jakiegoś pliku wybranego w FileListBox1 w domyślnym programie wystarczy utworzyć zdarzenie OnDblClick dla tego obiektu i dodać taki kod:
- Kod: Zaznacz cały
void __fastcall TForm1::FileListBox1DblClick(TObject *Sender)
{
ShellExecute(Form1->Handle, NULL , FileListBox1->FileName.c_str(),
"", "", SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------
W celu otwarcia w Eksploratorze systemu Windows folderu wybranego w DirectoryListBox1 wystarczy utworzyć zdarzenie OnDblClick dla tego obiektu:
- Kod: Zaznacz cały
void __fastcall TForm1::DirectoryListBox1DblClick(TObject *Sender)
{
ShellExecute(Form1->Handle, NULL, DirectoryListBox1->Directory.c_str(),
"", "", SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------