amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > liste mit subfoldern [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

01.04.2010, 17:33 Uhr

AGSzabo
Posts: 1663
Nutzer
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. ]

[ - Antworten - Zitieren - Direktlink - ]

01.04.2010, 19:26 Uhr

geit
Posts: 332
[Ex-Mitglied]

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

[ - Antworten - Zitieren - Direktlink - ]

01.04.2010, 19:36 Uhr

AGSzabo
Posts: 1663
Nutzer
@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

[ - Antworten - Zitieren - Direktlink - ]

01.04.2010, 19:45 Uhr

geit
Posts: 332
[Ex-Mitglied]
@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. ]

[ - Antworten - Zitieren - Direktlink - ]

01.04.2010, 20:18 Uhr

AGSzabo
Posts: 1663
Nutzer
@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. ]

[ - Antworten - Zitieren - Direktlink - ]

01.04.2010, 21:07 Uhr

thomas
Posts: 7716
Nutzer
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/

[ - Antworten - Zitieren - Direktlink - ]

01.04.2010, 21:27 Uhr

AGSzabo
Posts: 1663
Nutzer
@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. ]

[ - Antworten - Zitieren - Direktlink - ]

01.04.2010, 22:50 Uhr

thomas
Posts: 7716
Nutzer
@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/

[ - Antworten - Zitieren - Direktlink - ]

02.04.2010, 07:57 Uhr

AGSzabo
Posts: 1663
Nutzer
@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. ]

[ - Antworten - Zitieren - Direktlink - ]

04.04.2010, 14:34 Uhr

AGSzabo
Posts: 1663
Nutzer
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

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > liste mit subfoldern [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.