[VB6] Zeer uitgebreide list box (explorer style)

Pagina: 1
Acties:

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
Ik ben bezig met een programma welke meerdere databases tegelijk kan benaderen. Ik zou graag willen dat het de volgende interface kijgt voor wat betreft het openen van databases.

Afbeeldingslocatie: http://home.wanadoo.nl/dennis.mooibroek/zodus.png

Mijn vraag is nu: hoe kun je dit realiseren?

Even wat uitleg:

LittleGuru.com is de naam van een offline database, (MSAccess). Deze is opgebouwd uit een tabel SOURCE met daarin de volgende velden:

CodeName,
Description,
Category,

Wat je nu in het plaatje ziet is de database, met daaronder verschillende Categories en de CodeName.

Hoe is zo iets gemaakt, met een normale listbox kan ik dit niet.

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Dit is een TreeView

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


  • MaNDaRK
  • Registratie: Oktober 2001
  • Laatst online: 22-08 11:01
Als je 'Microsoft Windows Common Controls 6.0' toevoegd aan je components list.

Dan kan je het component: TreeView toevoegen, en deze in combinatie gebruiken met een ImageList. kan je dat uit je plaatje na maken :)

Suc6

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
Even snel een zoektocht langs verschillende sites geeft inderdaad aan dat dit het is. _/-\o_

Nu nog enig idee hoe ik de TreeView kan vullen met de gegevens uit mijn database?

Dit is een nieuwe control voor mij.

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je zal het met de hand moeten vullen of iemand vinden die een DB versie voor je gemaakt hebt.

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


  • Mickman
  • Registratie: Juni 2001
  • Laatst online: 29-03 18:11
Hoe wil je je TreeView gevuld hebben.

top level: databases
child: tables

+
|_database1
|_table1
|_table2
|
|_database2
|_table1
|_table2

Zoek in de MSDN library informatie over de opbouw van een TreeView.
Je kan ook het volgende voorbeeld gebruiken

http://msdn.microsoft.com...bliomdbdatabaseastree.asp

Dit voorbeeld beschrijft: TreeView Control Scenario: Bind the TreeView to the Biblio.mdb Database

En wat krijg je dan:
Afbeeldingslocatie: http://msdn.microsoft.com/library/en-us/vbcon98/html/avtct033.gif

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
Mickman schreef op 08 April 2003 @ 11:01:
Hoe wil je je TreeView gevuld hebben.

top level: databases
child: tables

+
|_database1
|_table1
|_table2
|
|_database2
|_table1
|_table2
Uitgaande van het bovenstaande voorbeeld:
+
|_database1
|_Tabel SOURCE, Category
|_Tabel SOURCE, CodeName

Ik zal me eens verdiepen in het MSDN artikeltje.

Kun je trouwens gebruik maken van een database op een server? Dus dat je de gebruiker een database laat aanwijzen?

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Als het een commercieel produkt is is het wellicht een idee om even hier te neuzen tussen de commerciele componenten. Voor een relatieve fooi binden deze componenten direct aan je database met alle mogelijke geile features (grouping, editing, filtering etc. allemaal native aanwezig incluis runtime GUI-features).

Plaatjes zeggen meer dan woorden:
Afbeeldingslocatie: http://www.devexpress.com/products/activex/images/XGrid_demo_screen.gif

[ Voor 14% gewijzigd door curry684 op 08-04-2003 12:54 ]

Professionele website nodig?


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
curry684 schreef op 08 april 2003 @ 12:52:
Als het een commercieel produkt is is het wellicht een idee om even hier te neuzen tussen de commerciele componenten. Voor een relatieve fooi binden deze componenten direct aan je database met alle mogelijke geile features (grouping, editing, filtering etc. allemaal native aanwezig incluis runtime GUI-features).
Ziet er leuk en makkelijk uit. Alleen is mijn software niet echt commercieel..... :+

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
Goed, na een uurtje of twee aan het stoeien geweest met VB heb ik het volgende:

Afbeeldingslocatie: http://home.wanadoo.nl/dennis.mooibroek/statusnu.png

maar hoe krijg ik die plaatjes bij de mappen (en worden die inbedded in de exe file of moet ik ze er los bij leveren??)

Links staan de verschillende tabellen waarbij alleen Miscellaneous is gevuld met data. Na het klikken op de naam verschijnt de SourceCode in de RichTextbox rechts.

(Ben eigenlijk nog niet tevreden hoe hij die source code ophaalt, want er wordt gekeken met een IF statement of de namen van de Node overeenkomt met de naam in de database. Dit loopt niet snel wanneer hij alles moet checken. Als iemand hiervoor een snellere procedure heeft graag......)

[ Voor 56% gewijzigd door Schonhose op 09-04-2003 18:22 ]

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 20-08 14:34
Imagelist op het form plaatsen (ImageList zit ook in Common Controls)
Plaatjes in de imagelist zetten (zorg voor fijne keys)
Bij de TreeView aangeven dat je deze imagelist wilt gebruiken
Bij het toevoegen van een nieuwe node aangeven welk plaatje je wilt gebruiken (is gewoon een parameter van Nodes.Add)

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
Bedankt, ik zal er eens naar kijken.

Iemand hier nog een oplossing voor?

Ben eigenlijk nog niet tevreden hoe hij die source code ophaalt, want er wordt gekeken met een IF statement of de namen van de Node overeenkomt met de naam in de database. Dit loopt niet snel wanneer hij alles moet checken. Als iemand hiervoor een snellere procedure heeft graag......

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 20-08 14:34
Zet de tag van elke node gelijk aan de ID in de database

Doe eerst Set Node = Treeview.Nodes.Add(.....)
En dan Node.Tag = <id in de database>

En dan kun je dus ook bij een NodeClick kijken wat de Node.Tag is, en daarmee verder werken in de database.

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
Flard schreef op 10 April 2003 @ 12:35:
Zet de tag van elke node gelijk aan de ID in de database

Doe eerst Set Node = Treeview.Nodes.Add(.....)
En dan Node.Tag = <id in de database>

En dan kun je dus ook bij een NodeClick kijken wat de Node.Tag is, en daarmee verder werken in de database.
Volgens mij moet je dan nog steeds de ID opzoeken vanuit de TAG. Dus dan doe ik nog steeds hetzelfde wat ik nu doe met de naam (alleen is het in een andere form).

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
De vraag die hier stond is opgelost....... :o

[ Voor 92% gewijzigd door Schonhose op 10-04-2003 16:08 ]

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 20-08 14:34
Wat is de unieke identifier van jouw tabel SOURCE?

Je moet namelijk de Node.Tag instellen op deze unieke identifier

Dan kun je als je op een node klikt iets uitvoeren wat hierop lijkt:

Set rs = database.execute("SELECT * FROM SOURCE WHERE <identifier> = " & Node.Tag)

En dan kun je dus uit de recordset het veld halen wat je nodig hebt, en dat in de RichTextBox zetten...

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
Ik heb mijn bestandsnaam als uniek ID (source container) voorlopig. M.b.v. een SQL statement zoek ik de juiste record op.

Is het handiger om deze te vervangen door een autonumber en daar op te gaan zoeken? (Ben er nog niet over uit....)

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 20-08 14:34
Volgens mij begin ik je programma steeds slechter te begrijpen ;)

Ik denk dat het beste in de database een 'autonumber' kunt toevoegen, en dan als tag dus dat autonumber. Verder in de database ook een veld bestandnaam toevoegen.

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 30-07 21:51

Schonhose

Retro Icoon

Topicstarter
Flard schreef op 11 April 2003 @ 11:45:
Volgens mij begin ik je programma steeds slechter te begrijpen ;)
Alle problemen hiermee zijn opgelost. Ik kan voorlopig even verder. De principes zijn me duidelijk en misschien moet ik nog een aanpassing maken voor wat betreft de database.

Momenteel is de bestandsnaam een unique record waar geen duplicates zijn toegestaan. Via een SQL statement zoek ik de bij de bestandsnaam horende code op (Die bestandsnaam staat in de treeview en die gebruik ik bij het SQL statement.)

Bijna gelijk aan wat jij wilt. Misschien dat ik ooit nog wel eens die tag opvul met die autonumbers zodat ik meerdere bestanden met 1 bestandsnaam in mijn database kan hebben. Ik moet hier alleen over nadenken of ik dit wel wil. :o

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005

Pagina: 1