Newsgroup: it.comp.lang.visual-basic
Titolo: Enter al posto tab .

Buongiorno a tutto il gruppo IT.CLVB
Sono alle prime armi sulla programmazione, quindi devo fare ancora tanta 
strada, anche se ne ho 58 ma di panini ne ho mangiati parecchi, qui invece 
mi tocca cercare di capire alcune cose importanti.
La mia domanda e' questa.
------------ Win7.64b, MS.Visual Studio Enterprise 
2017---------------------------.
-------------------------
Debbo crearmi un lavoro in VB, che mi consenta di fare dei calcoli temporali 
date e trasformazioni, fino a calcolarmi la posizione Luna e Sole.
Gia' sviluppato in excel, che a causa di limitazioni faccio fatica ad andare 
avanti.
 
Quindi debbo crearmi una interfaccia dove inserisco i dati (utilizzando 
TexBox) e li ottengo da altre TextBox (not writable).
Quindi inserimento, giorno, mese, anno, pra, minuti, secondi e centesimi 
peruna serie di calcoli, compresi Temperatura e pressione millibar.
 
Nei campi Giorni e gli altri i dati debbono essere validati anche.
Ma mi interessa sapere come posso fare a sostituire il TAB con Enter (char 
13)
O letto dei vari eventi come KeyPress, KeyDown, e KeyUp, credo che il 
KeyPress possa andare
-----------------------------------------------------------------------------------
CODICE.
 
Public Sub TextBox1_KeyPress(sender As System.Object, e As 
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
       Dim giorno As Integer
       If (e.KeyChar <> Microsoft.VisualBasic.ChrW(Keys.Back)) And 
(Char.IsNumber(e.KeyChar.ToString(), 0) = False) Then  'Blocca INS character
           tipValidation.Show("Numeric Input Required", sender, 5000)
           e.Handled = True
       End If
       If (IsNumeric(TextBox1.Text) = True) Then
           giorno = TextBox1.Text
           If (giorno < 1) Then
               MsgBox("Range 1-31", MsgBoxStyle.Information, "FUORI DATA")
               TextBox1.Clear()
               e.Handled = True
           End If
 
           If (giorno > 31) Then
               MsgBox("Range 1-31", MsgBoxStyle.Information, "FUORI DATA")
               TextBox1.Clear()
               e.Handled = True
           End If
       End If
   End Sub
 
===========================================================
giusto per gradire.........
Devo usare Enter al posto di Tab
Devo convalidare i dati in modo che non si possano inserire i caratteri che 
NON SONO NUMERICI .
Usare i caratteri numerici in un certo range .
 
Grazie per ogni aiuto e consiglio.
 
PS. ho girato in rete e ho trovato vari argomenti ma sono diversi in 
tipologia.
 
Tra l'altro questo e' un test per le prove, il progetto e' questo.
https://drive.google.com/open?id=1K1-SpAQRROFAHA9LaS_Gy2Rjfwg-hW4F
 
 

[cut]
 
L'insieme delle due funzioni seguenti
provoca il tab avanti premendo Invio 
 
 

[CUT]
 
Questo invece dovrebbe farti accettare solo
numerti, separatore decimale o segno negativo.
 
Ciao
Sauro 
 
 

[CUT]
 
Questo invece dovrebbe farti accettare solo
numeri, separatore decimale o segno negativo.
 
Private Sub Text1_KeyPress(KeyAscii As Integer)
Const MaxDec As Integer = 2
Dim MaxCar As Integer
Dim DoveVirgola As Integer  ' se Raggiunti massimi decimali
Dim NumIntero As Integer
MaxCar = 12
If Text1.MaxLength > MaxCar Then MaxCar = Text1.MaxLength
NumIntero = MaxCar
If MaxDec > 0 Then NumIntero = MaxCar - (MaxDec + 1)
If KeyAscii = 45 Then ' segno negativo
    If Len(Trim(Text1.Text)) = 0 Then
        KeyAscii = KeyAscii
    Else
        KeyAscii = 0
    End If
    Exit Sub
End If
If KeyAscii = 44 Or KeyAscii = 46 Then
    If Text1.Text = "" Or Text1.SelLength = Len(Text1.Text) Then
        Text1.Text = "0."
        Text1.SelStart = 2
        KeyAscii = 0
        Exit Sub
    End If
    If InStr(Text1.Text, ".") > 0 Or InStr(Text1.Text, ",") > 0 Then
        KeyAscii = 0
    Else
        KeyAscii = 44
        Exit Sub
    End If
End If
If KeyAscii <> 8 Then
    If (KeyAscii >= 48 And KeyAscii <= 57) Then
        KeyAscii = KeyAscii
    Else
        KeyAscii = 0
    End If
    If Len(Text1.Text) = MaxCar And Text1.SelLength < 1 Then ' Raggiunta 
massima lunghezza
        KeyAscii = 0
    End If
    If InStr(Text1.Text, ",") > 0 Then
        DoveVirgola = InStr(Text1.Text, ",")
        If Len(Text1.Text) = DoveVirgola + MaxDec And Text1.SelLength < 1 
Then
            KeyAscii = 0
        End If
    Else
        If Len(Text1.Text) = NumIntero And Text1.SelLength < 1 Then ' 
Raggiunta massima lunghezza per intero
            KeyAscii = 0
        End If
    End If
End If
End Sub
 
 
Ciao
Sauro
 
 
 

>"Sauro"  ha scritto nel messaggio news:pccda3$1v0g$1...@gioia.aioe.org... 

GRAZIE Sauro
Ho trovato il libro A scuola di Visual Basic 2017 che sto guardando e non 
avevo trovato nulla inerente il codice.
Poi modificando una chiave di ricerca delle solite fork di ricerca in 
google, ho trovato una cosa interessante per l'evento " KeyDown " , anche 
perché inserendo (e.KeyChar), mi dava errore.
Veniva menzionato questo codice sotto che non ha dato errori.
Che ovviamente condivido.
Ovviamente sono andato a controllare la tabella asci che mi ero scaricato. 
una che mi visualizza i caratteri ascii.. senza i ctrl, alt, shift+ .
E noto appunto una chiave importante "  If (KeyAscii >= 48 And KeyAscii <= 
57) Then "
Che indica che leggo in questo modo "Se inserito carattere Ascii =48 ( 
numero 0) e inserito carattere asci minore di 57 (carattere 9) ALLORA, il 
carattere inserito e un NULL interpretato nella textbox.
Che e' il pezzo importante del codice, anche da iniziato e con voglia di 
imparare, capire questo e' gia' un buon passo....
Tra le altre cose, vedo che utilizzando il ToolTip(text), mi appare il 
messaggio di cosa si dovrebbe inserire, ma un Message Ballon mi piacerebbe, 
ma man mano cerco e vedo di capire-
 
Questo sotto infatti.
Mi sposta il cursore usando RETURN, ma sposto il cursore al prossimo 
textbox, che tra l'altro e' una cosa che ho notato in vari programmi, se 
inserisci nulla e fai invio non succede nulla, ti sposti tra i vari text, ma 
se inserisci un carattere NUMERICO e.. "&" se questo non e' in range, allora 
mi da' errore in MessageBox.
Importante.  ............... quante cose utili e interessanti.
 
------------------------------------------------------------------------------
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As 
System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
       Dim KeyAscii As Short = Asc(e.KeyData)
       Dim giorno As Integer
       If e.KeyData = Keys.Return Then            'Per utilizzare Invio per 
spostarsi
           TextBox2.Focus()                                'Posizione dove 
si vuole finisca il cursore
       End If
' --------------------codice sopra 3 righe pe ril return !
 
       If KeyAscii <> 8 Then
           If KeyAscii > 57 Or KeyAscii < 48 Then
               KeyAscii = 0
           End If
       End If
       If (IsNumeric(TextBox1.Text) = True) Then
           giorno = TextBox1.Text
           If (giorno < 1) Then
               MsgBox("Pistola giorno da 1-31", MsgBoxStyle.Information, 
"Giorni da 1-31")
               TextBox1.Clear()
               e.Handled = True
           End If
 
           If (giorno > 31) Then
               MsgBox("Pistola giorno da 1-31", MsgBoxStyle.Information, 
"Giorni da 1-31")
               TextBox1.Clear()
               e.Handled = True
           End If
       End If
   End Sub
 
=====================================================
Che ti sembra Sauro ?
Ora comunque provo il tuo, chiudo una prova di rispetto e metto la tua, che 
almeno mi fa' capire e cercare di imparare.
Mi piace il VB.Net e ci sono moltissime cose, il linguaggio complesso, 
notando anche una marea di funzioni, eventi, oggetti e tanto che vedo sul 
tasto destro del mouse comparire .!
Pazzesco
......... dovrei trovare in rete un libro completo, ho scaricato con emule 
tanta roba, ma dalle basi e da tutti i comandi spiegati, non so' se conosci 
qualcosa ...c'e' una marea di roba, in inglese' e' ostico per me' anche se 
leggo roba di astronomia meccanica planetaria sistema solare, in inglese ma 
no molto complesso. E comunque preferisco per imparare in italiano.
Tornassi indietro di qualche anno vorrei imparare il C++ e il VB, purtroppo 
lavorando ancora non ho il tempo , ma non essendo spossato non mi rompe la 
palle nessuna.
 
Cordiale a tutto il gruppo.spero di imparare da voi molto !
 
Grazie ! 
 

Sauro
 
Ho tagliato un bel pezzo, hoprovato a compilarlo ma vedo onde in rosso, 
quindi ho modificato Text1, in textbox1,
Ma da' errore sintassi  ( TextBox1.SelLength .............. e prima .. 
TextBox1.SelStart ) dicendo che non e' un membro di TextBox ...... che gia' 
mi sto grattando la fronte...........
BC30035 - 
www.bing.com/search?q=BC30035+Visual+Basic+AND++VB.NET+Errore+di+sintassi.&form=VSHELP
 
 
ciao .
 

[cut]
 
In realtà le Sub che ho postato funzionano
con VB6.
Credevo che con pochi aggiustamenti potessero
funzionare anche con VB.net (che in realtà non
conosco)
Scusa il disturbo.
 
Ciao, Sauro 
 
 

Ciao, Sauro