aTeos Опубликовано 13 февраля, 2005 Жалоба Поделиться Опубликовано 13 февраля, 2005 В общем, мне нужен компонент для Borland C++ Builder, который сделал бы мне список директорий (как в Проводнике слева), очень желательно бесплатный или такой, который можно сделать бесплатным Очень нужно. Заранее благодарю Ссылка на комментарий Поделиться на другие сайты Поделиться
Andrew.Egorovsky Опубликовано 14 февраля, 2005 Жалоба Поделиться Опубликовано 14 февраля, 2005 aTeos Вообще-то, это стандартеный TreeView. Он точно есть в MFC, а сам контрол - ищи в ComCtl32.ocx/dll... Но программировать его - сущий ад, имхо. Вот есть еще некий контрол для выбора именно каталога (такой как в регете при выьборе каталогов. Говорят, что он стандартный, но я так и не нашел его... Ссылка на комментарий Поделиться на другие сайты Поделиться
aTeos Опубликовано 15 февраля, 2005 Автор Жалоба Поделиться Опубликовано 15 февраля, 2005 Andrew.Egorovsky Вот есть еще некий контрол для выбора именно каталога (такой как в регете при выьборе каталогов. Говорят, что он стандартный, но я так и не нашел его... Если мы об одном и том же, то это не стандартный контрол. В WinAPI Help по этому поводу есть примерчик: function PfBrowseDialog (const Title: string; const Flag,csidl: integer): string;var lpItemID : PItemIDList; BrowseInfo : TBrowseInfo; DisplayName : array[0..MAX_PATH] of char; TempPath : array[0..MAX_PATH] of char;begin Result:=''; FillChar(BrowseInfo, sizeof(TBrowseInfo), #0); SHGetSpecialFolderLocation(Application.Handle,csidl,BrowseInfo.pidlRoot); with BrowseInfo do begin hwndOwner := Application.Handle; pszDisplayName := @DisplayName; lpszTitle := PChar(Title); ulFlags := Flag; end; lpItemID := SHBrowseForFolder(BrowseInfo); if lpItemId <> nil then begin SHGetPathFromIDList(lpItemID, TempPath); Result := TempPath; GlobalFreePtr(lpItemID); end;end;// ********* Пример использования: ********** //procedure TForm1.Button1Click(Sender: TObject);begin PfBrowseDialog('Выберите каталог', BIF_RETURNONLYFSDIRS+BIF_EDITBOX+BIF_STATUSTEXT,CSIDL_DESKTOP);end; Ссылка на комментарий Поделиться на другие сайты Поделиться
freeloader Опубликовано 17 апреля, 2005 Жалоба Поделиться Опубликовано 17 апреля, 2005 Народ, это же достаточно не сложно пишется, покрайней мере на .NET это у меня выглядит вот так: #Region " Functions" '''----------------------------------------------------------------------------- ''' <summary> ''' Функция заполнения нода папками ''' </summary> ''' <param name="drivePath">Имя диска или полный путь к каталогу</param> ''' <param name="pNode">Номер нода</param> ''' <remarks></remarks> ''' <history> ''' [freeloader] 09.03.2005 Created ''' </history> '''----------------------------------------------------------------------------- Private Sub InitFolders(ByVal drivePath As String, ByVal pNode As DevExpress.XtraTreeList.Nodes.TreeListNode) TLDir.BeginUnboundLoad() Try Dim arrDirs() As String = System.IO.Directory.GetDirectories(drivePath) Dim node As DevExpress.XtraTreeList.Nodes.TreeListNode Dim di As System.IO.DirectoryInfo 'Dim x As Integer = 0 If arrDirs.Length <> 0 Then For Each strDir As String In arrDirs Try di = New System.IO.DirectoryInfo(strDir) node = TLDir.AppendNode(New Object() {di.Name, "Папка", strDir}, pNode) 'x += 1 node.HasChildren = HasDir(strDir) If node.HasChildren Then node.Tag = True End If sbpStatus.Text = strDir Catch ex As Exception End Try Next End If Catch ex As Exception End Try sbpStatus.Text = "" TLDir.EndUnboundLoad() End Sub '''----------------------------------------------------------------------------- ''' <summary> ''' Получение размера директории ''' </summary> ''' <param name="ResearchDir">Исследуемая директория</param> ''' <returns>Размер директории в байтах</returns> ''' <remarks></remarks> ''' <history> ''' [freeloader] 11.03.2005 Created ''' </history> '''----------------------------------------------------------------------------- Private Function szDir(ByVal ResearchDir As String) As Long Try Dim arrFiles() As String = System.IO.Directory.GetFiles(ResearchDir) Dim xSumm As Long If Not arrFiles.Length = 0 Then For Each strFile As String In arrFiles Dim fInfo As New System.IO.FileInfo(strFile) xSumm += fInfo.Length() Next End If Dim arrDirs() As String = System.IO.Directory.GetDirectories(ResearchDir) If Not arrDirs.Length = 0 Then For Each strDir As String In arrDirs xSumm += szDir(strDir) sbpStatus.Text = strDir Next End If Return xSumm Catch ex As Exception End Try sbpStatus.Text = "" End Function '''----------------------------------------------------------------------------- ''' <summary> ''' Проверка на наличие директорий внутри директории ''' </summary> ''' <param name="path"Исследуемая директория></param> ''' <returns>Истина: папки есть; Ложь: папок нету</returns> ''' <remarks></remarks> ''' <history> ''' [freeloader] 12.03.2005 Created ''' </history> '''----------------------------------------------------------------------------- Private Function HasDir(ByVal path As String) As Boolean Dim root() As String = System.IO.Directory.GetDirectories(path) If root.Length > 0 Then Return True Return False End Function Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти