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

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Bottone in una TableView
« il: 19 Maggio 2016, 19:57:42 »
È possibile inserire un bottone in una cella di una TableView?
In giro non ho trovato niente! :-\
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #1 il: 19 Maggio 2016, 20:45:05 »
Una tableview è una gridview con in più una textbox o una combobox per gli inserimenti, forse usando come campione il codice di Minisini che puoi vedere in gb.form si potrebbe fare.
Ma a cosa ti servirebbe fare una cosa così, se è lecito chiedere, magari c'è un'altra soluzione.
 :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 #2 il: 19 Maggio 2016, 21:24:35 »
Una soluzione potrebbe essere quella di inserire un'immagine del tasto.
Ti ho fatto un'esempio in velocità

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #3 il: 19 Maggio 2016, 22:19:53 »
Citazione
Ma a cosa ti servirebbe fare una cosa così, se è lecito chiedere, magari c'è un'altra soluzione.
Allora, ho una tabella nella quale su ogni riga ho i dati di di un dispositivo che interrogo via USB, mi serve avere uno storico  di questi risultati (pensavo a 5 dati che corrispondono a 5 righe) che vorrei vedere cliccando su un pulsante che ovviamente sia in relazione alla riga analizzata. Ho provato ad usare pulsanti esterni alla TextView e tutto funziona a patto che la tabella non si allunghi e diventi scorrevole con i cursori laterali. A quel punto la corrispondenza va persa.
Citazione
Una soluzione potrebbe essere quella di inserire un'immagine del tasto.
La soluzione sarebbe perfetta se già non usassi l'evento  TableView_click per effettuare l'editing di alcuni campi della tabella.
Dovrei forse provare a filtrarli...

Gianluigi, proposte alternative ben vengano!
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #4 il: 19 Maggio 2016, 22:35:12 »
Intanto che penso a qualcosa di alternativo, ti allego il file di Golia che mi sono permesso di cambiare, magari ti può servire da spunto.
 :ciao:

Per forza occorre usare tableview_click ma puoi aggiungere un pulsante che ti pone una variabile globale a es. True quando devi editare e false quando vuoi usare il pulsante.
 :ciao: :ciao:
« Ultima modifica: 19 Maggio 2016, 22:48:23 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #5 il: 20 Maggio 2016, 01:13:02 »
Intanto che penso a qualcosa di alternativo, ti allego il file di Golia che mi sono permesso di cambiare, magari ti può servire da spunto.
Il tuo codice può contenere il problema paventato da kicco (" tutto funziona a patto che la tabella non si allunghi e diventi scorrevole con i cursori laterali. A quel punto la corrispondenza va persa."), qualora la tabella interna della TableView nel tuo programma venga as assumere una dimensione (data dalla somma delle altezze di tutte le righe presenti) superiore all'oggetto TableView (determinando così la comparsa dei cursori laterali e la capacità di scorrere in alto ed in basso).
La TableView, come anche la GridWView, possiede come proprio oggetto Children una ScrollArea, la quale consente - muovendo i cursori laterali in basso ed in alto - di poter osservare tutta la TableView, qualora la somma delle altezze delle righe in essa presenti superi l'altezza della TableView medesima.
Se si presenta questa circostanza anche con il tuo codice, la corrispondenza del Button con una determinata cella si perde facendo scivolare con i cursori laterali la ScrollArea della TableView in basso o in alto.

Ad ogni modo si dovrà utilizzare proprio l'oggetto figlio della TableView, ossia la ScrollArea, come base sulla quale porre eventuali oggetti (come appunto i Button), avendo cura di ancorarli saldamente per evitare la perdita di corrispondenza con lo scorrere in alto ed in basso della ScrollArea.

Propongo questo codice:
Codice: [Seleziona]
Private bt As Button
Private sa As ScrollArea


Public Sub Form_Open()

  Dim b As Byte
  Dim obs As Observer

  With TableView1
    .Columns.Count = 4
' Volutamente creiamo una "TableView" la cui altezza sia minore della somma delle altezze delle righe in essa contenute:'
    .Rows.Count = 30
  End With

  sa = TableView1.Children[0]

  obs = New Observer(sa) As "Scrollo"

' Creiamo due Button da porre nella "TextView":'
  For b = 1 To 2
    With bt = New Button(sa) As "Tasto"
      .X = 0
      .Y = TableView1.Rows[b].Y
      .W = 40
      .H = TableView1.Rows.H
      .Name = CStr(b)
      .Text = CStr(b)
    End With
  Next

End


Public Sub Tasto_Click()
 
  Print "E' stato premuto il tasto: "; Last.Name
 
End


Public Sub Scrollo_Scroll()

  Dim ob As Object
  Dim b As Byte
 
  For Each ob In sa.Children
    Inc b
  ' Le risorse, che ci servono, sono le proprietà ".ScrollY" e ".ScrollX" della "ScrollArea" '
    ob.Y = TableView1.Rows[b].Y - sa.ScrollY
    ob.X = TableView1.Columns[0].X - sa.ScrollX
  Next
 
End
« Ultima modifica: 20 Maggio 2016, 12:22:31 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.244
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #6 il: 20 Maggio 2016, 11:37:10 »
@vuott
hai ragione, il codice da me proposto è sbagliato.
Vedrò se posso rimediare.
@Kicco
allego proposta alternativa
 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #7 il: 20 Maggio 2016, 15:44:45 »
@vuott
hai ragione, il codice da me proposto è sbagliato.
Vedrò se posso rimediare.

Forse ho rimediato, vedere allegato prego.
 :ciao: :ciao: :ciao:
« Ultima modifica: 20 Maggio 2016, 16:02:14 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #8 il: 20 Maggio 2016, 17:28:49 »
Forse ho rimediato
Non ancora: dopo aver fatto apparire il tasto in una cella della TextView, se si fa scorrere qualunque dei due cursori, il tasto scompare.
« 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.244
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #9 il: 20 Maggio 2016, 17:40:10 »
Forse ho rimediato
Non ancora: dopo aver fatto apparire il tasto in una cella della TextView, se si fa scorrere qualunque dei due cursori, il tasto scompare.

È fatto volutamente altrimenti rimarrebbe lo stesso tasto di quella cella vecchia, mentre credo che Kicco voglia poter inviare a un file il contenuto di quello che contiene la cella o la riga corrente.
Credo, almeno io ho capito così  :-\

Piuttosto prima che mi bacchetti ulteriormente ti dico già che la mia "proposta alternativa" è super bacata  :P
 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #10 il: 20 Maggio 2016, 18:18:10 »

@Kicco
allego proposta alternativa
 :ciao: :ciao:

Ora funziona in modo semplice e mi sembra quello giusto.
Con questo salvi le righe che vuoi con "Sciacca pomello" le celle che vuoi.
Di più nin so
 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #11 il: 20 Maggio 2016, 19:35:01 »
 :ciao:
Mi avete letteralmente ricoperto di esempi :D
Quello che cercavo è nel codice che Vuott a postato. Effettivamente cercavo proprio di mettere un pulsante dentro la cella di una colonna in ogni riga. I tuoi esempi Gianluigi sono interessanti ma fanno un'altra cosa, per questo li ho messi per ora da parte, potrebbero venire comodi per un altra parte del programma!
Vuott, faccio il rompiballe, ho impiegato nella tabella le intestazioni (TableView1.Header=3), così vedo sia l'intestazione delle colonne sia quella delle righe. Quando scorro in verticale i bottoni mi vanno a finire sull'intestazione.
Adesso devo preparare la cena per la truppa poi do un'occhiata!

Grazie a tutti! :-* :-* :-*
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #12 il: 20 Maggio 2016, 19:55:53 »
...
 Effettivamente cercavo proprio di mettere un pulsante dentro la cella di una colonna in ogni riga.
...

Vuoi dire che se hai 10000 righe inserisci 10000 pulsanti  :o

 :ciao:
Aggiungo una adattamento a SciaccaPomello che forse non hai considerato, o proprio non riesco a capire?  :rolleyes:
 :ciao: :ciao:
« Ultima modifica: 20 Maggio 2016, 20:26:20 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #13 il: 20 Maggio 2016, 22:00:26 »
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:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Bottone in una TableView
« Risposta #14 il: 20 Maggio 2016, 23:44:24 »
...ho impiegato nella tabella le intestazioni (TableView1.Header=3), così vedo sia l'intestazione delle colonne sia quella delle righe. Quando scorro in verticale i bottoni mi vanno a finire sull'intestazione.
Mostrami il codice dell'Evento _Scroll() dell'oggetto Figlio: "ScrollArea", perché la questione si risolve al suo interno.
Inoltre mi devi dire se i tasti vengono posti tutti in un'unica colonna o se vengono posti in colone diverse.
 
« Ultima modifica: 28 Febbraio 2021, 16:14:25 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. »