Autore Topic: Bottone in una TableView  (Letto 3188 volte)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #15 il: 21 Maggio 2016, 19:13:52 »
Credo e spero di averti allegato le cose giuste!
A parte il fatto che praticamente è tutto codice tuo!  :)
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.270
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #16 il: 21 Maggio 2016, 20:19:24 »
I Button, da come si puòvedere, restano ancorati alla riga della TableView, ove sono stati impostati. Pertanto, in questo il mio codice è pienamente efficace producemdo l'effetto voluto.

...sì, ho notato che da un punto di vista visivo i Button, quando si trovano al di sopra della prima riga si mostrano al di sopra della riga di Intestazione (header) della TableView.
« 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 vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.270
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #17 il: 21 Maggio 2016, 21:13:38 »
...attualmente non so come creare l'effetto del passaggio degli oggetti al di sotto della riga dell'header della TableView.
Nel frattempo possiamo ricreare più o meno un effetto "sparizione/apparizione" degli oggetti, quando si trovano nei pressi dell'header con un codice che va a modificare, come segue, l'ultima routine del codice che hai allegto:

Codice: [Seleziona]
Private c As Short          '  Va aggiunta questa variabile Globale ! '

.......
.......

Public Sub Scrollo_Scroll()
     
  Dim ob As Object
  Dim b As Byte

  c += sa.ScrollY

  For Each ob In sa.Children
    Inc b
    ob.Visible = True
    If ob.Y < TableView1.Rows[1].Y - (ob.H / (TableView1.Rows[1].Y * 0.3)) Then ob.Visible = False
    ob.Y = TableView1.Rows[b].Y - sa.ScrollY
    ob.X = TableView1.Columns[4].X - sa.ScrollX + 40
  Next

' Forse questo passaggio si può semplificare un po'.....  :-D
  If sa.Children[0].Y < (TableView1.Rows[1].Y - (sa.Children[0].H * 0.3)) Then sa.Children[0].Visible = False
  If (sa.Children[0].Y > (TableView1.Rows[1].Y - (sa.Children[0].H * 0.3))) And (sa.Children[1].Y >= TableView1.Rows[1].H) Then sa.Children[0].Visible = True
     
End
« Ultima modifica: 22 Maggio 2016, 15:12:34 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 Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #18 il: 22 Maggio 2016, 14:42:06 »
Citazione
Vuoi dire che se hai 10000 righe inserisci 10000 pulsanti
Sììììììììììì, un mare di pulsanti che salgono e scendono dalle onde! :P
No Gianluigi, lo so che giocando coi database sei abituato a maneggiare tanti e tanti record.
Io nella lista ho al massimo massimo 50 righe. Nella realtà di norma non sono che una decina, e come piegavo sono relativa ognuna ad una apparecchiatura che interrogo via USB e raccolgo i messaggi di risposta che aggiorno in ogni riga (relativa ad una apparecchiatura). IL pulsante mi serve per aprire una TextAea nella quale riporto gli ultimi 5 record che mi servono per capire, se c'è stato un problema pregresso senza andare ad analizzare il log generale, che ha tutte le informazioni, ma che vanno spulciate con pazienza. Così invece capisco al volo se nel corso di una giornata il messaggio di malfunzionamento è già arrivato.
La frequenza dei messaggi di malfunzionamento puo essere anche di 4 ore, giusto per intenderci.
 :ciao: :ciao: :ciao:

 :ok: Finalmente, buon ultimo, ho capito anch'io  :P

...attualmente non so come creare l'effetto del passaggio degli oggetti al di sotto della riga dell'header della TableView.
Nel frattempo possiamo ricreare più o meno un effetto "sparizione/apparizione" degli oggetti, quando si trovano nei pressi dell'header con un codice che va a modificare, come segue, l'ultima routine:

Codice: [Seleziona]
Private c As Short          '  Va aggiunta questa variabile Globale ! '

.......
.......

Public Sub Scrollo_Scroll()
     
  Dim ob As Object
  Dim b As Byte

  c += sa.ScrollY

  For Each ob In sa.Children
    Inc b
    ob.Visible = True
    If ob.Y < TableView1.Rows[1].Y - (ob.H / (TableView1.Rows[1].Y * 0.3)) Then ob.Visible = False
    ob.Y = TableView1.Rows[b].Y - sa.ScrollY
    ob.X = TableView1.Columns[4].X - sa.ScrollX + 40
  Next

' Forse questo passaggio si può semplificare un po'.....  :-D
  If sa.Children[0].Y < (TableView1.Rows[1].Y - (sa.Children[0].H * 0.3)) Then sa.Children[0].Visible = False
  If (sa.Children[0].Y > (TableView1.Rows[1].Y - (sa.Children[0].H * 0.3))) And (sa.Children[1].Y >= TableView1.Rows[1].H) Then sa.Children[0].Visible = True
     
End

Purtroppo non ho ancora approfondito, ma ti comunico che io di questo codice potrei farne a meno che funziona lo stesso.
Codice: [Seleziona]
' Forse questo passaggio si può semplificare un po'.....  :-D
  If sa.Children[0].Y < (TableView1.Rows[1].Y - (sa.Children[0].H * 0.3)) Then sa.Children[0].Visible = False
  If (sa.Children[0].Y > (TableView1.Rows[1].Y - (sa.Children[0].H * 0.3))) And (sa.Children[1].Y >= TableView1.Rows[1].H) Then sa.Children[0].Visible = True
:ciao: :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.270
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #19 il: 22 Maggio 2016, 15:11:14 »
... ti comunico che io di questo codice potrei farne a meno che funziona lo stesso.
Codice: [Seleziona]
' Forse questo passaggio si può semplificare un po'.....  :-D
  If sa.Children[0].Y < (TableView1.Rows[1].Y - (sa.Children[0].H * 0.3)) Then sa.Children[0].Visible = False
  If (sa.Children[0].Y > (TableView1.Rows[1].Y - (sa.Children[0].H * 0.3))) And (sa.Children[1].Y >= TableView1.Rows[1].H) Then sa.Children[0].Visible = True

Hai ragione.
Evidentemente nei vari aggiustamenti del codice sovrastante, avevo trovato la soluzione e non mi ero accorto che era sufficiente.  :D
« Ultima modifica: 22 Maggio 2016, 15:13:29 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 kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #20 il: 22 Maggio 2016, 17:08:29 »
 :ciao:
Intanto grazie!
Le due righe di codice apparentemente inutili, a me risultano decisive altrimenti dopo lo scorrimento verso il basso nella prima riga scompare il pulsante.
V'è anche da notare che l'altezza della TableView dovrà essere un multiplo esatto di righe altrimenti diventa dura la gestione grafica di un mezzo-tasto.
Lo scrivo come considerazione per successivi lettori-utenti.
 :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.270
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #21 il: 22 Maggio 2016, 17:18:04 »
Le due righe di codice apparentemente inutili, a me risultano decisive altrimenti dopo lo scorrimento verso il basso nella prima riga scompare il pulsante.
Sì, è vero: se si effettua il ritorno in alto del cursore laterale, il primo tasto (in alto) non ricompare. Questo problema a me avviene, pro, solo quando il ritono in alto è effettuato velocemente. Al contrario, se viene effettuato lentamente, il prmo tasto ricompare regolarmente.
Probabilmente, quando ho deciso di inserire quelle due righe in basso, l'ho fatto perché facendo risalire velocemente il cursore laterale, non ricompariva il primo Button.
« 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 Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #22 il: 22 Maggio 2016, 18:23:20 »
Le due righe di codice apparentemente inutili, a me risultano decisive altrimenti dopo lo scorrimento verso il basso nella prima riga scompare il pulsante.
Sì, è vero: se si effettua il ritorno in alto del cursore laterale, il primo tasto (in alto) non ricompare. Questo problema a me avviene, pro, solo quando il ritono in alto è effettuato velocemente. Al contrario, se viene effettuato lentamente, il prmo tasto ricompare regolarmente.
Probabilmente, quando ho deciso di inserire quelle due righe in basso, l'ho fatto perché facendo risalire velocemente il cursore laterale, non ricompariva il primo Button.

Con o senza le due righe di codice, ma più accentuato senza se agisco sulla barra della scroll velocemente mi da problemi specialmente in giù vedi immagine.
Non sempre un po si un po no
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #23 il: 10 Ottobre 2016, 18:01:58 »
Il post spagnolo sulle checkbox in una gridview mi ha fatto riconsiderare il suggerimento di Golia.
Allego progetto funzionante, e già che c'ero ho inserito una modifica per spostarsi fra le celle con tasto TAB.

 :ciao: :ciao:
« Ultima modifica: 13 Ottobre 2016, 18:19:23 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #24 il: 11 Ottobre 2016, 14:37:00 »
Ciao Gianluigi
Ho letto il post spagnolo e appunto volevo chiedere se si può risolvere il discorso del tab, che (almeno per me) è molto utile per spostarsi nella griglia.
Non ho fatto in tempo a scrivere che già avevi preso in considerazione il problema  :)

Non si può intercettare il tab?

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.270
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #25 il: 11 Ottobre 2016, 14:45:32 »
...volevo chiedere se si può risolvere il discorso del tab, che (almeno per me) è molto utile per spostarsi nella griglia.

Non si può intercettare il tab?
...questione interessante.   
« 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 Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #26 il: 11 Ottobre 2016, 14:50:02 »
Ciao Gianluigi
Ho letto il post spagnolo e appunto volevo chiedere se si può risolvere il discorso del tab, che (almeno per me) è molto utile per spostarsi nella griglia.
Non ho fatto in tempo a scrivere che già avevi preso in considerazione il problema  :)

Non si può intercettare il tab?

Modestamente "so mago"  ;D

Tieni conto che con invio (basta abituarsi) ottieni la stessa cosa, è vero però che siamo tutti abituati a spostarci con tab e visto che ti interessa proverò ancora con qualche esperimento.
È chiaro comunque che Gambas anticipa anche Observer e allora... forse mettendolo pubblico?
 :ciao: :ciao:
« Ultima modifica: 11 Ottobre 2016, 14:55:43 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #27 il: 11 Ottobre 2016, 15:04:11 »
Bastava mettere prima un normale Stop Event:
Codice: [Seleziona]
Public Sub TableView_KeyPress()  
  ' Per impedire a questi eventi di scatenare il '
  ' click quando passano alla riga successiva. '
  Select Case Key.Code   
    Case Key.Right, Key.Return, Key.Enter
      If TableView1.Column = 3 Then     
        $bNoEvent = True
      Endif
    ' Lo so che il tab è usato dalle form per passare da un controllo ad un altro'
    ' Ma volevo vedere se riuscivo a catturarlo solo per la TableView.'
    Case Key.Tab
      Stop Event     
      Desktop.SendKeys("\n")     ' <-----Ora con stop event funziona'
  End Select 
 
End
:ciao: :ciao:

PS Ho aggiornato il post precedente e l'allegato, ora, quanto detto poi, sembra un discorso surreale  ;D
« Ultima modifica: 11 Ottobre 2016, 19:59:38 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #28 il: 11 Ottobre 2016, 20:14:11 »
Ciao Gianluigi
Ho letto il post spagnolo e appunto volevo chiedere se si può risolvere il discorso del tab, che (almeno per me) è molto utile per spostarsi nella griglia.
Non ho fatto in tempo a scrivere che già avevi preso in considerazione il problema  :)

Non si può intercettare il tab?

Sull'argomento Tab per spostare il cursore in una TableView il buon Vuott ha scritto una pagina wiki

Questa soluzione purtroppo presenta il difetto che poi il Tab nella Form non si comporta come dovrebbe.
Ci stiamo studiando su, ogni suggerimento è gradito
Intanto abbiamo scoperto che la classe Watcher non serviva, comunque prima di aggiornare ButtonDraw aspetto di vedere se si riesce a migliorarne il codice.
 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #29 il: 11 Ottobre 2016, 20:25:48 »
Mi sembra funzionare, non ho provato con altri oggetti del form
Già che ci siamo.....BackTab  ;)
Avevo scritto una classe, molto simile a gridbox e avevo aggirato il problema Tab e BackTab in maniera assurda ??? Questo è più interessante.
Nella classe GridBox di Milio i due pulsanti funzionano bene nella griglia, saltano la colonna "Check" senza variare il contenuto, ma non ho proprio capito come ha fatto :rolleyes: