Newsgroup: it.comp.lang.visual-basic
Titolo: Drag and Drop in FlexGrid

I have to create a Drag and Drop method in Flexgrid, from a row to another.
How can I do it?

 another. How can I do it?
hi, massimo.
can you translate your post in italian?
this is an italian newsgroup.... :-)
--
Salutoni
Sergio

Devo creare un metodo Drag and Drop per cambiare l'ordine di due righe di
una flexgrid. Come posso fare?

 How can I do it?
Massimo (no, non credo che si possa fare D&D fra righe della Flex),
normalmente rispondiamo che questo NG va inteso come ITalian e non come
Information Technology.
A te, visto nome e cognome, dobbiamo dire la stessa cosa? ;-)

 another. How can I do it?
Sono spiacente per non aver mandato il messaggio iniziale in Italiano.


Massimo Schinardi wrote:



In modo molto semplice e senza i controlli del caso
Nell'evento nomeFlex_MouseDown
nomeFlex.DragRow nomeFlex.Row
Quando finisce il Drag  vengono processati gli eventi 
BeforeMoveRow AfterMoveRow
per esempio se aggiungi nell'evento nomeFlex_BeforeMoveRow
Row = Position
il gioco è fatto.;)
Ciao
Alessandro
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 una flexgrid. Come posso fare?
Ad esempio:
'nota: necessaria una picturebox e una flexgrid.
'puoi rendere più elegante il drag drop sfruttando le Api
'per bloccare il movimento del mouse durante il drag drop
'al solo movimento verticale.
'Puoi fare in modo che avvicinandoti ad un bordo (superiore o
'inferiore ) la flexgrid scrolli cambiando il valore della toprow
'ma le succitate meraviglie grafiche le lascio a qualcun altro...
'Ciao!!
Option Explicit
Private Sub Form_Load()
'some rows and cols
MSFlexGrid1.Rows = 15
MSFlexGrid1.Cols = 5
Picture1.Width = MSFlexGrid1.Width - 50 'you can do better, here,
calculating width of visible columns
Picture1.Height = MSFlexGrid1.RowHeight(0)
Picture1.Visible = False
'add some data...
 Dim intCounter As Integer
For intCounter = 0 To MSFlexGrid1.Cols - 1
   MSFlexGrid1.TextMatrix(2, intCounter) = intCounter
   MSFlexGrid1.TextMatrix(4, intCounter) = intCounter + 5
Next
End Sub
Private Sub MSFlexGrid1_DragDrop(Source As Control, x As Single, y As
Single)
Dim tmpVal As String
Dim intCounter As Integer
' MSFlexGrid1.Row= starting row
'calculate actual row:
Dim theRow As Long
theRow = y \ MSFlexGrid1.RowHeight(0) + (MSFlexGrid1.TopRow - 1)
'switch the rows:
For intCounter = 0 To MSFlexGrid1.Cols - 1
   'save a row
   tmpVal = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, intCounter)
   'switch
   MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, intCounter) =
MSFlexGrid1.TextMatrix(theRow, intCounter)
   'switch
   MSFlexGrid1.TextMatrix(theRow, intCounter) = tmpVal
Next
End Sub
Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x
As Single, y As Single)
If Button = vbLeftButton Then
   Picture1.Left = MSFlexGrid1.Left
   Picture1.Top = y
   Picture1.Drag
End If
End Sub
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Alessandro
il gioco è fatto se hai un controllo VSFLEXGRID 7.0 (scusami)
Vediamo se riesco a farmi perdonare :(niente controlli su mouserow)
Public Rowi As Integer
Public aaa As String
Private Sub Form_Load()
  msflexgrid1.rows=3
  MSFlexGrid1.Col = 1
  MSFlexGrid1.Row = 1
  MSFlexGrid1.Text = "1"
  MSFlexGrid1.Row = 2
  MSFlexGrid1.Text = "2"
  MSFlexGrid1.AllowBigSelection = False
End Sub
Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x
As Single, y As Single)
 Clipboard.Clear
 Clipboard.SetText MSFlexGrid1.TextMatrix(MSFlexGrid1.MouseRow, 1)
 MSFlexGrid1.TextMatrix(MSFlexGrid1.MouseRow, 1) = ""
 Rowi = MSFlexGrid1.MouseRow
 aaa = Clipboard.GetText
End Sub
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift As Integer, x As
Single, y As Single)
 Clipboard.Clear
 Clipboard.SetText MSFlexGrid1.TextMatrix
(MSFlexGrid1.MouseRow,MSFlexGrid1.MouseCol)
 MSFlexGrid1.TextMatrix(MSFlexGrid1.MouseRow, MSFlexGrid1.MouseCol) = aaa
 MSFlexGrid1.TextMatrix(Rowi, 1) = Clipboard.GetText
End Sub
Per provare l'esempio crea un nuovo progetto exe standard e inserisci una
msflexgrid.
Copia il codice qui sopra e il gioco è rifatto
