Servus miteinander,
und noch ein Problem xD
Naja weniger ein Problem eher die Frage ob eine Schönheitsop möglich
ist. Ich habe hier irgendwo ein Script gefunden mit dem der
Strukturbaum alphabetisch sortiert wird. Dieses Skript habe ich
angepasst und noch einiges hinzugefügt (CatSettings ändern +
zurücksetzen damit keine Constraints verloren gehen, abgleich
Partnumber + Instancename usw).
Nun hat das Script aber bei Zahlen den selben Fehler wie die alten
Windowssysteme. Sortiert wird erst die 1. position dann die 2. d.h.
entsteht diese Hierarchie:
10
11
12
7
8
9
...
gewünscht ist aber:
7
8
9
10
11
12
...
Ich komme nicht wirklich damit weiter das in den Griff zu bekommen.
Kann man das vielleicht beheben?
Hier der relevante Teil:
Sub Sort_Tree(ByVal Dokument As Document)
set Product_Collection = new Collection
Set Produkte = Dokument.Product.Products
for each Product in Produkte
Product_Collection.add Product.Name
next
'Selection im Product
Product_Collection.sort
Set oSel = Dokument.Selection
oSel.clear
for i = 1 to Product_Collection.Count
oSel.add Produkte.Item(Product_Collection.Item(i))
oSel.cut
oSel.clear
oSel.add Dokument.Product
oSel.Paste
oSel.clear
next
end sub
class Collection
private Array()
sub class_initialize()
'Array mit 1 (leeren) Datenfeld anlegen'
Redim Array(0)
End Sub
'Elemat am Ende des Arrays hinzufügen (automatische erweitern)
public Sub add(Datenfeld)
Index = Ubound(Array)
ReDim preserve Array((Index+1))
Array(Index+1) = Datenfeld
end Sub
'Datenfeld ausgeben
public function Item(Index)
'Überpruefen: Index zu hoch? Index 0 ist leer'
if (Index <= 0 and Index > Ubound(Array)) then
tem = "ungültiger Index"
Else
Item = Array(Index)
End If
end function
'den Array absteigend sortieren'
Sub sort
'Bubblesort
for i = 1 to Ubound(Array)+1
for u = i to Ubound(Array)
if Array(i) > Array(u) then
'temp-Variable schreiben, danach austauschen
temp = Array(i)
Array(i) = Array(u)
Array(u) = temp
end if
next
next
end Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP