Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: MSHFlexGrid-monivalinnat

Nyykka [20.02.2006 19:53:50]

#

Private Sub MSHFlexGrid_MouseDown(Button As Integer,  Shift As Integer, x As Single, y As Single)
     Dim lngRow As Long
     Dim lngCol As Long
     Dim lngColor As Long
'TÄMÄ TOIMII HALUTULLA TAVALLA

     If Button = vbLeftButton And Shift = vbCtrlMask Then
          With MSHFlexGrid
              .HighLight = 0
              .Redraw = False
               lngRow = .MouseRow
               If lngRow >= .FixedRows Then
                   .Col = .FixedCols
                    If .CellBackColor = vbInfoBackground Then
                        lngColor = .BackColor
                    Else
                        lngColor = vbInfoBackground
                    End If
                    For lngCol = .FixedCols To .Cols - 1
                       .Col = lngCol
                       .CellBackColor = lngColor
                    Next lngCol
              End If
             .Redraw = True
          End With
    End If
End Sub
----------------------------------------------------------------------------------------------------------
Private Sub MSHFlexGrid_KeyDown(KeyCode As Integer, Shift As Integer)
      If KeyCode = vbKeyDown And Shift = vbShiftMask Then

'MITEN TAPAHTUU MONIVALINTA YKSITTÄIN ALASPÄIN LIIKKUESSA?

      End If
      If KeyCode = vbKeyUp And Shift = vbShiftMask Then

'MITEN TAPAHTUU MONIVALINNAN PERUUTTAMINEN YKSITTÄIN YLÖSPÄIN LIIKKUESSA?
      End If
End Sub

----------------------------------------------------------------------------------------------------------
Entä mitenkä tehdään monivalinta alkaen ekasta klikatusta rivistä ja päättyen viimeiseen kikattuun riviin pitämällä Shift-näppäintä alhaalla ja klikkaamalla vikaa riviä? Eli samalla tavalla kuin Windowsin resurssienhallinnassa käsitellään tiedostoja.

Antti Laaksonen [20.02.2006 22:56:21]

#

Koodia ei välttämättä kannata liittää KeyDown-tapahtumaan. Yksi toteutus on panna muistiin rivi, jolla hiiren nappi painetaan pohjaan. Sitten kun nappi vapautetaan, tiedossa on merkittävän alueen alku- ja loppukohta. Tapahtumat ovat siis MouseDown ja MouseUp. Kirjoittamasi koodi kelpaa melkein sellaisenaan, sitä pitää muuttaa vain niin, että yhden rivin merkitsemisen asemesta merkitään kokonainen alue. Jos merkinnän pitää tulla näkyviin sitä mukaa kuin hiirtä liikutetaan, koodia pitää kirjoittaa vielä MouseMove-tapahtumaan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta