Witam. Korzystam z Borland Builder C++ 6 i Indy 9.
Otóż chciałbym zrobić coś na kształt totalCommandera, w moim kliencie FTP, mianowicie, widoczne są dwa okna. W jednym odwzorowanie katalogu na dysku lokalnym (np. katalog w którym są nasze pliki projektu), a w drugim odwzorowanie plików na serwerze FTP.
Listowanie plików poprzez

IdFTP1->List(ListBox2->Items, "*.*", false);

jest łatwe, ale troche niefunkcjonalne, gdyż nie widać ikonek oraz katalogów. Dlatego chciałem zrobić to w taki sposób, jak niżej opisałem.

Dysponuje takim oto kodem do tego:

void __fastcall TForm1::LLoadFileBtnClick(TObject *Sender)
{
  TSearchRec sr;
  AnsiString fullName;
  AnsiString directory( ".\\" );
  AnsiString searchPath;

  TListItem  * item;
  int        imageIndex;
  Graphics::TIcon *ikona = new Graphics::TIcon();

  SHFILEINFO info;
  UINT sImg = SHGFI_ICON | SHGFI_SMALLICON | SHGFI_TYPENAME;


  searchPath = directory + "*.*";
  ListView1->Clear();
  if( FindFirst( searchPath.c_str() , faAnyFile, sr ) == 0 )
  {
    imageIndex = 0;
    do
    {
      if( sr.Name == "." || sr.Name == ".." )
        continue;

      fullName = directory + sr.Name;

      if( SHGetFileInfo( fullName.c_str(), 0, &info, sizeof( info ), sImg ) )
      {
        ikona->Handle = info.hIcon;
        ListView1->SmallImages->AddIcon( ikona );

        item = ListView1->Items->Add();
        item->Caption = sr.Name;
        item->ImageIndex = imageIndex++;
        item->SubItems->Add( AnsiString( info.szTypeName ) );
      }

    }
    while( FindNext( sr ) == 0 );
   }
   FindClose( sr );
}

Czyli po kliknięciu na Buttonie w oknie ListView1 pokazują mi się małe ikonki folderu bieżącego. To działa!

Moje pytanie brzmi, w jaki sposób zrobić by w oknie ListView2 po kliknięciu na odpowiednim Buttonie pojawiło się odwzorowanie plików umieszczonych w katalogu na serwerze? Zrobiłem więc taki sam ListView2 - z własnym Buttonem i zmiennymi poprzedzonymi literą "S" (np. Sdirectory)
Próbowałem użyć tego(umieściłem to podczas łączenia się do serwera)

bufor = IdFTP1->RetrieveCurrentDir();
    Sdirectory = bufor;

Jak na mój gust w tym momencie Sdirectory będzie zawierało ścieżkę bierzącego katalogu na serwerze.

SsearchPath = Sdirectory + "*.*";

Czyli według mojego rozumowania, zmienna SsearchPath powinna zawierać następujący ciąg znaków:
"/."

Chyba dobrze, jednak wyszukiwanie plików na serwerze nie działa - robiłem analogicznie jak do wyszukiwania plików na dysku lokalnym.

Troszkę zamieszałem, ale byłbym wdzięczny jakby ktoś rzucił na to okiem, mam nadzieje, że wiadomo o co chodzi:)