[Delphi] TDirectoryTreeView (en TTreeNode) probleem

Pagina: 1
Acties:

  • eXinion
  • Registratie: Juli 2003
  • Laatst online: 12-05 11:23
Ik ben nou al een tijdje bezig met een DirectoryTreeView en nu kwam ik laatst een probleempje tegen, waar ik tot op heden geen oplossing voor gevonden heb.

Het gaat om het volgende:
Ik probeer de TDirectoryTreeView-component te gebruiken om een lijst van bestanden en subdirectories weer te geven, neem een simpel voorbeeld als volgt:
code:
1
2
3
4
5
6
7
- map
| - map1
  | - file11
| - map2
  | - file21
| - file1
| - file2

Ik wil van deze treeview een lijst van bestanden als volgt krijgen: 'file1', 'file2', 'file11', 'file21' (volgorde is niet van belang)

Dit probeer ik dus te doen met een TDirectoryTreeView, maar als ik (recursief of niet) probeer om alle kinderen van de treenode map te bereiken, hebben ze geen kinderen meer, dus in bovenstaand geval hebben de treenodes map1 en map2 geen Children. De volgende statement is dus nil: DirectoryTreeview1.selected.item[0] (aangenomen dat 'map' geselecteerd is)
Weet iemand waarom dit probleem zich voordoet? Volgens meerdere tutorials online zou dit niet mogen gebeuren.

Bij voorbaat dank!

-edit-
De TDirectoryTreeView-component is zo geconfigureerd dat alle bestanden in de treeview verschijnen.

[ Voor 9% gewijzigd door eXinion op 20-07-2004 17:10 ]


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

En waar heb je dat TDirectoryTreeView component dan vandaan? Deze staat niet standaard in mijn Delphi 7 installatie. Is het een 3rd party component?

Of is het jouw eigen gemaakt component gebaseerd of TTreeView? Als dat zo is dan weet jij vast beter waarom het niet werkt dan ons. Tis jouw code tenslotte.

We adore chaos because we like to restore order - M.C. Escher


  • eXinion
  • Registratie: Juli 2003
  • Laatst online: 12-05 11:23
De TDirectoryTreeview-component is een standaard component onder CLX (je kunt hem aan je project toevoegen als je een CLX applicatie aanmaakt).

Volgens mij staat ie onder de system tab, maar dat weet ik niet zeker, ik zal thuis even kijken, ik zit nu op mijn werk.

- edit -
Ik heb het even nagekeken en standaard staat 'ie onder de system tab.

[ Voor 14% gewijzigd door eXinion op 20-07-2004 19:01 ]


Verwijderd

Grappig. Als ik een CLX applicatie maak krijg ik niet eens een System tab. (Delphi 6)

  • eXinion
  • Registratie: Juli 2003
  • Laatst online: 12-05 11:23
Vreemd, in delphi 7 (bij mij dus) staat 'ie er gewoon bij, staat 'ie nergens anders bij jou? in andere tabbladen?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:01

Creepy

Tactical Espionage Splatterer

Bij mij werkt het prima, indien de node waarvan je de childs wil benaderen is uitgeklapt.
Je zou een .fullexappand kunnen gebruiken, maar dat betekent wel dat alle directories recursief worden doorlopen om alle items te kunnen bepalen.

Mijn conclusie: de TDirectoryTreeview maakt pas child items aan op het moment dat je de parent node uitklapt.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • eXinion
  • Registratie: Juli 2003
  • Laatst online: 12-05 11:23
Hmmm, dat zou inderdaad wel eens heel goed kunnen, ik zal het vanavond meteen uitproberen (ik zit weer op mijn werk)!

Bedankt voor de hulp in ieder geval, ik laat nog even weten of het werkt.

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23-05 23:27

Tomatoman

Fulltime prutser

Vanuit het oogpunt van de programmeur zal het vast wel lukken om bestanden op te nemen in een directory treeview. Realiseer je daarbij wel dat een treeview met daarin alle bestanden potentieel nogal gebruikersonvriendelijk is. Als de gebruker een paar mappen openklapt die heel veel bestanden bevatten (%systemdir% bevat vaak duizenden bestanden), wordt navigeren verschrikkelijk onhandig. Er is niet voor niets voor gekozen om standaard geen bestanden in de directory treeview op te nemen.

offtopic:
Creepy schreef op 21 juli 2004 @ 08:50:
Bij mij werkt het prima, indien de node waarvan je de childs wil benaderen is uitgeklapt.

tomatoman corrigeert:
Children :)

Een goede grap mag vrienden kosten.


  • eXinion
  • Registratie: Juli 2003
  • Laatst online: 12-05 11:23
Creepy schreef op 21 juli 2004 @ 08:50:
Bij mij werkt het prima, indien de node waarvan je de childs wil benaderen is uitgeklapt.
Je zou een .fullexappand kunnen gebruiken, maar dat betekent wel dat alle directories recursief worden doorlopen om alle items te kunnen bepalen.

Mijn conclusie: de TDirectoryTreeview maakt pas child items aan op het moment dat je de parent node uitklapt.
Je hebt gelijk, zodra ik de TDirectoryTreeView volledig expand, ziet 'ie alle files. Hartelijk bedankt voor al jullie hulp.
Pagina: 1