PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » Странная сортировка дерева от винды


Странная сортировка дерева от винды

Сообщений 1 страница 4 из 4

1

винда файлы и папки сортирует в одной куче, не делая различия между файлами и папками
это я такой привередливый, или виндовый косяк
есть #TVM_SORTCHILDRENCB, типа "ручной" сортировки или писать своё дерево и сортировать его до генерации дерева
оба варианта не из простых

код показывает как винда сортирует

Код:
Procedure TreeExpand(gad)
Protected hwndTV, hRoot, hItem
hwndTV = GadgetID(gad)
hRoot = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_ROOT, 0)
hItem = hRoot
Repeat
SendMessage_(hwndTV, #TVM_EXPAND, #TVE_EXPAND, hItem)
hItem = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_NEXTVISIBLE, hItem)
Until hItem = #Null
SendMessage_(hwndTV, #TVM_ENSUREVISIBLE, 0, hRoot)
EndProcedure

EnableExplicit

Procedure SortTree(gad)
Protected k, id
id=GadgetID(gad)
For k=0 To CountGadgetItems(gad)-1
If SendMessage_(id, #TVM_GETNEXTITEM,#TVGN_CHILD, GadgetItemID(gad, k))
SendMessage_(id, #TVM_SORTCHILDREN, 0, GadgetItemID(gad, k))
EndIf
Next
SendMessage_(id, #TVM_SORTCHILDREN, 0, 0)
EndProcedure

If OpenWindow(0,0,0,200,420,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  TreeGadget(33,10,10,180,400,0)
; A B C D E F G H I J K L M N O P Q R S T U V W X Y Z


AddGadgetItem(33,-1,"F-Folder-1",0,0)
AddGadgetItem(33,-1,"G",0,1)
AddGadgetItem(33,-1,"T",0,1)
AddGadgetItem(33,-1,"N",0,1)
AddGadgetItem(33,-1,"B",0,0)
AddGadgetItem(33,-1,"C-Folder-1",0,0)
AddGadgetItem(33,-1,"K",0,1)
AddGadgetItem(33,-1,"U",0,1)
AddGadgetItem(33,-1,"O",0,1)
AddGadgetItem(33,-1,"P",0,1)
AddGadgetItem(33,-1,"D",0,0)
AddGadgetItem(33,-1,"V",0,0)
AddGadgetItem(33,-1,"R",0,0)
AddGadgetItem(33,-1,"A",0,0)
AddGadgetItem(33,-1,"E",0,0)


  TreeExpand(33)
  SortTree(33)
Repeat 
If GetAsyncKeyState_(#VK_ESCAPE)=32768:Break:EndIf
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

0

2

Я не вижу здесь папок и файлов. Само по себе дерево не имеет приоритетов таких как вложенный пункт или не вложенный. В Линукс даже есть сортировка без учёта папок/файлов. Можно сделать сначала структуру и сделать сортировку в ней, а потом уже заполнять дерево.

0

3

AZJIO написал(а):

Я не вижу здесь папок и файлов.

то что нет расширений, ещё ни чего не значит
реально прочитанное с винта и сей пример, это одно и тоже, об это и зацепился в реальной проге, файлы оказались между папок и читабельность сразу кончилась
само дерево различает файл и папку, для дерева это разные вещи
но при сортировке содержимого в одной папке винда не делает различия между файлами и папками
разумно ведь папки отдельно, файлы отдельно

0

4

newJS написал(а):

но при сортировке содержимого в одной папке винда не делает различия между файлами и папками

А где такое правило написано? Оно действует только в проводнике и больше нигде. В том примере что я дал ссылку я написал программу, как раз таки дерево файлов и сделал сортировку либо по размеру, либо по имени и оно работает.

0


Вы здесь » PureBasic - форум » PureBasic для Windows » Странная сортировка дерева от винды