Differenze tra le versioni di "Metodo di pseudo indirizzamento ad Oggetti grafici"

Da Gambas-it.org - Wikipedia.
m
 
(15 versioni intermedie di 2 utenti non mostrate)
Riga 7: Riga 7:
  
  
Immagianiamo una data Form contenente due GridView di cui una di esse, la prima o la seconda, non importa quale, è stata caricata con valori diversi in più righe. L'altra Gridview può essere vuota o pure parzialmente riempita. Lo scopo è quello di trasferire, tramite doppio click su ciascuna riga, il contenuto di tutte le caselle, colonna dopo colonna, da una GridView all'altra. Col trasferimento si vuole ottenere infatti una diversa ridistribuzione dei dati presenti nelle GridView, in funzione delle necessità operative dell'utente.
+
Immagianiamo una data Form contenente due GridView di cui una di esse, la prima o la seconda, non importa quale, sia stata caricata con valori diversi in più righe. L'altra Gridview può essere vuota o pure parzialmente riempita. Lo scopo è quello di trasferire, tramite doppio click su ciascuna riga, il contenuto di tutte le caselle, colonna dopo colonna, da una GridView all'altra. Col trasferimento si vuole ottenere infatti una diversa ridistribuzione dei dati presenti nelle GridView, in funzione delle necessità operative dell'utente.
  
 
In Gambas non è possibile puntare all'indirizzo di un oggetto. Esiste però la possibilità di creare una nuova istanza, copiando il contenuto delle due GridView in un array da gestire con appropriati indici.
 
In Gambas non è possibile puntare all'indirizzo di un oggetto. Esiste però la possibilità di creare una nuova istanza, copiando il contenuto delle due GridView in un array da gestire con appropriati indici.
Riga 13: Riga 13:
  
 
Dopo avere nominate le due GridView:Es. GridView1 e Gridview2, si passa a scrivere:<BR>
 
Dopo avere nominate le due GridView:Es. GridView1 e Gridview2, si passa a scrivere:<BR>
1) nella sezione Dichirazioni della Form.Class relativa la dichiarazione degli oggetti costituenti la nuova istanza delle due GridView: <BR>
+
1) nella sezione Dichirazioni della Form.Class relativa la dichiarazione degli oggetti costituenti la nuova istanza delle due GridView:  
Private oGridView1 As Object[ ] <BR>
+
Private oGridView1 As Object[ ]
Private oGridView2 As Object[ ]
+
Private oGridView2 As Object[ ]
  
2) gli oggetti indice che serviranno successivamente per indirizzare il puntamento alle righe delle due GridView: <BR>
 
Private oInd1 As Object <BR>
 
Private oInd2 As Object
 
  
3) Nelle procedure evento _DblClick delle due GridView basta richiamare un'unica procedura Sub o Function, destinata a contenere le istruzioni di trattamento del testo della riga, selezionata di volta in volta: <BR>
+
2) gli oggetti indice che serviranno successivamente per indirizzare il puntamento alle righe delle due GridView:  
<CODE>
+
Private oInd1 As Object
Public Sub GridView1_DblClick() <BR>
+
Private oInd2 As Object
GriViewComu_DblClick <BR>
 
End
 
  
Public Sub GridView2_DblClick() <BR>
 
GriViewComu_DblClick <BR>
 
End
 
</CODE>
 
  
4) La procedura comune potrebbe essere: <BR>
+
3) Nelle procedure evento _DblClick delle due GridView basta richiamare un'unica procedura Sub o Function, destinata a contenere le istruzioni di trattamento del testo della riga, selezionata di volta in volta:
<CODE>Private Sub GriMovDblClick_Comu()  
+
'''Public''' Sub GridView1_DblClick()
Dim iInd1 As Integer
+
  GriViewComu_DblClick
Dim iInd2 As Integer
+
'''End'''
 +
 +
'''Public''' Sub GridView2_DblClick()
 +
  GriViewComu_DblClick
 +
'''End'''
  
oGridView1 = New Object[ ]
+
oGridView2 = New Object[ ]
+
4) La procedura comune potrebbe essere:
If Last.Name = "GridView1" Then
+
'''Private''' Sub GriViewComu_DblClick()
    oGridView1.Add(GridView1) 'GridView di partenza
+
Dim iInd1 As Integer
    oGridView2.Add(GridView2) 'GridView di arrivo
+
Dim iInd2 As Integer
Else
+
    oGridView1.Add(GridView2) 'nuova GridView di partenza
+
  oGridView1 = New Object[ ]
    oGridView2.Add(GridView1) 'nuova GridView di arrivo
+
  oGridView2 = New Object[ ]
Endif
+
  If Last.Name = "GridView1" Then
For Each oIndGridView1 In oGridView1  
+
      oGridView1.Add(GridView1) 'GridView di partenza
Next
+
      oGridView2.Add(GridView2) 'GridView di arrivo
For Each oIndGridView2 In oGridView2 │
+
  Else
Next
+
      oGridView1.Add(GridView2) 'nuova GridView di partenza
iInd1 = oIndGridView1.Row
+
      oGridView2.Add(GridView1) 'nuova GridView di arrivo
For iInd2 = 0 To oIndGridView2.Rows.count – 1
+
  Endif
If oIndGridView2[iInd2, 0].Text <> "" Then
+
  For Each oIndGridView1 In oGridView1  
oIndGridView2[iInd2, 0].Text = oIndGridView1[iInd1, 0].Text
+
  Next
oIndGridView2[iInd2, 1].Text = oIndGridView1[iInd1, 1].Text
+
  For Each oIndGridView2 In oGridView2 │
oIndGridView2[iInd2, n].Text = oIndGridView1[iInd1, n].Text (n = numero di colonne – 1 delle GridView di partenza e d'arrivo)
+
  Next
oIndGridView1[iInd1, 0].Text = “”
+
  iInd1 = oIndGridView1.Row
oIndGridView1[iInd1, 1].Text = “”
+
  For iInd2 = 0 To oIndGridView2.Rows.count – 1
oIndGridView1[iInd1, n].Text = “”
+
    If oIndGridView2[iInd2, 0].Text <> "" Then
·Endif
+
      oIndGridView2[iInd2, 0].Text = oIndGridView1[iInd1, 0].Text
· Next
+
      oIndGridView2[iInd2, 1].Text = oIndGridView1[iInd1, 1].Text
End
+
      oIndGridView2[iInd2, n].Text = oIndGridView1[iInd1, n].Text (n = numero di colonne – 1 delle GridView di partenza e d'arrivo)
</CODE>
+
      oIndGridView1[iInd1, 0].Text = “”
 +
      oIndGridView1[iInd1, 1].Text = “”
 +
      oIndGridView1[iInd1, n].Text = “”
 +
    Endif
 +
  Next
 +
'''End'''
  
L'effetto operativo di quanto scritto sopra è dipendente dall'azione operativa dell'utente che eseguendo il doppio click sulla riga di pertinenza da spostare, per Es. della GridView1 permette la schedulazione dell'evento GridView1_DblClick dentro il quale l'istruzione GriViewComu_DblClick non fa altro che richiamare la procedura  GriViewComu_DblClick  che si occuperà dello spostamento fisico dei valori di tutta lariga dalla GridView1 alla GridView2. La stessa effetto, in senso opposto avverrà eseguendo il doppio click su una riga valorizzata della GridView2.
+
L'effetto operativo di quanto scritto sopra è dipendente dall'azione operativa dell'utente che eseguendo il doppio click sulla riga di pertinenza da spostare, per Es. della GridView1 permette la schedulazione dell'evento GridView1_DblClick dentro il quale l'istruzione GriViewComu_DblClick non fa altro che richiamare la procedura  GriViewComu_DblClick  che si occuperà dello spostamento fisico dei valori di tutta lariga dalla GridView1 alla GridView2. Lo stesso effetto, in senso opposto, avverrà eseguendo il doppio click su una riga valorizzata della GridView2.

Versione attuale delle 13:29, 5 set 2013

La gestione di un tale metodo riguarda oggetti grafici della stessa natura senza però duplicare codice. Si possono presentare diversi casi di impiego di tale metodo. La presente sezione ha lo scopo di raggruppare tutti quei casi in cui possa tornare utile sfruttare le potenzialità interne a Gambas per ottenere più rapidamente e con risparmio di codice, e non solo, risultati ed ottimizzazioni di procedure che altrimenti richiederebbero un non semplice impegno di programmazione e di memoria.


Trasferire il contenuto di una GridView ad un'altra e viceversa

Immagianiamo una data Form contenente due GridView di cui una di esse, la prima o la seconda, non importa quale, sia stata caricata con valori diversi in più righe. L'altra Gridview può essere vuota o pure parzialmente riempita. Lo scopo è quello di trasferire, tramite doppio click su ciascuna riga, il contenuto di tutte le caselle, colonna dopo colonna, da una GridView all'altra. Col trasferimento si vuole ottenere infatti una diversa ridistribuzione dei dati presenti nelle GridView, in funzione delle necessità operative dell'utente.

In Gambas non è possibile puntare all'indirizzo di un oggetto. Esiste però la possibilità di creare una nuova istanza, copiando il contenuto delle due GridView in un array da gestire con appropriati indici. Una volta disegnate le due Gridview, si procede alle stesura del codice necessario all'esecuzione del programma.

Dopo avere nominate le due GridView:Es. GridView1 e Gridview2, si passa a scrivere:
1) nella sezione Dichirazioni della Form.Class relativa la dichiarazione degli oggetti costituenti la nuova istanza delle due GridView:

Private oGridView1 As Object[ ]
Private oGridView2 As Object[ ]


2) gli oggetti indice che serviranno successivamente per indirizzare il puntamento alle righe delle due GridView:

Private oInd1 As Object
Private oInd2 As Object 


3) Nelle procedure evento _DblClick delle due GridView basta richiamare un'unica procedura Sub o Function, destinata a contenere le istruzioni di trattamento del testo della riga, selezionata di volta in volta:

Public Sub GridView1_DblClick()
  GriViewComu_DblClick
End

Public Sub GridView2_DblClick()
  GriViewComu_DblClick
End


4) La procedura comune potrebbe essere:

Private Sub GriViewComu_DblClick() 
Dim iInd1 As Integer
Dim iInd2 As Integer

  oGridView1 = New Object[ ]
  oGridView2 = New Object[ ]
  If Last.Name = "GridView1" Then
     oGridView1.Add(GridView1) 		'GridView di partenza
     oGridView2.Add(GridView2) 		'GridView di arrivo
  Else
     oGridView1.Add(GridView2) 		'nuova GridView di partenza
     oGridView2.Add(GridView1) 		'nuova GridView di arrivo
  Endif
  For Each oIndGridView1 In oGridView1 
  Next
  For Each oIndGridView2 In oGridView2 │
  Next
  iInd1 = oIndGridView1.Row
  For iInd2 = 0 To oIndGridView2.Rows.count – 1
    If oIndGridView2[iInd2, 0].Text <> "" Then
      oIndGridView2[iInd2, 0].Text = oIndGridView1[iInd1, 0].Text
      oIndGridView2[iInd2, 1].Text = oIndGridView1[iInd1, 1].Text
      oIndGridView2[iInd2, n].Text = oIndGridView1[iInd1, n].Text (n = numero di colonne – 1 delle GridView di partenza e d'arrivo)
      oIndGridView1[iInd1, 0].Text = “”
      oIndGridView1[iInd1, 1].Text = “”
      oIndGridView1[iInd1, n].Text = “”
    Endif
  Next
End

L'effetto operativo di quanto scritto sopra è dipendente dall'azione operativa dell'utente che eseguendo il doppio click sulla riga di pertinenza da spostare, per Es. della GridView1 permette la schedulazione dell'evento GridView1_DblClick dentro il quale l'istruzione GriViewComu_DblClick non fa altro che richiamare la procedura GriViewComu_DblClick che si occuperà dello spostamento fisico dei valori di tutta lariga dalla GridView1 alla GridView2. Lo stesso effetto, in senso opposto, avverrà eseguendo il doppio click su una riga valorizzata della GridView2.