Tags:
visual-basic
Heysan,
jeg er ved at lave et program der læser en logfil igennem, og hiver otte
forskellige stykker data ud fra hver linie.
De data vil jeg så gerne have præsenteret på en eller anden måde. Og
det skulle helst gerne være i stil med hvordan flexgrid præsenterer data.
Nu ville jeg jo gerne bruge netop flexgrid. Men, såvidt jeg ved bruges den
da kun til at præsentere data fra f.eks. en database, right ? Hvad nu hvis
jeg gerne bare vil løbe den her logfil igennem, og præsentere data i en
række, men otte kolonner. Helst med en titel for hver kolonne.
Uden at skulle forbi en eller anden datasource, andet end den logfil jeg
løber igennem.
Hvad er bedst at bruge ?
Jacob
2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
<quote>Heysan,
jeg er ved at lave et program...
</quote>
Jeg tror det aller nemmeste er at bruge en ListView kontrol. Den er meget fleksibel og kræver som sådan ikke noget specielt.
Åbn VB og vælg "Components" kommandoen fra "Project" menuen. Marker "Microsoft Windows Common Controls" i listen, og klik "OK". Efter dette, har du fået en kontrol, der hedder "ListView" i din toolbar.
Opret en ListView kontrol på en formular, og lad os bare bruge navnet "ListView1", som VB foreslår. Jeg går ud fra, at du allerede har trukket dine data ud fra filen, så jeg kalder dem data1, data2, og så videre.
Højreklik på ListView1 og vælg "Properties". I "View" drop-down listen kan du vælge "lvwReport" for at vise flere kolonner. Dernæst bør du sætte "LabelEdit" til "lvwManual" for at brugeren ikke skal kunne ændre dine data (i listen).
Klik derefter på "Column Headers" fanen øverst i dialogboksen. Ved at klikke på knappen "Insert Column" 8 gange, kan du oprette 8 kolonner. For hver kolonne kan du sætte en titel i tekstboksen "Text". (Denne tekstboks burder hedde "Title", da den sætter kolonnens titel).
Efter at de 8 kolonner er oprettet med deres respective titler, kan du klikke på "Sorting" fanen, hvis du vil sortre efter en bestemt kolonne. Jeg foreslår dog at du gør dette i kode istedet. Men, for eksempel, kan du bare markere "Sorted" check-boksen for at sortere efter første kolonne.
Nu kan du klikke på OK for at lukke dialog boksen. Umiddelbart ser det ikke ud til at listen har fået kolonner, men hvis du kører programmet, kommer de frem.
Du kan bruge denne rutine til at lægge data til din ListView control.
--- Kode Begynder ---
Public Sub AddListItem( _
ByVal argData1 As String, _
ByVal argData2 As String, _
ByVal argData3 As String, _
ByVal argData4 As String, _
ByVal argData5 As String, _
ByVal argData6 As String, _
ByVal argData7 As String, _
ByVal argData8 As String _
)
Dim li As ListItem
' Tilføj et element og få en reference til det.
Set li = Me.ListView1.ListItems.Add(, , argData1)
' Sæt de resterende kolonner's data for dette
' element.
With li
.SubItems(1) = argData2
.SubItems(2) = argData3
.SubItems(3) = argData4
.SubItems(4) = argData5
.SubItems(5) = argData6
.SubItems(6) = argData7
.SubItems(7) = argData8
End With
End Sub
--- Kode Slutter ---
Du kan så kalde rutinen hver gang du vil tilføje et element.
Der er meget meget mere jeg kunne skrive om ListView kontrollen, da den er hammer fed, men jeg vil slutte nu. Hvis du har spørgsmål, så bara stil dem.
PS. Med hensyn til Format$ funktionen glemte jeg at sige i sidste post, at "standard" bruger Windows'es standard numeriske format. Dvs. outputtet kan variere alt efter hvilken "locale", sprog, etc. maskinen er sat op til. Hvis du skal have bestemte formater, så som tusindtals-separator mv. kan du angive dit eget format, hvilket du også nævnte at du havde prøvet. Prøv f.eks.
Debug.Print Format$(1234.56, "#,##0.0")
OK, held og lykke med ListView kontrollen.
0
FORRESTEN!!!!
Rutinen skal oprettes i den form, der indeholder "ListView1" kontrollen, da rutinen bruger udtrykket "Me.ListViev1"
"Me" referer i dette tilfælde til formen.