Avatar billede KLS Novice
20. maj 2005 - 23:05 Der er 13 kommentarer og
1 løsning

problem med indhold i grid

Jeg har et program hvor jeg har 10 forskellige grids.

Problemet er at jeg skal have en funktion til at udfylde headers i disse grids.
Der er tale om SGrid fra vbaccelerator.com, men jeg kan ikke lige finde en løsning som f.eks. får der til at står :
hej1 hej2 hej3 hej4 i alle 10 grids

de hedder vbalgrid1 ... vbalgrid10

jeg har dem ikke som et vbalgrid1 array, da det fik min application til at gå ned.

det jeg skal bruge er så en funktion som fylder header ud i disse
ud fra et tal, altså 1 til 10

eks. en case sætning eller andet.

jeg skal bruge SGrid2 fra vbaccelerator.com da jeg skal bruge nogle af alle de funktioner der er i denne.
så derfor bruger jeg ikke listview eller andre grid.
Avatar billede hiks Nybegynder
23. maj 2005 - 08:55 #1
hej igen :o)

var lige et smut på weekend så håber jeg kan hjælpe med det nu.

jeg har lavet lidt kode til dig således at du kan bruge et control array i stedet. Det er noget nemmere at have med at gøre en 10 separate kodninger. Jeg har i mit eksempel her tilføjet 2 grids som hedder: vbalGrid1

Private Sub Form_Load()

    For i = 0 To 1
        Call StartGrids(CInt(i)) 'laver headers
        Call Data(CInt(i)) 'fylder noget testdata i
    Next

End Sub

Private Sub StartGrids(index As Integer)
    For i = 1 To 5
        With Me.vbalGrid1(index)
            .AddColumn , "hej" & i, ecgHdrTextALignLeft, , , True, True, , , , , CCLSortString
        End With
    Next
End Sub

Private Sub Data(index As Integer)

    For i = 1 To 5
        With Me.vbalGrid1(index)
            .AddRow i, , True
            .CellText(i, 1) = "test" & i
            .CellText(i, 2) = "test" & i
            .CellText(i, 3) = "test" & i
            .CellText(i, 4) = "test" & i
            .CellText(i, 5) = "test" & i
        End With
    Next

End Sub

håber du kan bruge det.

/hiks
Avatar billede KLS Novice
23. maj 2005 - 16:26 #2
Jeg kigger på det, men mit program går ned, når jeg selv har lavet en funktion noget ligende..
jeg ved ikke om jeg konflikter med nogle memory adresser et eller andet sted :(

det er nok mere der mit problem det ligger, men jeg tester lige og vender tilbage senere..
Avatar billede KLS Novice
23. maj 2005 - 22:24 #3
Jeg får stadig en memory fejl, når jeg så prøver at hente min data ind i disse datagrid, men det er ikke i vbalgrid(0) men i vbalgrid(1) og op efter.

kan du evt komme med en forklaring, når du ser min kode :

Public Sub get_ch_slct_bnk(ByVal nr As Integer)
'On Error Resume Next
'Funktion til at hente alle kanaler i valgte bank
Dim chnstrt(1 To 10) As String
Dim chnstop(1 To 10) As String
Dim bank(1 To 10) As String
Dim cnt As Integer
'bank værdier
bank(1) = "A"
bank(2) = "B"
bank(3) = "C"
bank(4) = "D"
bank(5) = "E"
bank(6) = "F"
bank(7) = "G"
bank(8) = "H"
bank(9) = "I"
bank(10) = "J"
'chanel start nr
chnstrt(1) = "001"
chnstrt(2) = "101"
chnstrt(3) = "201"
chnstrt(4) = "301"
chnstrt(5) = "401"
chnstrt(6) = "501"
chnstrt(7) = "601"
chnstrt(8) = "701"
chnstrt(9) = "801"
chnstrt(10) = "901"
'chanel stop nr
chnstop(1) = "100"
chnstop(2) = "200"
chnstop(3) = "300"
chnstop(4) = "400"
chnstop(5) = "500"
chnstop(6) = "600"
chnstop(7) = "700"
chnstop(8) = "800"
chnstop(9) = "900"
chnstop(10) = "1000"
i = CInt(chnstrt(nr))
j = CInt(chnstop(nr))
Do
DoEvents
  If Len(i) = 1 Then
    conn = "00" & i
    Else
    If Len(i) = 2 Then
    conn = "0" & i
    Else
    conn = i
    End If
    End If
    If i = 1000 Then
    conn = "000"
    End If
    Comm_open ("PM" & conn)
    Call Get_settings(i, nr)
    i = i + 1
Loop Until i = j + 1
End Sub

Public Sub Get_settings(ByVal c As String, ByVal bank As Integer)
    txt = ""
        buffer$ = ""
        a = c - 1
        Do
            DoEvents
            buffer$ = buffer$ & Form1.MSComm1.Input
            Loop Until InStr(buffer$, Chr$(13))
        Form1.MSComm1.PortOpen = False
        var1 = buffer$
        chan_nr = Left(var1, 5)
    var1 = Replace(var1, chan_nr, "")
    frek = Left(var1, 9)
    var1 = Replace(var1, frek, "")
    frek = Replace(frek, "F", "")
    frek1 = Left(frek, 4)
    frek2 = Right(frek, 5)
    frek = frek1 & "." & frek2
    trunk = Left(var1, 3)
    var1 = Replace(var1, trunk, "")
    dly = Left(var1, 3)
    var1 = Replace(var1, dly, "")
    lckout = Left(var1, 3)
    var1 = Replace(var1, lckout, "")
    ATT = Left(var1, 3)
    var1 = Replace(var1, ATT, "")
    autorec = Left(var1, 3)
    var1 = Replace(var1, autorec, "")
    ctcss = var1
    ctcss = Replace(ctcss, "N", "")
    ctcss = Replace(ctcss, Chr$(13), "")
    If lckout = " LN" Then
      lckout = "ON"
      End If
    If lckout = " LF" Then
      lckout = "OFF"
    End If
    If dly = " DN" Then
        dly = "ON"
    End If
    If dly = " DF" Then
        dly = "OFF"
    End If
    If ATT = " AN" Then
        ATT = "ON"
    End If
    If ATT = " AF" Then
        ATT = "OFF"
    End If
    Call Data(bank, c, frek, ctcss, dly, lckout, ATT)
End Sub

Private Sub Data(ByVal bank_nr As Integer, ByVal i As Integer, ByVal frek As String, ByVal ctcss As String, ByVal dly As String, ByVal lckout As String, ByVal ATT As String)
'scn_pc_bnk1(ByVal i As Integer, ByVal frek As String, ByVal ctcss As String, ByVal dly As String, ByVal lckout As String, ByVal ATT As String)
grid = bank_nr - 1
With Me.vbalGrid1(grid)
        .AddRow i, , True, , -1
        .CellText(i, 1) = i
        .CellText(i, 2) = frek
        .CellText(i, 3) = "TAG"
        .CellText(i, 4) = ctcss
        .CellText(i, 5) = dly
        .CellText(i, 6) = lckout
        .CellText(i, 7) = ATT
        .CellText(i, 8) = "8"
        .CellText(i, 9) = "9"
        End With
End Sub

rivate Sub Command2_Click()
Call get_ch_slct_bnk(1)
End Sub
Private Sub Command3_Click()
Call get_ch_slct_bnk(2)
End Sub
Private Sub Command4_Click()
Call get_ch_slct_bnk(3)
End Sub
Private Sub Command5_Click()
Call get_ch_slct_bnk(4)
End Sub
Private Sub Command6_Click()
Call get_ch_slct_bnk(5)
End Sub
Private Sub Command7_Click()
Call get_ch_slct_bnk(6)
End Sub
Private Sub Command8_Click()
Call get_ch_slct_bnk(7)
End Sub
Private Sub Command9_Click()
Call get_ch_slct_bnk(8)
End Sub
Private Sub Command10_Click()
Call get_ch_slct_bnk(9)
End Sub
Private Sub Command11_Click()
Call get_ch_slct_bnk(10)
End Sub

Det er den kode som jeg bruger, og de subs som gerne skulle hente min data....

jeg kan ikke se hvorfor at mit program skal gå ned når jeg prøver at loade vbalgrid(1) og opefter.. andre der kan det ?? plz.. help me.
Avatar billede hiks Nybegynder
23. maj 2005 - 22:53 #4
jeg kigger lige på det imorgen.

/hiks
Avatar billede KLS Novice
23. maj 2005 - 23:03 #5
Jeg takker mange gange...
kan det være fordi der er noget jeg glemmer at lukke eller noget i den stil ?
Avatar billede hiks Nybegynder
24. maj 2005 - 09:02 #6
hej igen

gider du ikke prøve at pakke dit projekt i en zip - da det kan være lidt svært at teste ovenstående når der mangler sub/funktioner.

jeg kan ikke lige forestille mig at det er grid'et der giver dig en memory fejl men derimod noget med dine loops og doevents. Hvad sker der f.eks. hvis du aldrig modtager Chr(13) ?

mvh hiks
Avatar billede KLS Novice
24. maj 2005 - 12:09 #7
Det har jeg aldrig oplevet, og det gør jeg, men det er det sjove at jeg jo har et utal af knapper til de forskellige "banker" jeg vil hente, og det er nøjagtig samme funktion jeg bruger.
alle funktioner virkede med listview, men der kunne jeg ikke de ting, som jeg kan i vbalgrid og derfor skiftede jeg til dette, men efter jeg har gjort det er det at jeg får fejl osv... så det må ligge der i mellem et sted.

Jeg er ikke meget for at smide det i en zip fil og smide linket her, men hvis du lige kommer med din mail adresse, så kan vi godt finde ud af det.

men jeg tror ikke det er mine loop jeg har siddet med Watch og med stops for at finde ud af om det er der den går galt og det ser ikke sådan ud.
Avatar billede KLS Novice
24. maj 2005 - 12:51 #8
Nu har jeg strippet alt så jeg kun tester min vbalgrid.

resultatet er det samme og det kommer bare ingen vegne..

Jeg har smidt mit test project på nettet

http://vb6.csgaming.dk/project1.zip
Avatar billede KLS Novice
24. maj 2005 - 12:53 #9
Avatar billede KLS Novice
24. maj 2005 - 13:01 #10
de fejl jeg får er at se på http://www.csgaming.dk/vbfejl.htm
Avatar billede KLS Novice
24. maj 2005 - 13:01 #11
Håber dette kan hjælpe lidt..
Avatar billede hiks Nybegynder
24. maj 2005 - 19:04 #12
Jeg kan ikke umiddelbart finde nogen fejl i det. Den skriver col. headers fint - men jeg kan heller ikke debugge helt da du må have nogle moduler eller lign tilknyttet projektet så jeg kommer ikke så langt i din kodning.

Fejlen der ser ikke så heldig ud - da det ikke er en decideret vb6. Det kunne ligne S-grid'et eller et helt andet komponent der pludselig forårsager en memoryfejl.

Har du prøvet at kompilere og se om fejlen forekommer der også? Jeg har før haft lign. problem i vb hvor vb6 brutalt bliver lukket ned - det gjorde det ikke når programmet kørte - og det blev udbedret da komponenterne blev registreret igen. Men lidt omfattende dog.

/hiks
Avatar billede KLS Novice
25. maj 2005 - 14:57 #13
Fejlen er der stadig, når det er at den er compiled.

Desværre. Men jeg prøver evt lige at tjekke med vbalgrid og se om der evt står noget på deres hjemmeside eller andet,
men jeg ville lige sikre mig at det ikke var mig der var et fjols til at programmere dette...

og jeg har ikke flere moduler sådan direkte, for mit main prog er det som du har fået der, men dog har jeg strippet det for en masse funktioner, som jeg ikke lige havde lyst til at folk skulle kunne "nasse" på.

jeg vender tilbage med en evt. løsning på dette problem og giver self. point.
Avatar billede KLS Novice
25. maj 2005 - 21:12 #14
Jeg har skiftet til en listview fra vbcreations.

denne kan det samme og laver ikke fejl.

så det er jo godt nok :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester