Autore Topic: COME PARTIRE?  (Letto 5367 volte)

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 960
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #30 il: 17 Ottobre 2013, 00:09:55 »
Errata corrige, le ultime 2 righe che ho messo sopra vanno scritte così:

Codice: [Seleziona]
fiches[fiches.max].x = Last.x + CInt(Rnd(0, .width - fiches[fiches.max].width))
fiches[fiches.max].y = Last.y + CInt(Rnd(0, .height - fiches[fiches.max].height))

Com'erano scritte prima ti mandava fuori dalla control su cui droppavi.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #31 il: 18 Ottobre 2013, 21:38:09 »
 :ciao:
scusate,sono stato un po' preso :)
Grazie Top Fuel, il tuo suggerimento mi è servito a capire una cosa che non mi era chiara.

Per Vuott
Citazione
Codice: gambas [Seleziona]
    Public Sub PictureBox1_MouseDrag()  
     
     If Mouse.Left Then 
       Drag.Icon = Last.Picture 
       Last.Drag(Last.Picture.Image) 
     Endif 
     
    End 
     
     
    Public Sub TreeView1_Drop() 
     
      PictureBox7.Picture = Drag.Data.Picture 
     
    End 
     
     
    Public Sub ScrollView3_Drop() 
     
       PictureBox7.Picture = Drag.Data.Picture 
       
    End 

Perfetto, funziona, ma non riesco a mettere l'icona in un punto con coordinate x e y provenienti da Mouse.X e Mouse.Y.
Sembra che all'atto del evento drop questi parametri non vengano rilevati e quindi l'icona si allinea allo ScrollView o come ho fatto io al DrawingArea secondo quanto impostato nell'IDE (centered, left, ecc.)
Ho provato allora a rilevare la posizione del mouse all'atto del drag dell'icona, ma il risultato è stato disastroso.
Premetto che come suggerito da splugenbrau ho posto Cached=True.
 :'( :hard:

 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #32 il: 18 Ottobre 2013, 23:07:25 »
....  ma non riesco a mettere l'icona in un punto con coordinate x e y provenienti da Mouse.X e Mouse.Y.
Sembra che all'atto del evento drop questi parametri non vengano rilevati e quindi l'icona si allinea allo ScrollView o come ho fatto io al DrawingArea secondo quanto impostato nell'IDE (centered, left, ecc.)
Gambas ha una gestione degli eventi tutta sua. Potrebbe perciò darsi che il tuo codice venga eseguito prima di una possibile procedura di settaggio propria di Gambas, per cui potresti vedere nulla la tua impostazione di coordinate.
Sconosco le tecniche Drag & Drop, perciò ti posso aiutare molto poco, però, al posto tuo metterei dei breakpoint in determinati punti del programma per rilevare in quei punti le coordinate X,Y del puntatore "mouse". Se necessario, aggiungerei anche delle righe di print. Potrebbe anche tornare comodo l'uso temporaneo di eventi che potrebbero essere attivati ugualmente, per capire quali e con quale sequenza si manifestino. Tutto ciò per apportare le modifiche opportune e neile procedure corrette del programma.
Ora, per sostenere più energicamente la tua prossima prova, posso solo incrociare le dita.  :D
 :ciao:
:ciao:

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #33 il: 19 Ottobre 2013, 16:48:42 »
 :) :) :)
Grazie Picavbg!
In parte le prove che mi hai suggerito le ho fatte e il risultato che ho ottenuto mi ha portato alle tue stesse considerazioni (le mie obiettivamente erano un po' meno raffinate!) :D

Cerco l'ispirazione  ..vado a tagliare un po' di legna!  :D

 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #34 il: 20 Ottobre 2013, 00:09:13 »
Ho fatto qualche prova, ed ho visto che le coordinate del puntatore del mouse restituite con l'evento _Drop() non sono risultate coerenti con la posizione del puntatore medesimo all'interno dell'oggetto nel momento in cui viene sollevato quell'evento

Su un Form pongo una ScrollView ed una PictureBox, nella quale è presente l'immagine che trascinerò poi con il mouse all'interno della ScrollView.

Codice: gambas [Seleziona]

Public Sub Form_Open()

  ScrollView1.Drop = True

End


Public Sub PictureBox1_MouseDrag()
  
  If Mouse.Left Then    
    Drag.Icon = Last.Picture    
    Last.Drag(Last.Picture.Image)  
  Endif
  
End


Public Sub ScrollView1_Drop()

  Dim pb As PictureBox

  
' Poiché la "ScrollView" non è in grado di supportare in modo autonomo un'immagine,
' allora creo una "PictureBox" all'interno della "ScrollView" all'atto del "_Drop()" .
' Le assegno coordinate del puntatore del mouse, immagine prelevata e trascinata
' con il mouse, e le medesime dimensioni della predetta immagine trascinata e rilasciata:
    With pb = New PictureBox(ScrollView1)
      .X = Mouse.X
      .Y = Mouse.Y
      .Picture = Drag.Data.Picture
      .W = Drag.Data.Picture.W
      .H = Drag.Data.Picture.H
    End With
  
  
' Per curiosità vedo in console le coordinate "stranissime"
' del mouse riportate nel caso dell'evento "_Drop()":
    With Mouse
      Print .X
      Print .Y
    End With
  
End



« Ultima modifica: 20 Ottobre 2013, 18:24:30 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #35 il: 20 Ottobre 2013, 08:06:13 »
Forse vi conviene utilizzare le coordinate del mouse riferite allo schermo con screen.mousex ,  mouse.x mi pare che sia relativo al contenitore

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #36 il: 20 Ottobre 2013, 10:11:53 »
 :ciao:

VUOTT
Citazione
Ho fatto qualche prova, ed ho visto che le coordinate del puntatore del mouse restituite con l'evento _Drop() non sono risultate coerenti con la posizione del puntatore medesimo all'interno dell'oggetto nel momento in cui viene sollevato quell'evento
Ho avuto la stessa sensazione e le prove che ho fatto nei giorni scorsi mi hanno dato risultati identici ai tuoi!  :hard:

FSURFING
Citazione
Forse vi conviene utilizzare le coordinate del mouse riferite allo schermo con screen.mousex ,  mouse.x mi pare che sia relativo al contenitore
Le coordinate Mouse.Sreen.X e Mouse.Screen.Y danno le coordinate relative allo schermo mentre Mouse.X e Mouse.Y danno coordinate relative alla finestra nella quale si "svolge" l'evento (se esci dalla finestra diventano negative).

Preso dallo sconforto ho già provato anche quelle :D
 :'( :'( :'(
« Ultima modifica: 20 Ottobre 2013, 10:13:31 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #37 il: 20 Ottobre 2013, 14:19:22 »
Ho posto la questione nella Mailing List ufficiale. Se è un bug, dovrà essere risolto. 
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #38 il: 20 Ottobre 2013, 18:00:44 »
 :ok:

GRAZIE!
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #39 il: 21 Ottobre 2013, 18:57:37 »
Ho effettuato un ulteriore controllo: attualmente, nel momento in cui si inizia a trascinare l'immagine da dragare, vengono memorizzate anche le coordinate X  ed  Y del puntatore del mouse relative al contenitore (nell'esempio precedente la PictureBox) che contiene l'immagine da dragare.

Poi, nel momento in cui avviene il rilascio, e dunque viene sollevato l'evento del _Drop() all'interno di un altro contenitore (nell'esempio precedente la ScrollView), l'oggetto trascinato viene rilasciato non alle coordinate nelle quali si trova in quel momento il puntatore del mouse, bensì alle coordinate memorizzate precedentemente all'atto dell'inizio del trascinamento.

A me, in particolare, v'è comunque un leggero sfasamento dei valori delle coordinate all'atto dell'evento del _Drop() rispetto a quelle memorizzate nel momento dell'inizio del trascinamento, e per la precisione: X - 8  e  Y + 2.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 960
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #40 il: 21 Ottobre 2013, 23:28:14 »
In effetti c'è qualcosa che non quadra con le coordinate del mouse.
Ho provato a modificare le linee sopra in questa maniera:

Codice: [Seleziona]
fiches[fiches.max].x = Last.x + Mouse.X 
fiches[fiches.max].y = Last.y + Mouse.y
Print Mouse.X
Print Mouse.Y

Droppa in un punto differente da dove mollo, pur restando all'interno della Label, e mi riporta delle coordinate che poco c'entrano con la posizione effettiva dove ho droppato.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #41 il: 21 Ottobre 2013, 23:33:01 »
Droppa in un punto differente da dove mollo, pur restando all'interno della Label, e mi riporta delle coordinate che poco c'entrano con la posizione effettiva dove ho droppato.

Sì. Come ho già descritto, l'oggetto viene rilasciato alle coordinate nelle quali il mouse si trovava (nell'altro contenitore) all'atto dell'inizio del trascinamento dell'immagine.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 960
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #42 il: 21 Ottobre 2013, 23:45:04 »
A me succede una cosa differente: mi droppa all'interno della label, ma con dei valori di Mouse.x e .y che non hanno niente a che fare con la posizione originale delle fiches.
Per farti un esempio, quella da 100€ nel form è posizionata alle coordinate x=898 e y=455, nella label invece viene messa in coordinate per. es. 44, 32, 23, 33... ogni volta differenti ma sempre in quella zona della label.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #43 il: 21 Ottobre 2013, 23:57:27 »
quella da 100€ nel form è posizionata alle coordinate x=898 e y=455, nella label invece viene messa in coordinate per. es. 44, 32, 23, 33... ogni volta differenti ma sempre in quella zona della label.

Suppongo che l'immagine della fiche sia posta in una PictureBox; e che tale PictureBox (contenente l'immagine) è posta alle coordinate x=898 e y=455 all'interno del suo contenitore (Form ? Panel ? Altro ?).

 Tu dunque, quando vai a cliccare per trascinare quell'immagine, clicchi alle coordinate 44, 32, etc.., ma all'interno della PictureBox e non del contenitore della PictureBox.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 960
    • Mostra profilo
Re: COME PARTIRE?
« Risposta #44 il: 22 Ottobre 2013, 00:22:26 »
Le fiches sono delle picturebox contenute all'interno del form principale, mentre le label sono all'interno di un panel, io droppo le picturebox sulle label, non importa dove le droppo, me le mette sempre più o meno nello stesso posto dentro la label.
Se invece le posiziono usando delle coordinate casuali questo problema non c'è.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.