[space] Skrevet 30. januar 2005 Del Skrevet 30. januar 2005 Jeg har et program med 5 flexgrids på en side som gjør forskjellige uttrekk av en tabell, og lurte på om det var noen mulighet for noe ala dette: 1. Kaller flexgridene Grid1, Grid2, Grid3, osv. 2. Tilordne verdier til Flexgridene slik: For intGrid = 1 To 5 strGridnavn = "Grid" strTest = CStr(strGridnavn) + CStr(intGrid) rs.Open "SELECT test FROM Testtabell where test.tall = " & intGrid , cn, adOpenDynamic, adLockOptimistic Set strTest.DataSource = rs strTest.MergeCells = flexMergeFree With strTest .ScrollBars = 3 .ColWidth(0) = 2000 .ColWidth(1) = 800 .ColAlignment(1) = flexAlignRightCenter End With strTest.Refresh rs.Close Next intGrid 3. Jeg vet dette ikke funker da, men er det noen annen måte å gjøre dette på? Kjipt å skrive nesten det samme 5 ganger etter hverandre.... [space] Lenke til kommentar
Fogga Skrevet 30. januar 2005 Del Skrevet 30. januar 2005 Hvis du gir Grid'ene samme navn, f.eks bare Grid. Gjør dette med den første og så de andre, så vil VB spørre om du vil lage en array, og da er det lettere å "snakke" med dem i en for/next loop. For index property'en vil da gå fra 0 til 4 når alle har samme navn. Så du bruker Kontrollnavn(index nummer).property når du koder mot dem. For intGrid = 0 To 4 'Bruker intGrid +1 siden for loopen begynner på 0 og du vil ha første selection i sql fra 1. rs.Open "SELECT test FROM Testtabell where test.tall = " & intGrid + 1 , cn, adOpenDynamic, adLockOptimistic Set strTest.DataSource = rs Grid(intGrid).MergeCells = flexMergeFree With Grid(intGrid) .ScrollBars = 3 .ColWidth(0) = 2000 .ColWidth(1) = 800 .ColAlignment(1) = flexAlignRightCenter End With strTest.Refresh rs.Close Next intGrid Kan ikke love at denne koden kjører med en gang, siden jeg ikke har testa det i VB, men det ser riktig ut. Lenke til kommentar
[space] Skrevet 30. januar 2005 Forfatter Del Skrevet 30. januar 2005 Funka genialt det! I forhold til det du hadde skervet, så blir det jo Set fgrDag1(intGrid).DataSource = rs på førsten og fgrDag1(intGrid).Refresh på bunnen. Takker så mye. [space] Lenke til kommentar
[space] Skrevet 30. januar 2005 Forfatter Del Skrevet 30. januar 2005 Dukka selvfølgelig opp et annet problem som følge av dette. Hvordan får jeg nå kjørt click prosedyrer når alle Gridene heter det samme? Funka dårlig med Private Sub Grid(1)_Click() eller bare Private Sub Grid_Click() Koden slik den fungerte før: Private Sub Grid1_Click() With Grid1 txtTall.Text = .TextMatrix(.Row, 1) DoEvents txtTall.SetFocus End With End Sub Lenke til kommentar
aadnk Skrevet 30. januar 2005 Del Skrevet 30. januar 2005 (endret) Dersom du hadde klippet ut koden og fjernet prosedyren, for å så legge den inn igjen (ved å eksempelvis trykke på en av objektene), ville du fått prosedyren riktig omskrevet. Uansett, her er prosedyren slik den skal være: Private Sub Grid_Click(Index As Integer) With Grid(Index) txtTall.Text = .TextMatrix(.Row, 1) DoEvents txtTall.SetFocus End With End Sub Edit: Code-taggen var ødelagt ... Endret 30. januar 2005 av aadnk Lenke til kommentar
[space] Skrevet 30. januar 2005 Forfatter Del Skrevet 30. januar 2005 Flott! Fant det faktisk akkurat ut selv, etter litt prøving, feiling og google... [space] Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå