Newsgroup: it.comp.lang.visual-basic
Titolo: S.Grid 2.0 tasto tab

Risolti i primi problemi grazie ai vostri input e alla mia testardagine
vorrei chiedervi "forse" l'ennesima cretinata.
Se sono dentro una cella e volessi usare il tasto TAB per spostarmi a quello
dopo come posso fare?
Debby ---)@

[Deborah]

RTFM?
Lokar
-- 
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
Statuto: 
http://www.it-lang-vb.net/docs/Statuto.txt
UGIdotNET - 
http://www.ugidotnet.org

 Lokar
Sei di molto aiuto.... grazie
PS
Se non fosse che è impossibile seguire i passi che la S.Grid fa con il debug
mi studierei bene la SGrid Editing Dimostration che tra l'altro usa anche le
combobox che vorrei mettere anche io.
Deb

Il 03/05/2004 17.46, Deborah scrisse:

Te lo avevo brevemente spiegato nell'altro thread:
Dove deve venire intercettato il tab?
Quando lo intercetti devi:
1. salvare il contenuto del controllo con cui stai facendo l'edit nella 
cella.
2. determinare la cella che prendera' il focus ed iniziare su quella l'edit.
3. seguire il suggerimento di Lokar ;-)
ciao
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 combobox che vorrei mettere anche io.
E perche' mai e' impossibile seguire i passi che la S.Grid fa con il Debug?
Al di la' del fatto che oltre ad F8 c'e' Shift+F8 se ti sembra che il debug
entri "troppo nel dettaglio", non vedo il nesso fra la difficolta' che trovi
ad interpretare il codice con cui a basso livello funziona la S-Grid, con la
domanda che hai postato, che evidentemente non richiede la conoscenza dei
"meccanismi" con i quali essa opera.
Io non conosco la S-Grid ma suppongo che tu alla pressione del tasto TAB
(evento KeyPress?) debba prendere la cella corrente (Row? Column? Cell?)
salvarla (Save? EndEdit? Update?) e spostarti (BeginEdit? Select?) sulla
successiva, stabilito cosa significa per te successiva.
"The Fabulous Manual" e' li' per essere letto. Hai provato a farlo tu,
invece
di fartelo leggere?


 E perche' mai e' impossibile seguire i passi che la S.Grid fa con il Debug?
Se fa uso di subclassing diventa effettivamente difficoltoso.
Però io eliminerei i sorgenti della griglia e lavorerei con i soli 
compilati.
Inutile perdere tempo a debuggare codice complesso di altri.
Ciao

 Inutile perdere tempo a debuggare codice complesso di altri.
Appunto. E comunque ribadisco che la domanda che ha postato ha ben poco
a che fare con i meccanismi con cui funziona la S-Grid.


Il 03/05/2004 19.25, Zanna scrisse:

Non avevo pensato a questa ipotesi "folle"...
Deborah, dicci che non e' vero, dicci che non stai usando i sorgenti 
della s-grid2, ma usi l'ocx!
:-)


 3. seguire il suggerimento di Lokar ;-)
Max e Lokar, mi spiegate, per favore, come sia possibile intercettare il
tasto Tab quando sul form vi siano almeno 2 controlli che possono ricevere
il fuoco? Grazie.

 ha scritto nel messaggio
news:c768ck$82o4$1...@ID-174464.news.uni-berlin.de...


Cielo! Mi e' scappato il quoting!
Chiedo venia =)
Lokar

 Lokar


 
La sgrid funziona in questo modo (ma credo che sia del tutto simile ad 
excel o griglie editabili).
Clicco su una cella e viene generato un evento requestEdit dove si mette 
il codice che permette di inserire al posto della cella un textbox, 
combo o un elefante.
A questo punto il focus e' sul controllo che si usa per l'editing ed e' 
li' che si intercetta la pressione dei tasti. Se premo tab intercetto 
l'evento keypress o keyup o keydown salvo nella cella il contenuto del 
controllo e passo il "focus" la cella vicina o quella della riga 
successiva ....
ciao
	maxx
P.S. Qui e' spiegato abbastanza chiaramente:
http://www.vbaccelerator.com/home/VB/Code/Controls/S_Grid_2/Using_Editable_Mode/article.asp


 quella griglia o, per esempio, anche per un TextBox?
Ora ho capito la domanda =) Effettivamente In VB il tasto vbTab e'
"generalmente" non intercettabile.
La risposta alla tua domanda e': effettivamente dovrebbe valere solo per
quella griglia, gia' un tentativo in questo senso sarebbe stato qualcosa da
parte di Deborah, ma sappiamo entrambi che lei non aveva idea di "cosa" fare
per avere l'effetto desiderato, non avendo letto (se non in minima parte) la
guida sul controllo in oggetto.
Cmnque essendo subclassato immagino che sia in grado di intercettare anche
il tasto vbTab. Ad emmexx l'ardua sentenza.


 anche il tasto vbTab.
Ahhh, ecco.


http://www.vbaccelerator.com/home/VB/Code/Controls/S_Grid_2/Using_Editable_M
ode/article.asp
...
Private Sub txtEdit_KeyDown( _
      KeyCode As Integer, _
      Shift As Integer)
   Select Case KeyCode
   Case 9   ' tab
...
Questo in un controllo normale (se ve n'è un altro che può assumere il
fuoco) non va. salvo subclassing, appunto.

 
Chissa' perche' hanno scritto questo esempio mettendoci anche il tab.
Per Deborah per intercettare il tab basta:
Private Declare Function GetKeyState% _
         Lib "User32" (ByVal nVirtKey%)
Here's an example...
Private Sub Text1_LostFocus()
   If GetKeyState(vbKeyTab) < 0 Then
     Text1.SetFocus
     MsgBox "You can check out anytime you " & _
           "want, but you can never leave."
   End If
End Sub
Scuse a Deborah per aver scritto stupidate. :-)
ciao
	maxx
P.S. Anche questo l'hai gia' salvato? ;-)


Lokar non mi trattare male che mi sento una deficiente...
Non so perchè e per quale motivo te la sia presa tanto io non penso di
essere una miracolata, qui dal primo
giorno che sono arrivata ad oggi ho ricevuto tanti aiuti ma anche tanti
insegnamenti da persone che non ho mai conosciuto
ma che se dovessi sentire in giro che parlano di loro mi intrometterei e
dire si li conosco anche io sono dei miei amici
Beh! Forse amici è una parola grande ma grande è stato e spero sarà in
futuro il loro aiuto.
Ho la passione dei computer da quando sono piccola e se non era per i miei
che mi hanno obbligato a fare lingue
a quest'ora avrei intrapreso la stessa strada vostra.
Ho iniziato a studiare di brutto esattamente la scorsa estate e ti giuro che
di libri e manuali ne ho comprati a bizzeffe el'ultimo
è stato "Visual Basic 6 Programmazione a oggetti" McGrawHill 37.50 ?" perchè
qualcuno mi ha suggerito di farlo per degli errori
di concetto che facevo ( e che faccio ).
Ho preso quegli insegnamenti come oro colato ma nessun manuale parla bene
delle griglie. I libri ci spendono poche pagine con pochi
esempi e il solo modo di scoprire le cose sono i newsgroup.
Ora a prescindere che io possa essere ottusa e che le cose me le devi dire
20 volte non vedo perchè non possa fare una domanda
come quella che ho fatto.
La risposta semplice sarebbe stata guardati questi eventi e ritorna quando
hai fatto.
Lo avrei fatto zittà e muta. Probabilmente sare tornata al primo intoppo ma
i gruppi di discussione stanno qui apposta.
Capisco che molti qui sanno fare solo domande e vogliono la pappa pronta ma
penso di aver dimostrato di non essere una di quelle.
Quello che mi serve ce l'ho, è bastato scaricare la demo da vbaccelerator e
cambiare un paio di cose ma Zanna e Sergio più di una volta
si sono ammazzati per farmi capire i concetti e quindi anche se avevo quello
che mi serviva volevo sapere come e perchè funzionava.
Per quanto riguarda la S.Grid prova ad andare avanti con F8 fino alla fine e
poi prova a cliccare su una cella dove dovrebbe comparire
la combo a scomparsa e vedrai che se vai avanti con F8 funziona fino ad un
certo punto.
Ora se mi perdo qualcosa concettuale nel debug non posso sentirmi dire
"torna a studiare" perchè ho letto e riletto manuali interi sul debug e non
ho trovato risposta.
Ovvio che l'ultima speranza siete voi e posto qui i miei dubbi. Se la
"miracolata" ( come dici tu e che non capisco neanche il perchè) avrà
rispota ne sarò onorata
e contanta come sempre. Se le risposte ai miei dubbi non arrivano la prima
cosa che penso non è quella che molti hanno in testa " Anvedi Nando o Anvedi
sti
stronzi" ma bensi , " non mi hanno risposto perchè SICURAMENTE stanno
lavorando e una come me che lo fa per hobby non può pretendere nulla.
Però da donna ti dico che non accetto neanche gli sfottò.
Permettimelo e non me ne volere, ma con la tua risposta mi sono sentita più
cretina di un mulo. E' come se avessi fatto una domanda assurda quando in
realta di
domande assurde qui ne leggo a bizzaffe.
Ora chiudo e scusate questa mail logorroica..
Buona Notte
Debby ----(@

Max per capire i meccanismi sono andata avanti con F8 sulla demo perchè cosi
vedevo gli eventi che si attivavano
Non esiste un manuale all'infuori di quello sul sito in inglese e io se le
cose non le vedo non le capisco.
Prima di scaricare la demo con le combo dentro le celle avevo notato che il
tasto TAB non funzionava come se stessi su
excel quindi mi è sorta spontanea quella domanda.
Scusate se era idiota.
Comunque nel mio progetto ho caricato il componente ocx della s.grid2 ma ho
dovuto studiare molto sulla demo per capire
bene o male il funzionamento.
Debby la Miracolata di Lourdes

 guida sul controllo in oggetto.
Lokar perdonami, dov'č scritto nella guida che il tasto TAB non č
intercettabile
Seppur in inglese io non l'ho trovato scritto da nessuna parte
Mumble mumble

 > anche il tasto vbTab.
Quando parlate cosi difficile io mi perdo ufffffffffffffffffffffff
:o/
Deb

 intercettabile...
Ci sarai!!! Non dire parolacce... Subclassing a chi eh!?!
E poi dicono che le donne Bobbitizzano i loro uomini...
non ci provate piů a dirmi queste cose senza dirmi cosa
significa!
Ohhhhhhhhhhhhhh
Cavolo, io non devo uscire con i miei amici che mi fanno bere e poi sono qui
a rompere le scatole
Chiedo Venia vado a nanna per la gioia di Octopus
Deborah---- con l'h

Prendo spunto dallo stile della tua risposta per tagliare tutto quello che
hai scritto (addio quoting, tanto a che serve?) e rispondere cosi', come mi
viene. Per quanto possa essere stato "crudo", io ti ho dato solo il *mio*
parere personale sul *tuo* atteggiamento. Per il grado di
attenzione/considerazione che hai sul newsgroup, mi vien da pensare che sia
io la mosca bianca e nessuno condivida il mio punto di vista, ma che ci vuoi
fare, un newsgroup, come tutte le comunita', e' composto da individui con la
propria personalita' e tutto il resto. Tu la tua, io la mia. E permettimi di
aggiungere che non mi muove minimamente a rimorso ne' la storia
dell'infanzia infelice e dell'odierno tentativo di recupero di quei giorni
perduti, ne' l'assurdo tentativo di fare vittimismo (per giunta tirando in
ballo il sesso!).
Io non ho detto che la tua domanda era "assurda", o che "non l'avresti
dovuta postare". Visto il tuo "atteggiamento" (di cui sopra) sul ng, ti ho
invitato in maniera lapidaria a leggere l'help del controllo. C'era anche un
punto interrogativo, come a dire ironicamente: leggere il manuale non
risolve? Data la tua risposta (che peraltro faceva riferimento ad un debug,
che non si capisce a cosa ti serva seguirlo passo passo), ho pensato che
sarebbe stato piu' cortese da parte mia, ma anche piu' utile (IMVHO) per te,
se avessi espresso il mio pensiero chiaramente. L'ho fatto, e senza
intenzione di umiliare chicchessia.
L'impressione che ho avuto e continuo ad avere dai tuoi post e' che tu parta
armata di tutta la buona volonta' ma che sotto sotto non hai nessuna voglia
di studiare da sola, perche' preferisci ricevere "l'insegnamento diretto" di
chi ne sa di piu'. Quando ho detto che a mio avviso sei una miracolata (e ci
ho messo la faccina -> =) <- ) mi riferivo al fatto che un gran numero di
persone (per le quali ho un'enorme considerazione e stima) pur vedendo
quanto effettivamente ti "mancava" di conoscienze, si sia messa li' ad
aiutarti "passo-passo". Non sto dicendo che e' una cosa brutta, eh? Anzi. E'
una cosa "rara" pero'. Da qui il "miracolata".
Ogni volta che ti leggo pero', vedo che ti sbatti su un problema diverso e/o
piu' complesso e che arrivi chiedendo cose generalmente assai "semplici" o
meglio "basilari", che spesso poco hanno a che vedere con l'ambito in cui il
problema si presenta. Tu dici che "la risposta semplice sarebbe stata
guardati questi eventi e ritorna quando hai fatto". Io invece ti dico:
*cercateli* da te' sti benedetti eventi, *capisci* da sola a cosa servono e
quali sono quelli che potrebbero tornarti utili, *prova* ad usarli e poi,
magari con due righe di codice sensate alla mano chiedi: io ho provato
cosi', cosi' e cola' ma non funziona, mi date una mano?
Non provare a costruire un razzo spaziale, se non sai costruire neanche una
cariola (non dico che sia cosi' sul serio, e' un'analogia). Nel tuo caso
specifico ("Se sono dentro una cella e volessi usare il tasto TAB per
spostarmi a quello dopo come posso fare?") hai provato a pensare da sola a
come potevi fare prima di chiederlo? E se si, possibile che non ti sia
venuto in mente _proprio_ niente? Neanche, chesso', il fatto che con
KeyPress "forse" potevi intercettare il tasto tab?  - Cosa che invece, a
quanto ho capito, non puoi fare senza opportuni accorgimenti perche' il TAB
e' un tasto "difficilmente intercettabile" in VB, ma questo e' un altro
discorso - I nomi dei metodi non dico nell'help, ma nell'IntelliSense non ti
hanno messo nell'orecchio la pulce che potessero servire a qualcosa di
affine a quello che dovevi fare? Sara' impressione mia, ma mi pare che tu
sia molto "pigra" e che fai molto affidamento sulla gentilezza di chi ti ha
aiutato finora. Io al posto tuo, farei uno sforzo personale piu' grande,
quanto meno per dimostrare a chi mi ha aiutato che non chiedo "a vanvera".
Mi sono sentito di fartelo notare e l'ho fatto.
Io continuero' a leggerti e se avro' la possibilita'/capacita'(/pazienza?)
di rispondere ai tuoi quesiti lo faro' volentieri, come faccio sempre quando
posso sul ng. In questo caso, non ho la piu' pallida idea di come funzioni
la S-Grid, anche se a furia di parlarne e di "spizzicare" le pagine di
vbAccelerator me ne sono fatto un'idea. Il mio consiglio, in poche parole e'
"cerca di farlo prima di chiederlo". Poi sei libera di comportarti come
credi, a me non devi niente, ne' pretendo alcunche'.
Happy Coding,


 Ci sarai!!! Non dire parolacce... Subclassing a chi eh!?!
La verità? Io non lo so! Direi (ma non ne sono affatto certo) che è 'na roba
che si mette fra Win e il programma (o viceversa) e consente di fare quanto
il programma non potrebbe perchè non vedrebbe/consentirebbe nemmeno.
Non l'ho mai usato, nè mai lo userò.
Ier sera ho provato la GetKeyState indicata da emmexx e, non avendola
capita, l'esempio di ApiGuide. Mi si è impastato il PC e VB si chiudeva che
era un piacere, pur dopo aver interrotto il programma e premuto
Shift+freccia in alto.

 Seppur in inglese io non l'ho trovato scritto da nessuna parte
Non credo che sia scritto, ma è una delle prime cose che si scoprono
scrivendo qualcosa che abbia l'intento di abbordare il comportamento
dell'applicativo immaginando quello dell'utente.
E' palese (visto che parliamo di Win) lo spirito per il quale viene segato
da Win stesso, io credo che avrebbero fatto meglio a trattarlo (o, meglio, a
renderlo trattabile) come ogni altro tasto, ovviamente a rischio e pericolo
del programmatore.

 
Come, ti si e' impastato tutto? Spero tu non abbia usato l'esempio che 
ho postato paro paro?
Prima di postare il codice la ho provata e funziona senza problemi.
Sul lostfocus di un controllo la lanci e la funzione ti dice se l'ultimo 
tasto premuto era un tab.
ciao
	maxx


 l'ultimo tasto premuto era un tab.
Ok, ma non l'ho capita, sinceramente. O, quantomeno, non sono riuscito,
adattandola per un altro tasto, a capire cosa significa quel <0 che dovrebbe
rendere la GetKeyState. Non ho approfondito.

 Il tuo sě, paro-paro (perchč?), non crea problemi, ma non l'ho capito.
E, comunque, il MsgBox non viene mai esposto...
Me la "racconteresti"?

Il 04/05/2004 9.04, Lupo scrisse:

MSDN eventi keyUp e keyDown:
"KeyDown e KeyUp non vengono richiamati per:
Il tasto INVIO se il form include un controllo CommandButton con la 
proprietà Default impostata su True.
Il tasto ESC se il form include un controllo CommandButton con la 
proprietà Cancel impostata su True.
Il tasto TAB. "


 
"If the high-order bit is 1, the key is down"
high-order bit a 1 non corrisponde ad un long "negativo"? :-)


 la S-Grid,
Posso essere cattiva?
Vabbč va meglio fare la brava
Deborah
PS
Perň no vale ora ho paura ad aprire nuovi thread e questo non č giusto!

 Shift+freccia in alto.
wow Non sono la sola ad avere questo tipo di casini!!!

 Scuse a Deborah per aver scritto stupidate. :-)
???? Hai bevuto anche tu ieri sera! Ma di quale stupidate parli!!!! :))))
Grazie
Deborah


 giusto!
beh... se vuoi aprire nuovi thread, conta fino a dieci, valuta se sei
disposta a sopportare qualche dileggio nel caso in cui la domanda sia
"banale", e poi decidi.
comunque, in futuro, prova a esplicitare meglio qual è la difficoltà che
incontri e quali sono stati i tentativi che hai fatto per risolvere il
problema: nello specifico del tasto tab ti saresti risparmiata la ramanzina
di lokar.
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 
fucking, read the fucking manual!
RTML cosa sara'?
:-)
	maxx


 
Come avrai capito, il tab non e' trattato da vb come un tasto normale.
Siccome e' un problema che si affronta per gestire casi particolari, poi 
si mette tutto in un cassetto, ho trattato la tua richiesta d'aiuto come 
se tu avessi chiesto "come si intercetta il tasto A", mentre il tab va 
trattato a parte.
Inoltre ti ho indicato un link al sito di vbaccelerator in cui  c'e' un 
pezzo di codice (txtedit_KeyDown) che e' evidentemente sbagliato e non 
funzionara' mai in vb, almeno per quel che riguarda il tab.
Purtroppo sono astemio e quindi mi tocca prendermi piena responsabilita' 
di cio' che scrivo. :-)
ciao
	maxx


 saresti risparmiata la ramanzina di lokar.
Io dalla tua domanda iniziale ("Se sono dentro una cella e volessi usare il
tasto TAB per spostarmi a quello dopo come posso fare?") ho inteso, posso
dire a torto a questo punto ma non posso certo imputarmene la colpa, che non
avessi fatto neanche un tentativo. Hai fatto veramente tutti i tentativi che
hai detto? Bene, eri molto piu' avanti di quello che pensassi, ma da quanto
hai scritto come potevo/potevamo saperlo? Nella tua domanda non compare
nessuno dei problemi che hai riportato poi (che potevano si, essere uno
spunto valido di discussione, come le considerazioni che ha evidenziato
Lupo), ne' dei tentativi che hai fatto e dei comportamenti "anomali"
rispetto a quanto ti aspettavi.
Comunque, tornando sul problema specifico (anche se ormai nel thread e'
stato detto piu' o meno tutto):
il tasto Tab (codice ASCII 9) non e' intercettabile con gli eventi KeyPress,
KeyDown, KeyUp a meno che (come evidenzia Lupo) sul form sia presente _un
solo_ controllo che puo' prendere il focus (o anche nessuno se e' il form
stesso ad intercettare la pressione). Se ce n'e' piu' di uno, il TAB non e'
intercettabile "semplicemente".
Windows (le basi, le basi) si basa su un sistema di messaggi che "viaggiano"
nel sistema operativo. Praticamente ogni azione e' riconducibile ad un invio
di un messaggio dal e al S.O. (SendMessage). I messaggi passano per _tutti_
i programmi in esecuzione, che pero' "si prendono" solo i messaggi che gli
interessano, re-inoltrando gli altri al S.O. (e quindi al programma
successivo se vogliamo).
Se uno si infila in ascolto in mezzo a questa "catena di messaggi" e' in
grado di sapere _tutto_ quello che accade nel S.O. e mettendosi in ascolto
per particolari messaggi (pressione del tasto Tab ad esempio) ha un
controllo molto piu' "a basso livello" di quello che accade e puo' quindi
sfruttare "eventi" che normalmente non vengono intercettati. Tale tecnica e'
detta Subclassing (per l'input in particolare, come tastiera e mouse ad
esempio, si parla di Keyboard o Mouse Hook). Sul SubClassing trovi molti
tutorial su Internet, se e' un "sistema" che ti interessa. Considera che
quasi tutti i controlli di vbAccelerator implementano l'interfaccia
ISubclass o affini, che fanno proprio questo.


 RTML cosa sara'?
Rip The Manual Laughing? =)


 di lokar.
Me la sarei risparmiata volentieri ma non perchè mi da fastidio essere
ripresa anzi, ma
se la critica è fatta in questo modo non mi piace
Deb

 ISubclass o affini, che fanno proprio questo.
Non avendo bene a fuoco tutto quello che hai detto deduco che sia meglio
leggere qualcosa al riguardo cosi
evito di fare altre domande stupide =)))
Baci ragazzi ora mi sento meglio, però questo sentirmi meglio mi preoccupa
hehehe....
Se prima avevo paura di aprire nuovi thread per non prendermi cosi tante
critiche ora non vorrei ri-lasciarmi
andare hehehe!!!
Smack
Debby
PS
Vi capita a voi, che mentre lavorate ad un progetto vi passi la voglia di
terminarlo?
Da quando ho aperto questo thread ad oggi non ho aperto più il mio progetto,
ufffffffffff mancanza di idee
o quello che voglio fare è troppo difficile?
Mah!!  :P

Il tuo link mi č stato molto di aiuto, ho risolto il problema
sull'editazione delle celle.
Mi mancava effettivamente un passaggio fondamentale
Deb

 voglia di terminarlo?
Sě, sistematicamente.
Anche se il mio lavoro continua a piacermi, finita la fase di progettazione
e strutturazione iniziale, non mi diverto piů.

 e strutturazione iniziale, non mi diverto piů.
Sono in quella fase ufffff.
Debby

 Sergio sei sempre fantastico come sempre
ma non chiamarmi più sergetto :-)
