Oppure

Loading
20/01/13 20:37
visualrenzo
ho scritto questo codice , voglio che quando premo i tasti del mouse succedano degli eventi, in questo caso venga caricata una foto.
Se non metto il call carica funziona sempre anche 1000 volte, nel momento in cui aggiungo la call ad esempio nel case 1 mi passa solo una volta e poi da qui il programma non ci passa più.
Dove sbaglio ?


'Tasti del mouse
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Button
Case 1
Call Carica
'MsgBox "Pressed the LEFT key"

'Image1 = LoadPicture(App.Path & "\Testi\" & "26 gennaio 2013.JPG";)
Case 2
MsgBox "Pressed the RIGHT key"
Case 4
MsgBox "Pressed the MIDDLE key"

End Select
End Sub

Private Sub Carica()
NomeDir = (App.Path & "\Testi\*.jpg";)
' NomeDir = "C:\*.jpg"
Y = Dir(NomeDir)
indice = 0
X = InStrRev(NomeDir, "\", Len(NomeDir), vbTextCompare)
NomeDirP = Mid(NomeDir, 1, X)
Do Until Y = ""
Image1.Picture = LoadPicture(NomeDirP & Y)
indice = indice + 1
Y = Dir
Loop
End Sub

aaa
20/01/13 20:50
nessuno
Scusa ma che vuol dire

Postato originariamente da visualrenzo:
Se non metto il call carica funziona sempre anche 1000 volte, nel momento in cui aggiungo la call ad esempio nel case 1 mi passa solo una volta e poi da qui il programma non ci passa più.


??
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
21/01/13 17:00
visualrenzo
Se incolli il codice in un form vuoto, vedi che funziona, cioè alla pressione del tasto sx del mouse, mi va a caricare la foto, dal percorso che gli ho dato.

Da questa parte del programma però ci passa solo la prima volta, cioè dopo che ho caricato la foto e premo ancora il tasto sx del mouse non succede niente perchè il programma non intercetta più la pressione dei tasti del mouse.


Se invece tolgo la call Carica del case 1 vedi di seguito )

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Button
Case 1
Call Carica <--------- QUESTA

il programma funziona correttamente cioè ogni volta che premo i pulsanti del mouse intercetta la pressione del bottone e mi scrive il msgbox.

Sono stato un po' più chiaro ?

Ciao



aaa
21/01/13 22:13
nessuno
Ora è più chiaro ...

Considera che quella funzione "Carica" esegue un compito molto pesante (e anche inutile) se le immagini nella cartella sono tante. E quindi il programma ti sembra "bloccato" per un po', ma al termine del loop, funziona.

Dico che è inutile perché non si capisce perché tu carichi nella stessa Image varie immagini una dopo l'altra.

Per capire meglio, inserisci dopo la

Image1.Picture = LoadPicture(NomeDirP & Y)

una

DoEvents
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
22/01/13 16:46
visualrenzo
ho capito che succede.
il programma non è fermo, ma se io sono fermo col mouse sulla foto che ho caricato ( solo una), non passa più dalla routine Form_MouseDown , ma se io metto il puntatore del mouse fuori dalla foto caricata quindi sul form, passa di nuovo dalla routine.
Cosa molto strana.

a questo punto devo trovare un' istruzione che dica al cursore di posizionarsi in un angolo tipo (x,Y)= a 0 subito dopo ogni volta che carico una nuova foto.

Ci sarà un modo spero ?

Grazie dell 'aiuto.

aaa
22/01/13 18:06
nessuno
Postato originariamente da visualrenzo:

ma se io metto il puntatore del mouse fuori dalla foto caricata quindi sul form, passa di nuovo dalla routine.
Cosa molto strana.


E perché è strana, scusa ? L'evento si riferisce al Form quindi non scatta se agisci sulla Picture.

Utilizza l'evento della Picture ...
Ultima modifica effettuata da nessuno 22/01/13 18:07
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
22/01/13 18:13
visualrenzo
proverò, hai ragione .
aaa