amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > liste mit subfoldern [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2010-04-01, 17:33 h

AGSzabo
Posts: 1663
User
hi,

ich suche nach strategien wie man eine liste mit foldern und subfoldern (zum aufklappen) programmieren kann. meine methode, zu jedem list item, das ein folder ist, zu merken, wiviele der nachfolgenden items in ihm drin sind. das reicht aber praktisch nicht. was kann ich noch machen bzw wie macht man das? es muss ja so seion, dass man schnell darin vor und zurück scrollen kann ohne lange nach dem vorhergheden oder folgendem anzuzeigenden item zu suchen ... und für die eingerückte darstellung muss man für jedes item seine verschachtelungstiefe wissen?

ags
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 01.04.2010 um 18:28 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2010-04-01, 19:26 h

geit
Posts: 332
[Former member]

Das einfachste ist immer noch eine doppeltverkettete Execliste, in deren Nodes du bei Verzeichnissen wieder eine liste unterbringst.

In den Nodetyp trägst du halt ein was das ist und wenn der typ "Verzeichnis" ist, dann gilt ein Listenkopf im Eintrag eben als liste für den inhalt. So haste schnell einen Baum.

Geit

[ - Answer - Quote - Direct link - ]

2010-04-01, 19:36 h

AGSzabo
Posts: 1663
User
@geit:

i see, aber wenn ich zb rückwärts scrolle, wei ermittle ich schnell das vorhergende sichtbare element? es kann ja sein, dass da folder zusammengeklatt sind und ihre elemene bicht sichtbar.
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ - Answer - Quote - Direct link - ]

2010-04-01, 19:45 h

geit
Posts: 332
[Former member]
@AGSzabo:

??

Du machst doch für jedes Verzeichnis eine eigene Liste. Dann ist es egal ob es auf oder zugeklappt ist. Wenn du Element für Element durch die Liste gehst, bekommst du nur Dateien oder Verzeichnisse die in diesem Ordner sind, egal ob du vor oder zurück suchst.

Wenn ein Ordner aufgeklappt ist und du vorwärts suchst, dann mußt du halt bevor du den nächsten Eintrag anzeigst, den Inhalt der Liste des Verzeichniseintrags anzeigen.

Das kann man ziemlich einfach und elegant mit einer Rekursion lösen.

Geit


[ Dieser Beitrag wurde von geit am 01.04.2010 um 19:48 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2010-04-01, 20:18 h

AGSzabo
Posts: 1663
User
@geit:

rekursionen werde ich brauchen, aber mir schwebt da eine idee vor die es möglich mach auf verschachtelte listen zu verzichten: sichtbarkeit vom folder dem man das item hinzufügt übernehmen, einzug übernehmen und plus eine tiefe im item merken.

wie genau würde zb die rekursion aussehen um alle items eines folders INVISIBLE zu machen? es gibt nur "numfold" members eines folders und nur eine lange verkettete liste, aber unter den "numfold" elementen können wieder header auftauchen die ihrerseits "numfold" gesetzt haben.

--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 01.04.2010 um 20:21 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2010-04-01, 21:07 h

thomas
Posts: 7717
User
Zitat:
Original von AGSzabo:
wie genau würde zb die rekursion aussehen um alle items eines folders INVISIBLE zu machen?


Du sagst einfach dem Parent, daß seine Children nicht sichtbar sind. Dann überspringt die Anzeigeroutine sie. Die Rekursion brauchst du nur, um die Liste und alle unterverzeichnisse liniar durchzugehen.


Zitat:
es gibt nur "numfold" members eines folders und nur eine lange verkettete liste, aber unter den "numfold" elementen können wieder header auftauchen die ihrerseits "numfold" gesetzt haben.

Das ist nicht das, was geit dir vorgeschlagen hat. Wenn du schon einen Algorithmus im Kopf hast, solltest du nicht nach anderen Vorschlägen fragen, die du dann sowieso nicht annimmst.

Dein "numfold" (der Name ist idiotisch, sowas nennt man "numchild") hat einen entscheidenden Nachteil: wenn du die Liste veränderst (z.B. eine Datei hinzufügst oder löschst), mußt du alle davorliegenden Nummern anpassen. Außerdem läßt sich die Liste kaum sortieren. Wenn du auf einer linearen Liste bestehst, solltest du lieber die Schachtelungsebene speichern. Das listbrowser.gadget macht das z.B. auch so.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2010-04-01, 21:27 h

AGSzabo
Posts: 1663
User
@thomas:

ich hab noch garnix entschieden.

> Wenn du auf einer linearen Liste bestehst, solltest du lieber die Schachtelungsebene speichern.

was meinst du? wie genau geht das, bzw was macht man da?


--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 01.04.2010 um 21:42 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2010-04-01, 22:50 h

thomas
Posts: 7717
User
@AGSzabo:

Na so:

1 - C
2 -- Copy
2 -- Delete
2 -- Dir
1 - Devs
2 -- DOSDrivers
3 --- PIPE
2 -- Monitors
3 --- NTSC
3 --- PAL
1 - Fonts
2 -- courier.font
2 -- courier
3 --- 11
3 --- 13
3 --- 15
3 --- 18
3 --- 24
1 - L
2 -- port- handler
1 - Libs
2 -- 68040.library
2 -- asl.library
2 -- diskfont.library


Wenn du jetzt z.B. von Fonts nach L springen möchtest, weil Fonts nicht angezeigt werden sollen, dann mußt du nur alle, die nach Fonts kommen und größer als 1 sind überlesen.

Und du kannst z.B. bei Courier einfach noch eine 30 einfügen, ohne die ganze Liste neu berechnen zu müssen.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2010-04-02, 07:57 h

AGSzabo
Posts: 1663
User
@thomas:

aha :-) und wie/so ist das einfacher zu sortieren?

außerdem muss ich mir noch merken welches item ein ordner ist um überhaupt mit dem überspringen abhängig von geöffnten oder geschlossenem zustand anfangen zu können, oder?

und wenn ich rückwärts von L nach Fonts springen will, wie weiss ich an position L schon, dass alles frühere bis Fonts unsichtbar sein soll weil der Fonts ordner geschlossen ist?

--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 02.04.2010 um 08:13 Uhr geändert. ]

[ Dieser Beitrag wurde von AGSzabo am 02.04.2010 um 12:21 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2010-04-04, 14:34 h

AGSzabo
Posts: 1663
User
Ich habe mich jetzt für eine lösung entschieden, bei der alle list items doppelt verkettet sind. einmal ALLE in einer "backbone"-liste und einmal nur die sichtbaren, wobei nach jedem add, del, open und close die liste der sichtbaren elemente ge-updated wird. danke für eure tips!
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > liste mit subfoldern [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.