Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: ListBox ja hiiri

Sivun loppuun

Milu [11.12.2004 11:20:06]

#

Miten sais helposti toteutettua, että tavallisesta Listboxsista sais valittua hiiren oikealle ja vasemalle nappulalle omat toiminnot?

Ja mitenkä DirListBox:sta saa valittua ilman tuplaklikkausta toiminnon?

Blaze [11.12.2004 11:59:09]

#

Kirjoita tapahtumat Click-eventin sijasta MouseUppiin, niin tieto siitä, mitä nappia käyttäjä painoi löytyy muuttujasta 'Button'.

DirListBoxista löytyy yhtälailla nuo Click- ja MouseUp-eventit siinä, missä tavallisestakin.

Antti Laaksonen [11.12.2004 12:00:08]

#

Milu kirjoitti:

Miten sais helposti toteutettua, että tavallisesta Listboxsista sais valittua hiiren oikealle ja vasemalle nappulalle omat toiminnot?

Kirjoita koodi MouseDown-tapahtumaan:

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Select Case Button
        Case 1
            MsgBox "Nyt painettiin vasenta nappia!"
        Case 2
            MsgBox "Nyt painettiin oikeaa nappia!"
    End Select
End Sub

Milu kirjoitti:

Ja mitenkä DirListBox:sta saa valittua ilman tuplaklikkausta toiminnon?

Mitä tarkoitat? Ai että hakemisto avautuu, kun sitä painaa vain kerran hiirellä?

muok: Joo, MouseUp vastaa lähemmin Click-tapahtumaa.

Milu [11.12.2004 13:32:51]

#

Kiitoksia !

Joo, että saisi hakemiston auki vain kerran klikkaamalla.

Antti Laaksonen [11.12.2004 14:29:06]

#

Homma hoituu ainakin tämmöisellä koodilla:

Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4

Private Sub Dir1_Click()
    ' luulotellaan, että hiirtä onkin painettu kahdesti
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

Tietääkö kukaan parempaa tapaa?

setä [11.12.2004 16:18:52]

#

Vaikka Click-tapahtumaan tällainen koodi:

Dir1.Path = Dir1.List(Dir1.ListIndex)

Antti Laaksonen [11.12.2004 16:56:21]

#

Tuo on tosiaan paljon parempi tapa ja toimii oikein myös nuolinäppäimillä ohjattaessa toisin kuin omani.

Milu [12.12.2004 12:12:57]

#

Onko tää nyt tehty alusta asti vähä väärin.
Tarkoitus olisi, että List2:een aukeaisi kaikki tiedostot jossa on tiedostopäätteenä numero ja ne tulisivat sinne numerojärjestykseen ei aakkos, sitten kerran hiiren oikealla näppäimella klikkaamalla kysyy poistetaanko tiedosto vai ei.
Nyt toimii sillein, että täytyy ekana vasemalla valita ja sitten vasta oikealla poisto jollon tiedosto muuttuja saa tiedoston nimen muuttujaan.

Sit vielä se hakemistot auki yhdellä klikkauksella.

Miten tota koodia täytyy muuttaa?

_____________________________
Private Sub Form_Load()
File1.Pattern = ("*.0*;*.1*;*.2*;*.3*;*.4*;*.5*;*.6*;*.7*;*.8*;*.9*")
End Sub
______________________________

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
___________________________

Private Sub Dir1_Change()
Dim i As Integer
List2.Clear: List1.Clear
File1.Path = Dir1.Path
For i = 0 To File1.ListCount - 1
List1.AddItem Right(File1.List(i), 3)
List2.AddItem File1.List(i), List1.NewIndex
Next i
End Sub
__________________________________________
Private Sub List2_Click()
tiedostonimi = File1.Path & "\" & List2
End Sub
__________________________________________________

Private Sub list2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then poista
End Sub
______________________________________________________

Private Sub poista()
Dim arvo As Integer
arvo = MsgBox(tiedostonimi, 4, "Poistetaako tiedosto: ? ")
If arvo = 6 Then Kill tiedostonimi: File1.Refresh
End Sub
______________________________________

Mod. Edit: Kooditagit

sqwiik [12.12.2004 15:04:52]

#

Koeta tehdä rekursiivinen kutsu tuonne list2:n mousedown-subbiin siten, että kun klikataan oikealla napilla niin lähetetään ensin klikkaus vasemmalla. Tiedä sitten toimiiko...

Private Sub list2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
  List2_Click
  poista
end if
End Sub

Milu [15.12.2004 12:01:38]

#

Dir1.Path = Dir1.List(Dir1.ListIndex)

juu toi on hyvä, mut tuo List2_Click ei kyllä mulla ainakaan toiminnut, olisko siihen muuta keinoa?


Sivun alkuun

Vastaus

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

Tietoa sivustosta