Gambas-it

Gambas3 => Programmazione => Topic aperto da: kicco - 25 Settembre 2013, 13:04:14

Titolo: COME PARTIRE?
Inserito da: kicco - 25 Settembre 2013, 13:04:14
 :ciao:
Ho l'esigenza di scrivere un programma  di tipo sinottico col quale possa caricare un'immagine che rappresenta una mappa.

Su questa mappa  posizionare degli elementi (oggetti) che ho definito e che hanno delle proprietà.

Dopo aver posizionato gli oggetti, passare in un form nel quale posso vedere lo stato degli oggetti (proprietà) ma non modificarne la posizione.

Faccio un semplice esempio: :)
Siamo in un campo scout, nel form Config carico la mappa dell'accampamento e posiziono le tende che possono essere canadesi o di tipo igloo.
Definisco che la tenda può avere la luce accesa o spenta e se ha rifornimento di acqua.

Ora in un nuovo form, posso verificare lo stato della luce e dell'acqua per ogni tenda senza modificare mappa, tipo di tenda e posizione di queste ultime.

La configurazione devo poterla cambiare senza toccare il codice. :D

Avete idee da suggerirmi o esempi?
 :)  :ciao:
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 26 Settembre 2013, 20:45:58
Ora in un nuovo form, posso verificare lo stato della luce e dell'acqua per ogni tenda senza modificare mappa, tipo di tenda e posizione di queste ultime.

...non comprendo la difficoltà di fare ciò.    :-\



La configurazione devo poterla cambiare senza toccare il codice.
Scusa, ma non capisco cosa intendi dire precisamente con: "senza toccare il codice". E poi riguardo alla configurazione, si riferisce al solo posizionamento delle tende ed allo stato della luce e dell'acqua, o anche ad altro ?
Titolo: Re: COME PARTIRE?
Inserito da: fsurfing - 26 Settembre 2013, 21:13:48
il metodo migliore è utilizzare una classe apposita che definisce la tenda e le sue caratteristiche
Titolo: Re: COME PARTIRE?
Inserito da: splugenbrau - 27 Settembre 2013, 14:48:13
Ciao fsurfing, vuott, kicco,
forse si può partire da:
http://www.gambas-it.org/smf/index.php?topic=2978.0
http://whiteislandsoftware.com/index.php?page=catalogues&type=entry&id=demo-software%2Fisometric-projection
concessa con GPL3...
l'anteprima ricorda un pò Patrician III.
Vedete un pò.
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 28 Settembre 2013, 08:41:45
 :ciao:, grazie per le risposte.

inizio con furfing:
Citazione
il metodo migliore è utilizzare una classe apposita che definisce la tenda e le sue caratteristiche
Sì, credo sia la giusta scelta! :)

Vuott:
Citazione
Ora in un nuovo form, posso verificare lo stato della luce e dell'acqua per ogni tenda senza modificare mappa, tipo di tenda e posizione di queste ultime.

...non comprendo la difficoltà di fare ciò.     :-\
Magari mi sto perdendo in un bicchier d'acqua! Avere un pannello di organizzazione dell'accampameto dove posso mettere nuove tende o toglierne e un'altro dove possa tenere sotto controllo lo stato dell'accampamento, mi fa pensare di dover definire in un form, posizioni, caratteristiche tenda, ecc. per poi passarle ad un altro non mi sembra tanto facile, oppure mi sto complicando la vita?

Citazione
La configurazione devo poterla cambiare senza toccare il codice.
Intendo che l'inserimento o la asportazione di una tenda dall'accampamento deve avvenire non modificando il sorgente.

Citazione
... E poi riguardo alla configurazione, si riferisce al solo posizionamento delle tende ed allo stato della luce e dell'acqua, o anche ad altro ?
anche allo stato della luce e dell'acqua e anche ad altro!  :) (vuoi farmeli rimanere assetati questi boy and girl scout!)

 :ciao:
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 28 Settembre 2013, 12:12:46
...dover definire in un form, posizioni, caratteristiche tenda, ecc. per poi passarle ad un altro non mi sembra tanto facile, oppure mi sto complicando la vita?


Una finestra a parte, dove poter gestire e controllare con i vari oggetti disponbili quei vari elementi (tende, acqua, etc), puoi crearla o con la Classe specifica Form, oppure con la Classe Window:
http://www.gambas-it.org/wiki/index.php?title=Creare_un_Form_mediante_la_Classe_Window

tenendo conto che gli oggetti: Form e Window appartengono alla medesima categoria.
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 28 Settembre 2013, 20:52:47
Grazie,
gli do un'occhiata! :)
 :ciao:
Titolo: Re: COME PARTIRE?
Inserito da: allegfede - 03 Ottobre 2013, 13:13:23
puoi usare un database leggero tipo sqlite (e' un file di testo), che tiene traccia delle proprieta' dei singoli record (la singola tenda).

fai doppio sull'oggetto grafico tenda (che posizioni rispetto ad un riferimento x-y .... se vuoi esagerare usi le coordinate gps) ed apri un form in pop-up con un "report" della tenda (eventualmente editabile).

la cosa piu' impegantiva penso sia caricare la "foto", calibrarla ai riferiemnti gps (sempre se vuoi esagerare) e poi posizionare le tende che hai in archivio (o aggiungerne o toglierne), magari con il drag and drop sull'iconcina :D

Titolo: Re: COME PARTIRE?
Inserito da: kicco - 03 Ottobre 2013, 13:23:44
 :ciao:
grazie per i suggerimenti, anche se accampamento tende e boyscout ricordo che sono solo un esempio :)

Sto ancora cercando di capire quale possa essere una possibile strada.
Molti degli elementi sia Qt che GTK non li ho mai usati e quindi molte possibilità mi sono ancora oscure!

Continuo l'esplorazione!

 :ciao:
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 13 Ottobre 2013, 15:36:44
 :ciao:

Sempre su questo tema, sto cercando di impostare la mappa su un scollview.
Per poter mettere le "tende" sul campo impiego una icona che poi sarà posta in un Vpanel (come l'esempio DragNDrop negli esempi di gambas).
Il mio problema è che dopo il drag, non riesco a capire come fare il drop nella scroll view.
Codice: gambas [Seleziona]

' Gambas class file

Public Sub _new()

End

Public Sub Form_Open()
Me.center
End

'
Public Sub PictureBox1_MouseDown()

         Drag.icon = Last.picture       '
         Last.drag(Last.picture.image)
     Endif      

End

Public Sub ScrollView1_DragMove()  

     Drag.show(ScrollView1, ScrollView1.X, ScrollView1.Y)
  
End

Public Sub ScrollView1_Drop()      

    ??? E ' qui che casca l'asino!!!

     Endif

    
End



Grazie :)
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 13 Ottobre 2013, 17:19:56
.... una icona che poi sarà posta in un Vpanel (come l'esempio DragNDrop negli esempi di gambas).
Il mio problema è che dopo il drag, non riesco a capire come fare il drop nella scroll view.


L'oggetto VPanel che riceverà l'icona è posto nella ScrollView ?
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 13 Ottobre 2013, 17:31:21
 :ciao:
ScrollView!
 :)
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 13 Ottobre 2013, 18:07:21
ScrollView!


E' una conferma alla mia domanda ?

Allora: l'oggetto VPanel non è in grado di ricevere direttamente una Picture: non mi pare abbia una risorsa adatta per caricare immagini. Quindi dovrai porre tale immagine, suppongo, in una PictureBox.
L'oggetto Vpanel sarà posto all'interno della ScrollView ?
Inoltre, tu vuoi che dovunque sia fatto il _Drop() all'interno della ScrollView, venga caricata l'immagine nella PictureBox posta a sua volta nel VPanel ?
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 13 Ottobre 2013, 18:14:44
 :ciao:
ho una icona che sta in un Vpanel insiema ad altre icone.
Vorrei poterla trascinare sopra una cartina geografica che penso di mettere in uno ScrollView.
Al momento col codice che ho postato sopra riesco a prenderla e a trascianrla nello ScrollView, ma non capisco come fare il Drop.

Forse così è più chiaro!
 :)
PS Il Vpannel è esterno allo Scrollview.
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 13 Ottobre 2013, 18:17:47
Forse così è più chiaro!

Ora per me è più chiara la domanda.
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 13 Ottobre 2013, 19:16:54
Sono partito dall'esempio DragNDrop 3.2.0. L'ho modificato, riducendo il codice all'essenziale ed aggiungendo una ScrollView. Nella ScrollView ho posto, poi, una PictureBox7.
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


Dunque, prendendo un'immagine, posta nel pannello laterale destro (è rimasto identico all'esempio originale), e, dopo averla trascinata, la rilascio all'interno della TreeView1, l'immagine viene mostrata nella nuova PictureBox7 (posta nella ScrollView).
Se, invece, la rilascio all'interno della ScrollView, non accade niente.
Attualmente, non so il perché.
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 13 Ottobre 2013, 19:21:52
Grazie Vuott
anch'io nelle mie modeste e confusionarie prove ho avuto lo stesso problema!

intanto provo il tuo codice! :)
 :ciao:
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 13 Ottobre 2013, 19:26:27
Se, invece, la rilascio all'interno della ScrollView, non accade niente.
Attualmente, non so il perché.

Allora, kikko: svelato l'arcano !

La proprietà .Drop dell'oggetto, che deve sollevare l'evento _Drop(), deve essere posta a True !

Quindi il codice di sopra diventa (tenendo conto che la proprietà .Drop dell'oggetto TreeView1 dell'esempio originario DragNDrop 3.2.0 era nell'Ide già posta a True ):
Codice: gambas [Seleziona]

Public Sub Form_Open()

   ScrollView3.Drop = True

End


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  
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 13 Ottobre 2013, 21:09:35
 :ok:
 :)
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 13 Ottobre 2013, 21:27:23
Vuott
ma sai che non va, fa il drag ma non il drop, non capisco cosa sbaglio!
Non droppa sia nello ScrollView che nel TreeView :'(
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 13 Ottobre 2013, 23:40:18
Non droppa sia nello ScrollView che nel TreeView


Innanzitutto, devo precisare che anche la proprietà .Drop dell'oggetto TreeView deve essere posta  ovviamente a .True.


Mah.... è strano che non funzioni...

Fai questa semplice prova:
* su un Form poni un oggetto VPanel, nel quale poni tre PictureBox. Nell'IDE - per fare prima - assegni a ciascuna di queste PictureBox il medesimo nome di Gruppo (ad esempio: pb). Quindi assegni ancora a ciascuna di esse una diversa immagine.
* sul Form poni anche un oggetto ScrollView, nel quale poni una sola PictureBox (che così avrà il nome PictureBox4).
* infine dai il seguente codice all'applicativo-prova:
Codice: gambas [Seleziona]

Public Sub Form_Open()

  ScrollView1.Drop = True

End


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

Public Sub ScrollView1_Drop()
  
   PictureBox4.Picture = Drag.Data.Picture
  
End

Questo è sostanzialmente il codice essenziale per generare un completo evento Drag-Drop
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 14 Ottobre 2013, 11:50:35
 :)
Grazie Vuott,
adesso funziona, devo ora trovare il modo di mettere l'icona dove voglio sul PictureBox4 perchè adesso si droppa allineandosi secondo ciò che c'è nel campo Alignment nell'IDE
 :ciao:
Titolo: Re: COME PARTIRE?
Inserito da: Top Fuel - 15 Ottobre 2013, 17:46:13
Nel mio progettino che simula la roulette nell'evento drop del tavolo di gioco per posizionare le fiches sul numero scelto in posizione casuale ma senza uscire ho fatto così:

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

Magari può esserti d'aiuto. :)
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 16 Ottobre 2013, 11:06:37
 :ciao:
grazie Top Fuel,
immagino però che le tue fiches finiscano su una griglia, mentre io devo di fatto, sovrapporre ad una cartina geografica delle immagini (icone?) che indichino la posizione delle tende scout.

Sto valutando se il componente gb.image possa aiutarmi perchè usando drawarea o pictureBox non ho cavato un ragno dal buco.

Ho anche cercato nelle applicazioni sia d'esempio che nell'area download, ma senza risultato.
D'altra parte mi sembra interessante capire come fare questo gioco perchè ne vedo molte applicazioni possibili oltre alla gestione del campo scout!
 :)
Titolo: Re: COME PARTIRE?
Inserito da: splugenbrau - 16 Ottobre 2013, 11:35:30
Ciao kicco, Top Fuel, vuott,
quando ho impiegato gli oggetti e metodi e proprietà riguardo
a DrawingArea, Picture e Image
sembrava non funzionare niente finchè non ho
settato la proprietà Cached=True.
..se può essere d'aiuto. Ciao.
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 16 Ottobre 2013, 12:34:07
Ciao splugenbrau,
qui tutto è d'aiuto!
 :)
Titolo: Re: COME PARTIRE?
Inserito da: fsurfing - 16 Ottobre 2013, 13:18:55
a mio parere la cos amigliore è utilizzare un drawing area , io con questo componente ho realizzato di tutto,

se vuoi un esempio prova a vederti i sorgenti di chiama uno  http://www.tutto-opensource.org/chiamauno.html (http://www.tutto-opensource.org/chiamauno.html) (sono per g2 ma credo che la conversione in g3 non presenti grossi problemi) magari trovi qualche dritta
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 16 Ottobre 2013, 18:08:07
 :)
Grazie fsurfing,
sto dando un'occhiata.
 :ciao:
Titolo: Re: COME PARTIRE?
Inserito da: Top Fuel - 16 Ottobre 2013, 22:32:14
:ciao:
grazie Top Fuel,
immagino però che le tue fiches finiscano su una griglia, mentre io devo di fatto, sovrapporre ad una cartina geografica delle immagini (icone?) che indichino la posizione delle tende scout.

No, finiscono su delle Label dentro in un Panel.
Titolo: Re: COME PARTIRE?
Inserito da: fsurfing - 16 Ottobre 2013, 22:37:15
Citazione
Grazie fsurfing,
sto dando un'occhiata.
tieni presente che essendo un progetto per g2 , utilizza i metodi draw, in g3 poui anche utilizzare i metodi paint che ti permettono di utilizzare le trasparenze , quardati l' esempio  painting di gamas3 per utilizzare paint
Titolo: Re: COME PARTIRE?
Inserito da: Top Fuel - 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.
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 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:
Titolo: Re: COME PARTIRE?
Inserito da: Picavbg - 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:
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 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:
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 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



Titolo: Re: COME PARTIRE?
Inserito da: fsurfing - 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
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 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
 :'( :'( :'(
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 20 Ottobre 2013, 14:19:22
Ho posto la questione nella Mailing List ufficiale. Se è un bug, dovrà essere risolto. 
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 20 Ottobre 2013, 18:00:44
 :ok:

GRAZIE!
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 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.
Titolo: Re: COME PARTIRE?
Inserito da: Top Fuel - 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.
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 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.
Titolo: Re: COME PARTIRE?
Inserito da: Top Fuel - 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.
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 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.
Titolo: Re: COME PARTIRE?
Inserito da: Top Fuel - 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'è.
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 22 Ottobre 2013, 14:59:21
Ho posto la questione nella Mailing List ufficiale. Se è un bug, dovrà essere risolto. 

Abbiamo dunque ottenuto la risposta da Minisini, che riporto integralmente di seguito:

" You must use Drag.X and Drag.Y to get the coordinates of the drop, not
Mouse.X and Mouse.Y that have no good meaning inside a drop event.

Regards,

--
Benoît Minisini
"
Titolo: Re: COME PARTIRE?
Inserito da: Top Fuel - 22 Ottobre 2013, 15:26:09
Ci si poteva arrivare da soli... :bad:
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 22 Ottobre 2013, 17:17:33
Ci si poteva arrivare da soli...

Hai perfettamente ragione !
Abbiamo fatto un po' una figuraccia !
(http://ilquotidianoinclasse.corriere.it/wp-content/uploads/2012/11/4eaae4c3444451c0bb5cbc4cd2b0dc67-300x183.jpg)



Ad ogni modo, come certamente avrai anche tu già testato, richiamando le proprietà .X ed .Y della Classe Drag, tutto funziona perfettamente.



(http://logzero.files.wordpress.com/2010/01/einstein-lavagna.jpg)
Titolo: Re: COME PARTIRE?
Inserito da: Top Fuel - 22 Ottobre 2013, 17:33:14
Controllato adesso, funziona tutto. ;D
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 22 Ottobre 2013, 22:03:13
 :(
Che vergogna, andiamo tutti dietro alla lavagna!

Confermo funziona :)
 :(
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 22 Ottobre 2013, 23:34:42
Be'.... non tutto il male viene per nuocere: abbiamo chiarito alcune cose riguardo al Drag-Drop in questa discussione !  ;D
Titolo: Re: COME PARTIRE?
Inserito da: md9327 - 23 Ottobre 2013, 12:17:14
Be'.... non tutto il male viene per nuocere: abbiamo chiarito alcune cose riguardo al Drag-Drop in questa discussione !  ;D
In ogni caso, prendo in prestito l'immagine di einstein, può essere che ogni tanto sia il caso di mostrarla...  ;D

Scherzi a parte, vorrei introdurmi a mò di missile in questa discussione, cercando di capire il motivo per cui molti non provano le cose, come se quelle istruzioni siano il lupo mannaro e che gli morda il picciolino... Al massimo, se un'istruzione non và, blocca il programma, e dato che mediamente si agisce all'interno dell'ide di gambas, è molto difficile che vi esploda il pc in faccia, solo per non aver usato quella o altra istruzione.
Posso capire, ed è auspicabile che avvenga, che uno incontri un problema legato ad un bug, usando proprio l'istruzione peccaminosa. In questo caso è utile segnalarlo, in modo che venga corretto.
Leggendo quel poco di documentazione che c'è, ma soprattutto leggendosi i sorgenti che ci sono qui nel forum, ma anche in giro, e notando l'esistenza di una classe, io penso che spinti dalla curiosità si vada a vedere cosa la classe propone, e che proprietà ha. Da qui a provarle direttamente non la vedo un'impresa così complicata. Anche sbagliando l'implementazione, al massimo non funziona, ma non uccide donne e bambini...  :D
Come dico sempre e comunque ovunque nei discorsi, provate genete... provate...
Non vi fate male, non è un cacciavita che sfugge di mano e vi si conficca nell'altra, è codice indolore... come diceva un certo Rocky... non fà male... ;D
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 23 Ottobre 2013, 12:51:40

(http://liberthalia.files.wordpress.com/2010/11/col-kurtz.gif?w=450)
Titolo: Re: COME PARTIRE?
Inserito da: Picavbg - 23 Ottobre 2013, 13:04:23
Ciao md9327.

Hai perfettamente ragione. Voglio però spezzare una lancia in favore di chi non ha fatto tutte le prove, ma ... poteva.

A volte il problema che si ha davanti sembra più grosso della propria portata e la sua presenza, già alle prime difficoltà, può sembrare insormontabile. Tutto ciò crea un velo psicomotorio alla mente e non si riescono a vedere altre alternative percorribili oltre quella che c'è davanti ai propri occhi. Aggiungendo a tutto ciò la possibilità che, per  la breve vita vissuta dell'ultima versione, possano affiorare malfunzionamenti prima inesistenti, la fr...
 :D
Bisognerà perciò fare tesoro di questa esperienza e pensare al bug come ultima spiaggia e non come una possibile manifestazione ordinaria durante il test di programmi.
 ;D  :ciao:
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 23 Ottobre 2013, 13:31:29
 :ciao:

md9327
Caziata ed osservazioni sacrosante! :rolleyes:
Chiedo venia appellandomi alle attenuanti per neofiti e per possessori di poco tempo.
Quest'ultima condizione credo di poterla condividere con molti altri miei cospecifici. (intendo Homo sapiens)

Citazione
A volte il problema che si ha davanti sembra più grosso della propria portata e la sua presenza, già alle prime difficoltà, può sembrare insormontabile. Tutto ciò crea un velo psicomotorio alla mente e non si riescono a vedere altre alternative percorribili oltre quella che c'è davanti ai propri occhi.

Sono d'accordo, anche se il termine psicomotorio...  ???

Ciao a tutti anche al mio "consulente" Vuott :)
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 23 Ottobre 2013, 13:39:48
Ciao a tutti anche al mio "consulente" Vuott


(http://thechive.files.wordpress.com/2010/09/13618_003.gif?w=190&h=239)
Titolo: Re: COME PARTIRE?
Inserito da: md9327 - 23 Ottobre 2013, 14:13:48
Ciao a tutti anche al mio "consulente" Vuott


(http://thechive.files.wordpress.com/2010/09/13618_003.gif?w=190&h=239)

Perdonate, non voleva essere proprio una "caziata", ma è più forte di me, dovevo esprimere la cosa...  :P ;D

Al contrario dell'immagine inviata dal caro "vuott" (che dopo vado a picchiare...), ripeto che la programmazione è certamente un esercizio mentale, ma fortunatamente provoca pochi danni (ad eccezione di vuott, che nel suo caso sono stati catastrofici...  ;D ).
Provare, provare e essere curiosi, questo almeno per me è la base dell'approccio verso la programmazione.
E' sottinteso, e ovvio, che il linguaggio in questione può avere dei bachi, se non li avesse comincerei a preoocuparmi ed a inizizre a credere al soprannaturale, e agli asini che volano. Fortunatamente trattasi di un linguaggio che non và ad agire a bassi livelli, per cui il nostro computer è quasi salvo (dico quasi perchè forse vuott ci riuscirebbe con i suoi esperimenti midi... attenzione più alle orecchie...  ;D ). Di danni si potrebbero fare se parlassimo di assembler, ma ad ogni modo avremmo solo cadaveri di dischi e processori, ma nulla di letale a livello umano...  ;D
Se gambas fosse più evoluto, e più carico di funzionalità, avrebbe un elenco di bag e ritorni oltre l'inverosimile. Fortunatamente è costruito basandosi sulla semplicità (anche se non è così vero), per cui gli errori sono limitati.
Quello che porta all'errore, o ad un'errata valutazione degli strumenti che offre, è la scarsa documentazione, ma di questo se ne è discusso svariate volte. Da una parte posso capirlo, perchè l'ambiente è gestito da pochi, e quindi ha meno possibilità di crescita rispetto ad altri linguaggi più noti.
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 23 Ottobre 2013, 15:45:36
(dico quasi perchè forse vuott ci riuscirebbe con i suoi esperimenti midi... attenzione più alle orecchie... 

Esperimenti di Vuott di impianto del protocollo Midi direttamente nel cervello:

(http://images1.wikia.nocookie.net/__cb20130714232747/nonciclopedia/images/8/87/Scienziato_pazzo_opera_al_cervello.jpg)
Titolo: Re: COME PARTIRE?
Inserito da: Picavbg - 23 Ottobre 2013, 17:26:10
Citazione
A volte il problema che si ha davanti sembra più grosso della propria portata e la sua presenza, già alle prime difficoltà, può sembrare insormontabile. Tutto ciò crea un velo psicomotorio alla mente e non si riescono a vedere altre alternative percorribili oltre quella che c'è davanti ai propri occhi.

Sono d'accordo, anche se il termine psicomotorio...  ???

Non che voglia spiegarti il termine, perchè esso va applicato in tutt'altro campo, ma posso illustrare quello che volevo dire in una sola parola: l'attività motoria del programmatore, parte dal movimento della testa, degli occhi, della bocca e continua a scendere fino alle braccia ed alle dita. Non faccio riferimento alle gambe perchè esse non sono interessate, salvo che, in casi assai estremi. per prendere a calci il computer con tutti i suoi accessori.  ;D
Essa è condizionata dai messaggi provenienti dal cervello, influenzato sempre da quanto circonda l'essere umano, comprese le difficoltà e la fretta nel volere risolvere qualsiasi tipo di problema. Ora anche se le mani potrebbero comporre le frasi magiche da trasmettere alla macchina, non possono farlo perchè la mente che le comanda non riesce a sviluppare l'idea da tramutare in movimento. Perchè la mente non vi riesca è da ricercare fra le tante variabili materiali e non che s'intrecciano nella nube che avviluppa l'insieme programmatore-computer.  ;)
Spero di essere riuscito a chiarire il mio concetto sull'applicazione del termine psicomotorio nel mio post precedente. Se non ci fossi riuscito, vuol dire che ho le carte in regola per  entrare nella categoria degli asini.  :D
 :ciao:
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 23 Ottobre 2013, 18:10:19
...ma posso illustrare quello che volevo dire in una sola parola: l'attività motoria del programmatore, parte dal movimento della testa, degli occhi, della bocca e continua a scendere fino alle braccia ed alle dita. Non faccio riferimento alle gambe perchè esse non sono interessate, salvo che, in casi assai estremi. per prendere a calci il computer con tutti i suoi accessori. 

Uhmmmm.... adesso ho effettivamente compreso l'intervento di md9327.
Effettivamente, cari kikko e Top Fuel, dobbiamo stare più attenti quando agitiamo le delicatissime acque della programmazione Gambas: possono accadere effetti collaterali !   :rotfl:
(http://www.100web2.it/uploads/rrrrroll01.gif)
Titolo: Re: COME PARTIRE?
Inserito da: md9327 - 24 Ottobre 2013, 10:35:07
Esatto!!!  ;D

Basta guardarsi in giro qui nel forum, per scoprire queste cose... di esempi ne abbiamo a bizzeffe...  :rotfl:
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 24 Ottobre 2013, 13:26:35
Gasp! :rolleyes:
Titolo: Re: COME PARTIRE?
Inserito da: vuott - 24 Ottobre 2013, 16:18:31
...che sia una recrudescenza del famigerato Virus ?   :'(
Titolo: Re: COME PARTIRE?
Inserito da: md9327 - 24 Ottobre 2013, 16:25:02
Mi sono accorto che questa discussione si è allungata fino a raggiungere le cinque pagine, solo per dire c....

Ma la finiamo?!?  ;D
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 31 Ottobre 2013, 16:13:43
 :ciao:
@Allegfede
Citazione
puoi usare un database leggero tipo sqlite (e' un file di testo), che tiene traccia delle proprieta' dei singoli record

cosa intendi per è un file di testo?

 :)
Titolo: Re: COME PARTIRE?
Inserito da: md9327 - 31 Ottobre 2013, 16:20:23
Credo abbia semplificato un pò troppo il concetto...

SQLite è un db, molto semplice, ma non puoi andarlo a sfrucugliare manualmente, pena la distruzione dello stesso.

E' un motore db che ti permette di gestire dati in maniera semplice, ma con la sintassi sql. Non hai bisogno di installare servizi o altro, perchè trattasi di un solo file che, con apposito client o applicativamente, puoi gestire i dati al suo interno. Ha svariati limti, ma essendo semplice è pure veloce ed è portabile, in quanto lo puoi impacchettare con il tuo programma, e vai...
Titolo: Re: COME PARTIRE?
Inserito da: kicco - 03 Novembre 2013, 11:09:04
 :)
..ah ecco, credevo mi fosse sfuggito qualcosa.
Grazie per la chiarezza!
 :ciao: