20. maj 2005 - 23:05Der 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.
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
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..
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.
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) ?
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.
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.
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.
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.