Autore Topic: [RISOLTO] Problema con la funzione Ucase  (Letto 609 volte)

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
[RISOLTO] Problema con la funzione Ucase
« il: 05 Dicembre 2016, 22:18:46 »
Buonasera a tutti,
ho ripreso un suggerimento datomi tempo fà da Gianluigi che riguardava Form annidate che stò implementando
in un mio progetto. Mi è sorta l'esigenza che il testo inserito nelle TextBox presenti nelle Form sia solo in maiuscolo;
quindi ho utlizzato Ucase all'interno del metodo TextBox_Change(), la cosa strana che succede e che inserendo il
testo nelle TextBox e passando i dati alle altre Form nel momento in cui tento di modificare/cancellare usando i tasti
Canc o BackSpace il cursore và a posizionarsi sempre alla fine della stringa. Ho provato in tutti i modi di capire perchè
il cursore non rimane in posizione ma non riesco proprio a venirne a capo. Vi allego il progetto fatto a suo tempo da
Gianluigi dove nelle Form io ho aggiunto solamente la funzione Ucase nelle TextBox.
« Ultima modifica: 08 Dicembre 2016, 13:04:29 da tornu »
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Problema con la funzione Ucase
« Risposta #1 il: 05 Dicembre 2016, 23:02:52 »
...il cursore và a posizionarsi sempre alla fine della stringa.
A mio avviso perché alla funzione UCase( ) tu passi comunque l'intero testo corrente contenuto dalla proprietà .Text dell'oggetto TextBox .
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Problema con la funzione Ucase
« Risposta #2 il: 05 Dicembre 2016, 23:14:06 »
Ciao vuott,
scusa ma non ho capito la tua osservazione, diversamente come potrei fare per passare una
stringa in maiuscolo nelle altre Form e poterle correggere sempre mantenendo il testo in maiuscolo,
senza che il cursore ad ogni pressione dei tasti Canc e BackSpace vada alla fine della stringa.

« Ultima modifica: 05 Dicembre 2016, 23:17:16 da tornu »
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Problema con la funzione Ucase
« Risposta #3 il: 05 Dicembre 2016, 23:20:22 »
scusa ma non ho capito capito la tua osservazione
...prova ad assegnare un testo qualsiasi alla proprietà .Text di un TextBox, e vedi dove va a finire il cursore...... 



...come potrei fare...
Non discutemmo tempo fa di un argomento analogo ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Problema con la funzione Ucase
« Risposta #4 il: 05 Dicembre 2016, 23:29:15 »
...prova un po' questa integrazione, facendo il test sull'oggetto TextBox1 della Classe Form1.class:

1) poni questa variabile Globale
Codice: [Seleziona]
Private ps As Short

2) modifica il contenuto della sub-routine "Public Sub TextBox1_Change()" come segue:
Codice: [Seleziona]
Public Sub TextBox1_Change()

  ps = TextBox1.Pos

  TextBox1.Text = UCase(TextBox1.Text)

  TextBox1.Pos = ps
 
End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Problema con la funzione Ucase
« Risposta #5 il: 06 Dicembre 2016, 11:25:11 »
A parte che non mi ricordo perché feci (verbo) questo esempio così articolato... ma basta aggiungere agli aziona:
Codice: [Seleziona]
TextBox1.Pos = 0

Che probabilmente è quanto in modo altrettanto articolato ti voleva suggerire vuott   :P

 ;D  :ciao:

nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Problema con la funzione Ucase
« Risposta #6 il: 06 Dicembre 2016, 22:04:36 »
...prova ad assegnare un testo qualsiasi alla proprietà .Text di un TextBox, e vedi dove va a finire il cursore...... 
Ok, il cursore si posiziona alla fine del testo...ma non capisco la logica, visto che se lascio le TextBox di default, quindi
con il testo in minuscolo tutto funziona regolarmente e il cursore non fà i "capricci".

Citazione
Non discutemmo tempo fa di un argomento analogo ?
Non era proprio lo stesso caso...
La soluzione che mi hai suggerito funziona a metà, nel senso che, risolve il problema del posizionamento del cursore quando
si usano i tasti Canc e BackSpace, ma se inserisco delle lettere nel mezzo della stringa, magari per una correzione, il cursore
si comporta nuovamente punto e a capo, si posiziona alla fine alla pressione di ogni lettera.

@Gianluigi
Ciao Gianluigi,
quel codice è tutta farina del tuo sacco... ;)
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Problema con la funzione Ucase
« Risposta #7 il: 07 Dicembre 2016, 01:46:10 »
La soluzione che mi hai suggerito funziona a metà,
...l'altra metà metticela tu. 
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Problema con la funzione Ucase
« Risposta #8 il: 08 Dicembre 2016, 13:01:26 »
Grazie allo spunto di vuott, e al suo invito a "sforzarmi un pochino"  ;D
ho risolto in questo modo
Codice: [Seleziona]
Public Sub TextBox1_Change()
  Dim iPs As Integer

  iPs = Last.pos

  Last.text = Upper(Last.text)

  Last.pos = iPs
End
Rimane comunque il fatto che continuo a non capire la logica del perchè per "forzare" un oggetto come la TextBox
ad utilizzare le maiuscole devo utilizzare del codice per controllare il cursore, mentre se la lascio di default (quindi
stringhe in minuscolo) funziona tutto correttamente. Se qualcuno a la bontà di spiegarmelo, lo ringrazio.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:[RISOLTO] Problema con la funzione Ucase
« Risposta #9 il: 08 Dicembre 2016, 15:56:16 »
Mi fa piacere che tu abbia risolto e che ti sia capito con vuott.
Io in qualunque modo abbia il codice, con o senza UCase, con o senza Last.pos ottengo lo stesso identico comportamento normale e cioè la posizione del cursore alla fine della parola intera o parzialmente cancellata.

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:[RISOLTO] Problema con la funzione Ucase
« Risposta #10 il: 08 Dicembre 2016, 16:43:50 »
Io in qualunque modo abbia il codice, con o senza UCase, con o senza Last.pos ottengo lo stesso identico comportamento normale e cioè la posizione del cursore alla fine della parola intera o parzialmente cancellata.
Pure io, come già ho riferito sopra, ho questo comportamento, diverso da quello di tornu.

   



« Ultima modifica: 08 Dicembre 2016, 17:13:09 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »