Qualcuno conosce il comando, o un API, per sapere se il caret di una textBox (multiline = true) è ad inizio riga?
Grazie
![]()
Qualcuno conosce il comando, o un API, per sapere se il caret di una textBox (multiline = true) è ad inizio riga?
Grazie
![]()
Ci sono delle APi che controllano queste cose, ma non ricordo i nomi.
Potresti fare così:
Iif(Mid(Text1.Text, Text1.Selstart -2, 2) = vbCrLf, True, False)
Se questo Iif restituisce True, dovrebbe essere a inizio riga (non a inizio della textbox, però!).
Non l'ho provato. Fammi sapere se funziona!
Ciao,
Berello
"Meglio un aiuto che 50 consigli"
(tratto dalle barrette Elah)
Ho un po' modificato la funzione...
Metti in una finestra il controllo Text1 (.Multiline = True) e Command1. Copia questo codice, poi avvia il progetto e fai click sul pulsante.
Private Sub Command1_Click()
If Text1.SelStart > 1 Then
MsgBox IIf(Mid(Text1.Text, Text1.SelStart - 1, 2) = vbCrLf, "Il cursore è a inizio riga", "Il cursore non è a inizio riga"), vbOKOnly + vbInformation, "Controllo eseguito"
Else
If Text1.SelStart = 0 Then MsgBox "Il cursore è a inizio riga", vbOKOnly + vbInformation, "Controllo eseguito"
End If
End Sub
Poi DIMMI se funziona come volevi tu...
Ciao,
Berello
"Meglio un aiuto che 50 consigli"
(tratto dalle barrette Elah)
proverò e ti farò sapere
grazie
![]()
funziona a meraviglia
grazie
:bubu:
Scusa berello, mi potresti spiegare questa parte di codice
-------------------------------------------------------------
Mid(Text1.Text, Text1.SelStart - 1, 2) = vbCrLf
-------------------------------------------------------
grazie ancora![]()
Preleva i due caratteri prima del cursore e verifica se sono uguali a vbCrLf (cioè 10 e 13, i caratteri usati per andare a capo).
Mid(Text1.Text, Text1.SelStart - 1, 2)
è una funzione per lavorare con le stringhe. La prima variabile passata è la stringa da elaborare, la seconda è il punto di partenza dal quale iniziare a leggere il testo (in questo caso Text1.SelStart indica l'inizio della selezione, cioè anche la posizione del cursore, sottraendo di 1 si va' al carattere precedente) e la terza indica la quantità di caratteri da prelevare (in questo caso 2, come vbCrLf).
Se il cursore si trova a inizio riga, il carattere precedente al cursore sarà per forza un invio a capo... Il programma verifica solo questo!
Spero di essermi spiegato...
Scusa se ti ho risposto solo ora, ma ero partito...
Ciao,
Berello
"Meglio un aiuto che 50 consigli"
(tratto dalle barrette Elah)
grazie![]()
Scusate forse non c'entra nulla.
A me servirebbe visualizzare in una label, il numero di riga e il numero di colonna, dove si trova il cursose in una rtftext (che non dovrebbe essere poi tanto diversa da una textbox con la proprietà multiline = true).
Questo funziona con una TextBox:
codice:Public Function RigaTextbox(TextBox As TextBox) As Integer Dim Dove As Integer, RighePrima As Integer Do RighePrima = RighePrima + 1 Dove = InStr(Dove + 1, TextBox.Text, vbNewLine) Loop Until Dove >= TextBox.SelStart Or Dove = 0 RigaTextbox = RighePrima End Function Public Function ColonnaTextBox(TextBox As TextBox) As Integer Dim Dove As Integer, Prima As Integer Do Prima = Dove Dove = InStr(Dove + 1, TextBox.Text, vbNewLine) Loop Until Dove >= TextBox.SelStart Or Dove = 0 ColonnaTextBox = TextBox.SelStart - Prima End Function Private Sub Text1_Change() Label1 = "X = " & ColonnaTextBox(Text1) & "; Y = " & RigaTextbox(Text1) End Sub Private Sub Text1_Click() Label1 = "X = " & ColonnaTextBox(Text1) & "; Y = " & RigaTextbox(Text1) End Sub:metallica
![]()