Toon posts:

[VB] Data laten zien

Pagina: 1
Acties:

Verwijderd

Topicstarter
nou dit is mijn probleem:

ik heb een 2 dimensionaal array van 20 bij 6
Dat is meestal niet helemaal gevuld.
(het kan ook met een variabel array, maar maximale waarde is 20 dus zo'n groot geheugenverschil is dat niet)

nu wil ik de output van de data laten zien in een soort tabel.
Nu is mijn vraag hoe kan ik dit mooi in een tabel (ofzo) laten zien.

Ik wil bijvoorbeeld uitschietende waardes een ander kleurtje geven.

Ik heb het met 6 listboxes geprobeerd, maar daar kan ik geloof ik niet een item in de list kleuren (of bold maken of iets anders)

Weet iemand hoe dit moet?
Of heeft iemand anders een idee om die tabel te laten zien?

Het kan natuurlijk door 20x6 = 120 labels te maken, maar dat lijkt me niet echt handig, want dan moet je natuurlijk een hele lap code genereren om alleen maar die labeltjes te "initialiseren".
(veel werk, dus ik denk dat het beter kan)

ik ben geen super VB-wiz, dus ik zou het fijn vinden als iemand mij kan helpen

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Je kan eventueel een RichtTextBox gebruiken. Daarin kun je aparte strings een kleurtje, vet, ... zetten.

Je moet dan wel een beetje knoeien met de properties: selstart, sellength, sel* :)

Een andere oplossing kan ook zijn dat je een DataGrid gebruikt. Maar dan moet je wel via een tabel uw gegevens erin stoppen. Volgens mij kun je Grids niet via een gewone array invullen...

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Verwijderd

Of je probeert een flexgrid. Een flexgrid is namelijk niets anders dan een weergave van een 2D array. Als je de TextMatrix (row,col) property gebruikt kan je hem vrij snel vullen. Uiteraard kan je dan ook gebruik maken van de andere schitterende properties van het FlexGrid :) .

En wel zeker dat het uitmaakt of een 2d-Array 1 of 20 als uiterste grens. Stel je definieert geen datatype dan is het dus een Variant en deze heeft minimaal 16 bytes geheugen ruimte. Dan komt er nog de benodigde ruimte bij voor het subdatatype (Voor iedere Long 2 bytes) Ergo 19 * 16 + 19 * 2. Zijn 182 bytes verschil. Dit lijkt niet veel, maar het is wel handiger om het jezelf aan te leren niet meer geheugen te gebruiken dan strikt noodzakelijk. Uiteraard zijn er uitzonderingen op de regel ;)
Verwijderd schreef op 31 juli 2002 @ 09:03:
Het kan natuurlijk door 20x6 = 120 labels te maken, maar dat lijkt me niet echt handig, want dan moet je natuurlijk een hele lap code genereren om alleen maar die labeltjes te "initialiseren".
(veel werk, dus ik denk dat het beter kan)
Dan kan wel zeker heel snel en met relatief weinig code. Je maakt een loop met de grenzen van je array. (Even in een variabele voor de perf) Vervolgens maak je een controlarray aan en dynamisch in de loop maak jij die labels aan.

code:
1
2
3
4
5
6
7
8
 for intCntRow = 0 to intMaxRow
     for intCntCol = 0 to IntMaxCol
            intIndex = intIndex + 1
            load lblData(intIndex)
            lblData(intIndex).Font.Bold = True
            lblData(intIndex).show
     next intCntCol
 next intCntRow


Uiteraard nog even op de goede positie zetten en tada klaar :9
Succes

Verwijderd

Topicstarter
ok, het is een array van integers, dus dat valt wel mee....

Verwijderd

Topicstarter
Ja maar dan moet ik dus 120 van die labeltjes op het scherm gaan zitten slepen!

Verwijderd

Das idd niet zo handig ;) ff niet opgelet. Maar mij ging het eigenlijk meer om de code. Grootte valt dus best mee. En slepen hoeft niet, dit kan natuurlijk ook dynamisch. Wat je wel krijgt is dat de performance een beetje zaad gaat worden. Al kan je dit kan wel weer met een ander formpje oplossen blablabla :*)

Nee FlexGrid dat lijkt mij de beste oplossing

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-08 23:12
Nee dus.

That is, je hoeft niet 120 labeltjes te slepen. Het positioneren kan ook in diezelfde loop.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
en hoe moet dat? ik ben nog niet zo ver met VB....

Verwijderd

Topicstarter
Hoe kan ik nu in een losse cel de text van kleur laten veranderen?


Msflexgrid.????.forecolor, maar wat moet er tussenin om de juiste cel te selecteren?

  • Sinedia
  • Registratie: Juli 2002
  • Laatst online: 26-07 13:50
code:
1
2
3
MSHFlexGrid1.Col = 2
MSHFlexGrid1.Row = 2
MSHFlexGrid1.CellForeColor = kleurtje


Was het niet zoiets?

Verwijderd

Topicstarter
jeetje wat een ingewikkelde manier, eerst 2 assignments doen en dan pas veranderen!
maar het werkt, Bedankt!!
Pagina: 1