Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178

    [VB6] Lettere si e Lettere no

    all'interno di una struttura di selezione di una routine "text1_change" dovrei impedire l'inserimento (compreso con il comando incolla) delle lettere(a,b,c...), mentre all'interno di un'altra struttura di selezione, sempre nella stessa routine, dovrei permettere l'inserimento di lettere.

    ho provato con la funzione replace, ma diventa lunghissimo, contando che per ogni replce devo fare una struttura di selezione per spostare selstart nel punto giusto, infatti per ogni replace devo fare:

    codice:
        
    Text1.SelLength = Len(Text1.text)
    Sel = Len(Text1.SelText)
    
        If Replace(txtDati.Text, "A", "") Then
    
            txtDati.Text = Replace(txtDati.Text, "A", "")
            Sel = Sel - 1
    
        End If 
    
    If Sel <= 0 Then
        Text1.SelStart = Len(Text1.text)
    Else
        Text1.SelStart = Len(Text1.text) - Sel
    End If
    c'e un metodo più semplice? che sicuramente io ignoro?

  2. #2
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao Artemio,
    posto due esempi che consentono solo l'inserimento di numeri nelle Txt1 e txt2:
    codice:
    Private Sub Txt1_Change()
        
        Dim ix As String
        Dim ixs As String
        Dim ix2 As String
        
        ix = Len(Txt1.Text)
        If ix = 0 Then
            Exit Sub
        End If
        
        ixs = (Txt1.Text)
        If IsNumeric(Txt1.Text) Then
            Txt1.SetFocus
            Else
            MsgBox "Casella di testo Txt1: INSERIRE SOLO VALORI NUMERICI!", vbCritical, "nomedeltuoprogramma"
            ix2 = Mid(ixs, 1, (ix - 1))
            Txt1.Text = ix2
            Exit Sub
        End If
    End Sub
    '----------------------------------------------------------------------------------
    Private Sub text2_change()
        
        Dim txtlen As Double
        
        On Error Resume Next
        
        If Not IsNumeric(Text2.Text) Then
            txtlen = Len(Text2.Text) - 1
            Text2.Text = Mid(Text2.Text, 1, txtlen)
            Text2.SelStart = txtlen + 1
        End If
    
    End Sub
    LM

  3. #3
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    @LMondi grazie per il codice ma fin quì c'ero riuscito anche io. il prob e che il tuo codice funziona solo se inserisco caratterei alla fine della stringa.
    esempio scrivo dentro all textbox:
    123456789
    se scrivo una lettere tra "5" e "6"
    12345A6789
    avro questo risultato
    12345

  4. #4
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Sì, ma uno dei due esempi impedisce di scrivere lettere..., allora non è quello che volevi: "dovrei impedire l'inserimento..." ?
    LM

  5. #5
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    si quello che vorrei fare è impedire l'inserimento... ma se l'utente che inserisce la cifra sbaglia a digitare e deve tornare indietro, non voglio che si cancelli il testo finale. (inoltre vorrei anche che il SelStart non torni alla fine o all'inizio, ma che torni al punto di inserimento, cmq un metodo per fare questo l'ho trovato, anche se in particolarissime circostanze non funziona...)

    è per che questo volevo usare replace... ma mi chiedevo se magari ci fosse un'altro modo, più semplice del tipo "evento keypress", il problema è che vorrei fare in modo che se il primo carattere inserito è una lettera allora sia permesso di inserire lettere e numeri, mentre se il primo carattere fosse un numero, voglio che la textbox permetta di inserire solo numeri.

    proprio per questo non saprei come gestire l'evento keypress...

  6. #6
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, a te serve che vengano inseriti solo numeri interi (senza virgole o punti)?
    e poi in un'altra casella solo caratteri alfabetici(tutti, anche i simboli, tranne i numeri)?
    Jupy

  7. #7
    Ciao..basta fare così:
    codice:
    If right(text1.text,1) <> "" And right(text1.text,1) = "a" 
    or right(text1.text,1) = "b" Then
    Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
    Text1.SelStart = Len(Text1.Text)
    In questo caso non vengono inserite le lettere "a" e "b".
    Tutto nell'evento text1_change..

    fammi sapere..

    ciao

  8. #8
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    sempre nella stessa casella... se il primo carattere scritto è un numero allora devono esserci solo numeri, se il primo carattere è una lettere, allora numeri e lettere, virgole simpbli etc non devono essrci, ma per quello mi arrangio. cmq ho pensato che con un evento "Text1_KeyPress", si può fare facilmente...

    ma ti spiego il probeblema e l'impostazione del codice:
    in questa Textbox(Text1) devono essere visualizzati centinaia di valori/stringhe; in pratica ho una listbox, e, a secona dell'elemento che seleziono, su Text1.Text viene visuallizata una stringa diversa con il relativo codice per controllare ciò che inserisce l'utente(lunghezza stringa, numeri/lettere, virgole, punti etc), quindi per non rendere gigantesco il codice all'interno di Text1_Change, utilizzo una routine a parte, del tipo

    Private Sub Lista1 ()

    che poi richiamo all'interno di Text1_change con una struttra di selezione (del tipo: se lstLista.listindex = 1 allora esegui Lista1..).
    non so se hai capito...
    in pratica dovrei fare la stessa cosa con l'evento Text1_KeyPress, intendo creare una routine a parte, da poi richiamare, sempre con una struttura di selezione(la stessa cosa che ho fatto con Text1_change insomma) ... ma come devo fare??
    intendo:
    devo scrivere qualcosa del tipo
    Privare Sub Lista1(KeyAscii as integer)
    ??
    oppure cosa?

    ecco io ho pensato a questa soluzione, di usare Text1_KeyPress... non so se poi qualcuno mi sa consigliare qualche metodo più funzionale e magari più adatto a quello che devo fare.

  9. #9
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    @MdE2005 ma questo codice funziona solo se il carattere viene inserito alla fine della stringa...

  10. #10
    Allora non ho ben capito..questo comunque va bene per quando si scrive nella textbox, ma da quanto ho capito l'inserimento non viene fatto manualmente ma tramite codice, del tipo "text1.text = list1.list(list1.listindex)", giusto?
    Te vuoi che prima di inserire la stringa nella casella di testo ci sia il controllo dei caratteri e vuoi impedire che determinati caratteri non siano scritti nella stringa, vero?

    rispondi a queste domande, forse qualcosa si può fare..

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.