Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.visual-basic > #19349 > unrolled thread

Enter al posto tab .

Started by"Ettore" <ettor50@nomail.com>
First post2018-05-02 14:08 +0200
Last post2018-05-03 13:41 +0200
Articles 8 — 2 participants

Back to article view | Back to it.comp.lang.visual-basic


Contents

  Enter al posto tab . "Ettore" <ettor50@nomail.com> - 2018-05-02 14:08 +0200
    Re: Enter al posto tab . "Sauro" <vicchi@crsscala.it> - 2018-05-02 14:33 +0200
    Re: Enter al posto tab . "Sauro" <vicchi@crsscala.it> - 2018-05-02 15:06 +0200
      Re: Enter al posto tab . "Sauro" <vicchi@crsscala.it> - 2018-05-02 15:09 +0200
        Re: Enter al posto tab . "Ettore" <ettor50@nomail.com> - 2018-05-02 17:13 +0200
        Re: Enter al posto tab . "Ettore" <ettor50@nomail.com> - 2018-05-02 17:25 +0200
          Re: Enter al posto tab . "Sauro" <vicchi@crsscala.it> - 2018-05-02 19:33 +0200
            Re: Enter al posto tab . "Ettore" <ettor50@nomail.com> - 2018-05-03 13:41 +0200

#19349 — Enter al posto tab .

From"Ettore" <ettor50@nomail.com>
Date2018-05-02 14:08 +0200
SubjectEnter al posto tab .
Message-ID<pcc9ne$lpi$1@dont-email.me>
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

[toc] | [next] | [standalone]


#19350

From"Sauro" <vicchi@crsscala.it>
Date2018-05-02 14:33 +0200
Message-ID<pccb79$1r4s$1@gioia.aioe.org>
In reply to#19349
[cut]

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

[toc] | [prev] | [next] | [standalone]


#19351

From"Sauro" <vicchi@crsscala.it>
Date2018-05-02 15:06 +0200
Message-ID<pccd5h$1umn$1@gioia.aioe.org>
In reply to#19349
[CUT]

Questo invece dovrebbe farti accettare solo
numerti, separatore decimale o segno negativo.

Ciao
Sauro 

[toc] | [prev] | [next] | [standalone]


#19352

From"Sauro" <vicchi@crsscala.it>
Date2018-05-02 15:09 +0200
Message-ID<pccda3$1v0g$1@gioia.aioe.org>
In reply to#19351
[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


[toc] | [prev] | [next] | [standalone]


#19353

From"Ettore" <ettor50@nomail.com>
Date2018-05-02 17:13 +0200
Message-ID<pcckj0$5nn$1@dont-email.me>
In reply to#19352
>"Sauro"  ha scritto nel messaggio news:pccda3$1v0g$1@gioia.aioe.org... 
>[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

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 ! 

[toc] | [prev] | [next] | [standalone]


#19354

From"Ettore" <ettor50@nomail.com>
Date2018-05-02 17:25 +0200
Message-ID<pccl95$ash$1@dont-email.me>
In reply to#19352
>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
>.................. CUT
>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 .

[toc] | [prev] | [next] | [standalone]


#19355

From"Sauro" <vicchi@crsscala.it>
Date2018-05-02 19:33 +0200
Message-ID<pccsq0$sf6$1@gioia.aioe.org>
In reply to#19354
[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 

[toc] | [prev] | [next] | [standalone]


#19357

From"Ettore" <ettor50@nomail.com>
Date2018-05-03 13:41 +0200
Message-ID<pceshj$44j$1@dont-email.me>
In reply to#19355
Figurati Sauro nessun problema.
E giorni che mi ci sto picchiando con le validazioni .
Materiale non ce ne' abbastanza, e se si trova non rispecchia quanto ti 
serve, perché non sai tutto, sei principiante e via dicendo, non capisci in 
quale situazione devi utilizzarli e con quale classe........... difatti
cercando
https://www.google.it/search?biw=1006&bih=628&ei=niLqWt2AEeLw6ASDgpzwBg&q=Il+tipo+System.Windows.Forms.KeyPressArgs+non+e%27+definito&oq=Il+tipo+System.Windows.Forms.KeyPressArgs+non+e%27+definito&gs_l=psy-ab.3...124189.154653.0.156909.59.58.0.0.0.0.253.5017.43j9j2.54.0..2..0...1.1.64.psy-ab..5.49.4356...0j0i131k1j0i22i30k1j33i22i29i30k1j33i160k1.0.lBDwr7NRjrk
-----------------------
https://msdn.microsoft.com/it-it/library/system.windows.forms.keyeventargs(v=vs.110).aspx
------------------------
http://www.settorezero.com/wordpress/vbnet-accettare-in-una-textbox-soltanto-numeri-o-caratteri-predefiniti/
--------------------------------
Non mi trovo con gli eventi KeyPress devi utilizzarne alcuni e non altri, 
KeyDown altri diversi............... e.KeyData, e.KeyChar ecc.............
Quindi già essendo principiante e mettendomi ogni giorno a leggermi alcune 
pagine, alla fine non trovo tanta documentazione che rispecchi vari esempi e 
molteplici per le tipologie richieste. Questo intendo.
Comunque ho una marea di libri e ogni giorno cerco.

Penso che, non abbia solo io problemi ma coloro che vogliono apprendere 
debbano trovare esempi e listati con, con vari tipologie di uso e in quale 
modo usarli .
Vabbè saluto e concludo, che mi metto a leggere dei pdf.
Ti auguro una felice giornata e ti ringrazio.
Ettore

>"Sauro"  ha scritto nel messaggio news:pccsq0$sf6$1@gioia.aioe.org...

>[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.
----------------- ma figurati !
>Ciao, Sauro

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.lang.visual-basic


csiph-web