Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178

    [VB6] RichTextBox con al massimo 2 righe

    è possibile creare una richtextbox(o qualche altro controllo magari) che possa avere al massimo 2 righe di testo?
    ad esempio se scrivo il testo:

    ciao
    a tutti
    e possibile che in qualche modo il tasto invio venga disattivato o qualcosa del genere?

    ho provato ad usare una textbox... xke sarebbe stato più facile controllare il tasto "invio" di ritorno a capo.... ma nelle textbox anche se inserisco "chr(13)", non va a capo, ma crea un carattere strano.

    il codice che ho provato con la textbox è questo:

    codice:
    Private Sub Text1_KeyPress(KeyAscii As Integer)
    
        If KeyAscii = 13 Then
            KeyAscii = 0
            Sel = Text1.SelStart
            Text1.SelStart = 0
            Text1.SelLength = Len(Left(Text1.Text, Sel))
            txt1 = Text1.SelText
            Text1.SelStart = Sel
            Text1.SelLength = Len(Right(Text1.Text, Sel))
            txt2 = Text1.SelText
            Text1.Text = txt1 & Chr(13) & txt2
            Text1.SelStart = Sel + 1
        End If
    End Sub

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Ti posto questo codice per determinare il numero di righe in una textbox multiriga. Utilizza l'API SendMessage.
    Devi impostare nella proprietà textbox Multiline = True e se vuoi lo scrollbars = 2-Verticals (anche se con due righe a volte non serve, perchè le riesci a vedere entrambi)

    codice:
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long
    Private Const EM_GETLINECOUNT = &HBA
    
    Private Sub Text1_KeyPress(KeyAscii As Integer)
        If KeyAscii = 13 Then
            linecount = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, ByVal 0&)
            If linecount = 2 Then
                KeyAscii = 0
            End If
            Text1.SetFocus
        End If
    End Sub
    Ciao

  3. #3
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    grazie mille del codice! ora lo provo
    scusa, un'altra cosa... se non ti crea disturbo, mi potresti dare qualche indirizzo o qualcosa per documentarmi meglio sulle API? così invece di copiare passivamente il codice, magari lo capisco anche (scusami, ma odio non saper usare le stringhe che inserisco nei miei programmini)...

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Hai ragione, guarda in questo sito dovrebbero essere elencate tutte le API di Windows (cerca sotto API Index):

    http://vbnet.mvps.org/

    Qui invece trovi degli help:

    http://www.maurorossi.net/pagine/guide.htm

    Guarda anche questo:

    http://programmazione.html.it/visualbasic/faq/65.htm

    Ciao e buon lavoro.

  5. #5
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    Potresti vedere se il campo di testo contiene già un carattere di crlf:

    codice:
    Private Sub Text1_KeyPress(KeyAscii As Integer)
    
      If InStr(1, Text1.Text, vbCrLf) > 0 And KeyAscii = 13 Then
        KeyAscii = 0
      End If
    
    End Sub
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Per kalosjo:
    Sì il tuo codice è molto più immediato e funziona correttamente.
    Quello che ho postato io diventa più veloce quando si superano le due righe.

  7. #7
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    Originariamente inviato da mgmg
    Per kalosjo:
    Sì il tuo codice è molto più immediato e funziona correttamente.
    Quello che ho postato io diventa più veloce quando si superano le due righe.
    Infatti, per più di due righe il mio dovrebbe essere pesantemente modificato, il tuo vale sempre....
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  8. #8
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    @kalosjo grazie mille per il codice, ho provato tutti e due e vanno entrambi, ora decido quale è meglio x quello che devo 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.