Autore Topic: Posizionare testo in TextArea  (Letto 2602 volte)

Offline vir1966

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Posizionare testo in TextArea
« il: 24 Gennaio 2021, 15:24:38 »
Ciao a Tutti...come da titolo, è possibile impostare la posizione in cui verrà visualizzato il testo in una textarea...su VisualBasic 5/6 bastava impostare Tab nell'istruzione, ad esempio Tab(20)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #1 il: 24 Gennaio 2021, 16:49:51 »
Non mi sembra.
Puoi ottenere un risultato analogo lungo la riga prescelta inserendo degli spazi prima del testo mediante la funzione "String()".

Esempio:
Codice: [Seleziona]
TextArea1.Text = String(20, Chr(32)) & "abcde"
« 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 vir1966

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #2 il: 24 Gennaio 2021, 18:04:03 »
Non mi sembra.
Puoi ottenere un risultato analogo lungo la riga prescelta inserendo degli spazi prima del testo mediante la funzione "String()".

Esempio:
Codice: [Seleziona]
TextArea1.Text = String(20, Chr(32)) & "abcde"

Grazie mille

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.243
  • Tonno verde
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #3 il: 24 Gennaio 2021, 18:46:22 »
Siccome non sono molto sveglio, non ho capito la domanda.
Si parla di una textarea vuota?
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vir1966

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #4 il: 25 Gennaio 2021, 07:01:58 »
Una textarea con più righe, dove c'è un dato a inizio riga e il relativo valore da posizionare a una certa posizione da inizio riga.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #5 il: 25 Gennaio 2021, 08:50:52 »
uhmmm... quindi non è una TextArea vuota: la faccenda è più complessa allora.
« Ultima modifica: 25 Gennaio 2021, 10:01:11 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. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.243
  • Tonno verde
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #6 il: 25 Gennaio 2021, 11:58:04 »
Una textarea con più righe, dove c'è un dato a inizio riga e il relativo valore da posizionare a una certa posizione da inizio riga.

Tipo una cosa del genere?
Codice: [Seleziona]
Public Sub Form_Open()

  Dim aStringhe As String[] = ["Chiave inglese", "11,20", "Ferro da stiro a vapore", "32,40", "Macchinetta da caffè per cialde", "112,00", "Aermacchi bicilindrica 1953", "7.500,00"]
  Dim iLen1, iLen2 As Integer
  Dim sStringa1, sStringa2 As String

  TextArea1.Font = Font["monospace,11"]
  For i As Integer = 0 To aStringhe.Max
    If i > 1 Then
      If i Mod 2 = 0 Then
        If Comp(aStringhe[i - 2], aStringhe[i]) = 1 Then
          sStringa1 = aStringhe[i - 2]
        Else
          sStringa1 = aStringhe[i]
        Endif
      Else
        If Comp(aStringhe[i - 2], aStringhe[i]) = 1 Then
          sStringa2 = aStringhe[i - 2]
        Else
          sStringa2 = aStringhe[i]
        Endif
      Endif
    Endif
  Next
  iLen1 = String.Len(sStringa1) + 4
  iLen2 = String.Len(sStringa2)
  TextArea1.Text = "DESCRIZIONE" & Space(iLen1 - String.Len("DESCRIZIONE")) & Space(iLen2 - String.Len("PREZZO")) & "PREZZO" & "\n\n"
  For i As Integer = 0 To aStringhe.Max Step 2
    TextArea1.Text &= aStringhe[i] & Space(iLen1 - String.Len(aStringhe[i])) & Space(iLen2 - String.Len(aStringhe[i + 1])) & aStringhe[i + 1] & "\n"
  Next

End

Se serve qualche spiegazione sono qui  :)
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #7 il: 25 Gennaio 2021, 13:44:59 »
Tipo una cosa del genere?
Poniamo il caso che si abbia soltanto il dato all'inizio di ogni riga e che il "relativo valore" debba essere posizionato via codice solo successivamente...
« Ultima modifica: 25 Gennaio 2021, 13:47:28 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. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.243
  • Tonno verde
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #8 il: 25 Gennaio 2021, 15:07:12 »
Tipo una cosa del genere?
Poniamo il caso che si abbia soltanto il dato all'inizio di ogni riga e che il "relativo valore" debba essere posizionato via codice solo successivamente...

Intendi dire qualcosa del genere (rimanendo nell'esempio precedente)?
Codice: [Seleziona]
Public Sub Form_Open()

  Dim aDescrizione As String[] = ["Chiave inglese", "Ferro da stiro a vapore", "Macchinetta da caffè per cialde", "Aermacchi bicilindrica 1953"]

  TextArea1.Font = Font["monospace,11"]
  TextArea1.Text = "DESCRIZIONE" & "\n\n"
  For i As Integer = 0 To aDescrizione.Max
    TextArea1.Text &= aDescrizione[i] & "\n"
  Next

End

Public Sub Button1_Click()

  Dim aStringhe As String[] = ["DESCRIZIONE", "PREZZO", "Chiave inglese", "11,20", "Ferro da stiro a vapore", "32,40", "Macchinetta da caffè per cialde", "112,00", "Aermacchi bicilindrica 1953", "7.500,00"]
  Dim aSplit As String[] = Split(TextArea1.Text, "\n", Null, True)
  Dim iLen1, iLen2, iStart As Integer
  Dim sStringa1, sStringa2, sPrezzo As String

  For i As Integer = 0 To aSplit.Max
    If i > 0 Then
      If Comp(aSplit[i - 1], aSplit[i]) = 1 Then
        sStringa1 = aSplit[i - 1]
      Else
        sStringa1 = aSplit[i]
      Endif
    Endif
  Next
  iLen1 = String.Len(sStringa1) + 4
  For i = 0 To aStringhe.Max
    If i > 1 Then
      If i Mod 2 <> 0 Then
        If Comp(aStringhe[i - 2], aStringhe[i]) = 1 Then
          sStringa2 = aStringhe[i - 2]
        Else
          sStringa2 = aStringhe[i]
        Endif
      Endif
    Endif
  Next
  iLen2 = String.Len(sStringa2)
  For i As Integer = 0 To aSplit.Max
    iStart = String.Instr(TextArea1.text, aSplit[i]) - 1
    sPrezzo = aStringhe[aStringhe.Find(aSplit[i]) + 1]
    TextArea1.Pos = iStart + String.Len(aSplit[i])
    TextArea1.Insert(Space(iLen1 - String.Len(aSplit[i])) & Space(iLen2 - String.Len(sPrezzo)) & sPrezzo)
  Next

End
« Ultima modifica: 25 Gennaio 2021, 15:09:04 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #9 il: 25 Gennaio 2021, 16:13:08 »
Cliccando sul Button, mi dà errore (" Argomento sbagliato ") qui:
Codice: [Seleziona]
TextArea1.Insert(...etc...)
« 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.243
  • Tonno verde
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #10 il: 25 Gennaio 2021, 16:18:32 »
Cliccando sul Button, mi dà errore (" Argomento sbagliato ") qui:
Codice: [Seleziona]
TextArea1.Insert(...etc...)

Qui funziona bene, allego un esempio  :-\
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #11 il: 25 Gennaio 2021, 16:38:28 »
Ora funziona anche copiando il codice.
Da un po' di tempo, quando effettuo il copia e incolla di un codice nell'IDE, se sono presenti lettere accentate, al loro posto mi appare il tipico simbolo del punto interrogativo su fondo scuro. Cosicché sono costretto a cancellarlo e a scrivere la corretta lettera accentata.
Questo problema mi causava quell'errore.
Ad ogni modo, sì, il tuo ultimo codice esemplificativo era il caso da me sollevato.
« 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 cogier

  • Gambero
  • **
  • Post: 57
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #12 il: 25 Gennaio 2021, 16:42:00 »
Perché usare una 'TextArea' quando si può usare una 'GridView'?



Codice: [Seleziona]
GridView1 As GridView

Public Sub Form_Open()

  Dim aStringhe As String[] = ["DESCRIZIONE", "PREZZO", "", "", "Chiave inglese", "11,20", "Ferro da stiro a vapore", "32,40", "Macchinetta da caffè per cialde", "112,00", "Aermacchi bicilindrica 1953", "7.500,00"]
  Dim iLoop, iRow As Integer

  With Me
    .padding = 5
    .Height = 150
    .Width = 300
    .Arrangement = Arrange.Vertical
  End With

  With GridView1 = New GridView(Me) As "GridView1"
    .Clear
    .Expand = True
    .Grid = False
    .Rows.Count = aStringhe.Count / 2
    .Columns.Count = 3
  End With

  For iLoop = 0 To aStringhe.Max Step 2
    GridView1[iRow, 0].Text = aStringhe[iLoop]
    GridView1[iRow, 1].Text = aStringhe[iLoop + 1]
    GridView1[iRow, 1].Alignment = Align.Right
    Inc iRow
  Next

  GridView1.Columns.Width = -1

End


Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.719
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #13 il: 25 Gennaio 2021, 16:47:43 »
Perché usare una 'TextArea' quando si può usare una 'GridView'?
La tua proposta non è priva di ragione, ma bisogna restare sul teorico, ossia sulla richiesta, sul petitum di vir1966.
Ciò, anche perché noi non conosciamo le motivazioni e le esigenze che hanno indotto vir1966 a utilizzare una TextArea
« Ultima modifica: 25 Gennaio 2021, 16:51:52 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. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.243
  • Tonno verde
    • Mostra profilo
Re:Posizionare testo in TextArea
« Risposta #14 il: 25 Gennaio 2021, 17:29:36 »
Ora funziona anche copiando il codice.
Da un po' di tempo, quando effettuo il copia e incolla di un codice nell'IDE, se sono presenti lettere accentate, al loro posto mi appare il tipico simbolo del punto interrogativo su fondo scuro. Cosicché sono costretto a cancellarlo e a scrivere la corretta lettera accentata.
Questo problema mi causava quell'errore.


È già successo anche a me in passato, non questa volta però, boh non capisco a me aveva incollato un simbolo html un &qualcosa
Potrebbe anche essere colpa del nuovo kernel di linux :-\

E meno male che Linus Torvald pare abbia detto che sia la versione migliore di sempre...
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro