Newsgroup: it.comp.lang.visual-basic
Titolo: Il Command Button conosce il proprio nome?

E' possibile che un CommandButton individui il proprio nome?
Il mio problema è questo: ho un form con 420 pulsanti :) inclusi in 10 form
da 42 pulsanti ciascuno.
I pulsanti appartengono a 10 matrici ed hanno nome:
pulsante0(1)     pulsante1(1)     pulsante2(1)     pulsante3(1)     etc
pulsante0(2)     pulsante1(2)     pulsante2(2)      pulsante3(2)     etc
pulsante0(3)     pulsante1(3)     pulsante2(3)     pulsante3(3)     etc
pulsante0(4)     pulsante1(4)     pulsante2(4)     pulsante3(4)     etc
etc.
Devo associare un evento (lo stesso) ai pulsanti ma VORREI NON DOVER
SCRIVERE 420 volte le ISTRUZIONI.
Allora creo una routine, che fa il lavoro per tutti, ma questa deve sapere
da quale pulsante proviene l'input.
Come fare?
Quando un pulsante, esempio pulsante0() viene cliccato la sub associata
all'evento fornisce il parametro index, cosi' io so
quale pulsante dei 42 che si chiamano pulsante0 è stato cliccato.
Ma come fare per individuare che è stato cliccato il pulsante0() o il
pulsanto1() ?
Ho provato con la parola chiave ME, ma questa è associata al form di
provenienza.
Non esiste una parola chiave che fornisca il nome del controllo in
questione? in questo caso un commandbutton?
Grazie :)
Saluti
Dragonfax

 pulsanto1() ?
Se hai 10 vettori di controlli, hai 10 eventi click.
L'evento č specifico (e quindi indica) il vettore.
L'Index ti dice qual č il controllo di quel vettore...

 provenienza.
Sparo a memoria: 
Me.ActiveControl.Name
Bye, G.

 questione? in questo caso un commandbutton?
in 
vb.net
 (ma in .net in generale) sì.
in vb6 non mi sembra. però credo che tu abbia 10 routine di evento, ciascuna
per ogni vettore di controlli, quindi dovresti sapere qual è il vettore
interessato.
alternativa pensata al volo: me.activecontrol (ma esiste, o ricordo male?)
indicherà il bottone premuto?
--
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

[Paperino] scrisse:
[lupo] scrisse:
[cssoft] scrisse:
orari prolungati, oggi? (io sono in turno fino alle 20.00)


 orari prolungati, oggi? (io sono in turno fino alle 20.00)
Macchè, io non ho voglia di tornare a casa...
Il Papero di giorno dorme...

 Macchč, io non ho voglia di tornare a casa...
niente da fare di divertente, a casa?
sě, č proprio per farmi i cazzi tuoi :-)


 ha scritto nel messaggio
news:btmrvn$98qn1$1...@ID-173193.news.uni-berlin.de...


 L'Index ti dice qual è il controllo di quel vettore...
Potresti (ma qualcuno ti proporrà il SubClassing che io non so cosa sia)
"concentrare decentrando" (insomma, un po' come le parallele che si
incontrano) in questo modo:
Sub Pulsante0_Click (Index ...)
    Call Gestore_Pulsanti(0,Index)
End Sub
Sub Pulsante9_Click (Index ...)
    Call Gestore_Pulsanti(9,Index)
End Sub
Come sopra per i 10 vettori (da 0 a 9).
Sub Gestore_Pulsanti(Numero_Vettore As Integer, Indice As Integer)
    Select Case Numero_Vettore
        Case 0
            Select Case Indice
                Case 0
'                    ...
                Case ...
                Case 41
'                    ...
            End select
'    ... Idem per i vettori 1-8
        Case 9
            Select Case Indice
                Case 0
'                    ...
                Case ...
                Case 41
'                    ...
            End select
    End Select
End Sub

 niente da fare di divertente, a casa?
No, e non ho nemmeno appetito.

 No, e non ho nemmeno appetito.
abbottonatissimi siamo.
vabbeh...
--
Salutoni lo stesso da


 abbottonatissimi siamo.
Ma no, davvero. Non ho nessuno a casa che mi rompe e che non voglio vedere.
E non mi va di tornare forse proprio per il contrario: La casa è vuota e
fredda, non ho manco messo il timer.

 pulsanto1() ?
[SNIP]
Molto semplicemente: pulsanteX(Index).Name
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 casa è vuota e fredda, non ho manco messo il timer.
ma qualcosa di caldo pareva successo, ultimamente...
insomma: lanciare il sasso e non fornire tutti i particolari non è carino.
--
Salutoni


 carino.
Ahhhh, ma sei tu allora che "meni il can per l'aia". ;-)
Io avevo scritto "boni, boni". Vale ancora. Boni.

 Molto semplicemente: pulsanteX(Index).Name
Già, ma (domanda retorica) dove?

 Già, ma (domanda retorica) dove?
Anzi, quanto vale X?
Luca e il giochino del venerdì? ;-)

 ha scritto nel messaggio
news:btmtcc$9218t$1...@ID-174464.news.uni-berlin.de...

Prendendo spunto dal tuo altro post:
"Se hai 10 vettori di controlli, hai 10 eventi click."
ergo
Sub Pulsante0_Click (Index ...)
    Call Gestore_Pulsanti(Pulsante0(Index).Name,Index)
End Sub
'...
Sub Pulsante9_Click (Index ...)
    Call Gestore_Pulsanti(Pulsante9(Index).Name,Index)
End Sub


 Ciao

 Certo, ma per ... stabilire il nome lo devi già conoscere.
Si, e' vero, ma infatti rispondevo testualmente a "Il Command Button conosce
il proprio nome?"
Il punto a cui volevo arrivare e' che 'Pulsante0' come *nome di variabile*
lo conosci tu programmatore, ma non il tuo programma, mentre
Pulsante0(Index).Name ovvero "Pulsante0" come *stringa* e' un valore che
puoi passare in giro al resto del tuo codice... poi, intendiamoci, sempre
una qualche forma di Select Case devi fare, come nel tuo esempio


 nel tuo esempio
Ora l'intendimento mi è chiaro. Grazie.

Ho risolto con:
call funzione(
me.selecteditem.name
, index)
 
e poi nella funzione seleziono l'ottavo carattere del nome :)
in questo modo:
la funzione è impostata come
sub funzione (nome as string, index as integer)
val( mid(nome,1,8))
che poi uso per le vari cose :)
è troppo grezzo?
Comunque un grazie enorme a tutti :)

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 val( mid(nome,1,8))
Non sarebbe meglio Val(mid(nome,8,1)) ?

 è troppo grezzo?
Beh, abbastanza; se domani decidi di rinominare "pulsante0" in "bottone0"
devi correggere il codice, per non parlare del fatto che sei obbligato ad
avere i nomi dei 10 array della stessa lunghezza.
A questo punto l'hai fatto dinamico ma rigidissimo, se non ti piace il
sistema del '.Name', tanto vale fare come dice Lupo e passare un indice
numerico secco...


 indice numerico secco...
Giustissimo. A questo punto, concentrando cioè il tutto in una sola (pur se
ampia) Sub/Function, passerei alla stessa direttamente il controllo,
qualunque esso sia (quindi la S/F deve attendersi un ... As Control).
In tal modo, almeno, in caso di modifiche di nomi e tipi di controlli, agirò
sempre e solo nella S/F di gestione centralizzata.