https://foro.gambas-es.org/viewtopic.php?f=1&t=7653
-----------------------------------
gambafeliz
Domingo, 25 Agosto 2019, 10:53

Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
Tengo esto:

      If gResultado["Importe"] < 0 Then
         devoluciones += gResultado["Importe"]
      Else
         gastos += gResultado["Importe"]
      Endif

Esto lo que hace es discriminar si es un reembolso de dinero o es un gasto. Y después creo un label para presentarlo así:

   Label1.Text = "Nº de movimientos/mes es: " & gResultado.Count & "\n" & Format(gastos, "-#,##0.00 €") & " :Gastado" & "\n" & Format(devoluciones, "-#,##0.00 €") & " :Reembolsado"

esto me visualiza en el formulario algo como esto:

Nº de movimientos/mes es: 39
   993,78 € :Gastado
     0,00 € :Reembolsado

Yo lo que busco es algo como (basicamente deseo alinear los textos que acompañan a los importes justamente por los ":") :

Nº de movimientos/mes es: 39
993,78 € :Gastado
    0,00 € :Reembolsado

ó

Nº de movimientos/mes es: 39
                             Gastado: 993,78 €
                     Reembolsado:    0,00 €

Nota: en el post es posible que no estén en línea yo quiero que los dos puntos estén en línea, ¿me comprenden?. Otro problema es que Reembolso viene en negativo y deseo que no tengo el signo negativo pero no me hace caso.

Pero a lo mejor con un label no es el camino, por favor, ¿me ayuda?

Gracias.


-----------------------------------
shordi
Domingo, 25 Agosto 2019, 12:16

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
[code linenumbers=false syntax=gambas]

anchodeseado=30
cadenaconlapasta=" 30,86€"
cadena = "Literal que quiero:"
string(anchodeseado - len(cadena)) & cadena & cadenaconlapasta
[/code]


-----------------------------------
cogier
Domingo, 25 Agosto 2019, 12:22

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
[quote] Otro problema es que Reembolso viene en negativo y deseo que no tengo el signo negativo pero no me hace caso.[/quote]

¿Esto ayuda?

[code linenumbers=false syntax=gambas]Dim i As Integer = -21

Print Abs(i)[/code]


-----------------------------------
gambafeliz
Domingo, 25 Agosto 2019, 13:13

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
[quote user="shordi" post="45841"][code linenumbers=false syntax=gambas]

anchodeseado=30
cadenaconlapasta=" 30,86€"
cadena = "Literal que quiero:"
string(anchodeseado - len(cadena)) & cadena & cadenaconlapasta
[/code][/quote]

Gracias, shordi, pero, ¿puede ser que no este algo bien?, por ejemplo String(Lenght As Integer, Pattern As String) As String

¿solo pregunto es que no me va o no se aplicarlo?

 :oops:


-----------------------------------
gambafeliz
Domingo, 25 Agosto 2019, 13:16

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
[quote user="cogier" post="45842"][quote] Otro problema es que Reembolso viene en negativo y deseo que no tengo el signo negativo pero no me hace caso.[/quote]

¿Esto ayuda?

[code linenumbers=false syntax=gambas]Dim i As Integer = -21

Print Abs(i)[/code][/quote]

Muchas Gracias, cogier esto sí me ha funcionado como yo quería  :) 

Perfect !!!


-----------------------------------
gambafeliz
Domingo, 25 Agosto 2019, 13:45

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
Hola a todos

Me parece que esta pregunta es inviable creo que simplemente voy alinear a la derecha el contenido de Text del Label y voy a pasar o incluso enviar a varios Label. 

Creo que esto es una locura intentarlo. 

Si quieren dejarlo por mi bien. Si existe algún valiente que quiera romperse la cabeza pues adelante aquí esta el hilo y le escucharé atentamente.

Saludos.


-----------------------------------
cogier
Domingo, 25 Agosto 2019, 14:48

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
Creo que entiendo lo que estás buscando. La traducción no fue muy buena. Creo que una'GridView' puede ser la respuesta. Pruebe este código en un nuevo proyecto.

[code linenumbers=false syntax=gambas]Public Sub Form_Open()
Dim GridView1 As GridView

System.Language = "es_ES.UTF-8"
'System.Language = "en_GB.UTF-8"

With Me
  .Height = 80
  .Width = 250
  .Padding = 5
  .Arrangement = Arrange.Vertical
End With

With GridView1 = New GridView(Me)
  .Padding = 2
  .Expand = True
  .Rows.Count = 2
  .Columns.Count = 2
  .Font.Size = 12
  .Font.Bold = True
End With

GridView1[0, 0].Text = " Gastado:"
GridView1[0, 0].Alignment = Align.Right

GridView1[1, 0].Text = " Reembolsado:"
GridView1[1, 0].Alignment = Align.Right

GridView1[0, 1].Text = Format("993.78", "-#,##0.00 €")
GridView1[0, 1].Alignment = Align.Right

GridView1[1, 1].Text = Format("0.00", "-#,##0.00 €")
GridView1[1, 1].Alignment = Align.Right

GridView1.Columns.Width = -1

End
[/code]

[img]http://www.cogier.com/gambas/RightAlign.png[/img]


-----------------------------------
gambafeliz
Domingo, 25 Agosto 2019, 15:16

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
[quote user="cogier" post="45846"]

[img]http://www.cogier.com/gambas/RightAlign.png[/img][/quote]

No te voy a engañar. Es mucho mas de lo que buscaba. Y es mucho mas que perfecto, comparado a lo que yo quería aspirar.

Por eso, yo en este caso lo quería hacer muy simple y opté por hacerlo con un Label1. Lo que tu me has hecho es mucho mas profesional. Si consigo poner transparente el GridView o de igual color que el fondo del form.

Gracias por tu esfuerzo. Estoy muy agradecido.  :) 

Saludos


-----------------------------------
shordi
Domingo, 25 Agosto 2019, 15:45

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
[quote user="gambafeliz" post="45843"]
Gracias, shordi, pero, ¿puede ser que no este algo bien?, por ejemplo String(Lenght As Integer, Pattern As String) As String

¿solo pregunto es que no me va o no se aplicarlo?
[/quote]

No, es que se me había olvidado el segundo parámetro al teclear
[code linenumbers=false syntax=gambas]
anchodeseado=30
cadenaconlapasta=" 30,86€"
cadena = "Literal que quiero:"
string(anchodeseado - len(cadena)," ") & cadena & cadenaconlapasta
[/code]


-----------------------------------
gambafeliz
Domingo, 25 Agosto 2019, 16:08

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
[quote user="shordi" post="45848"][quote user="gambafeliz" post="45843"]
Gracias, shordi, pero, ¿puede ser que no este algo bien?, por ejemplo String(Lenght As Integer, Pattern As String) As String

¿solo pregunto es que no me va o no se aplicarlo?
[/quote]

No, es que se me había olvidado el segundo parámetro al teclear
[code linenumbers=false syntax=gambas]
anchodeseado=30
cadenaconlapasta=" 30,86€"
cadena = "Literal que quiero:"
string(anchodeseado - len(cadena)," ") & cadena & cadenaconlapasta
[/code][/quote]

Yo he hecho esto basado en tus indicaciones:

   Dim anchodeseado As Integer = 30
   Dim cadenaconlapasta As String = " 30,86€"
   Dim cadenaconlapasta1 As String = " 130,86€"
   Dim cadenar As String = "Literal que quiero:"
   Dim cadenar1 As String = "Literal quiero:"
   Label1.text = String(anchodeseado - Len(cadenar), " ") & cadenar & cadenaconlapasta & "\n" & String(anchodeseado - Len(cadenar1), " ") & cadenar1 & cadenaconlapasta1

Lo siento, agradezco tu ayuda, pero no funciona como espero. 

Pero shordi ya lo he resuelto de forma airosa, no es la leche de alineación perfecta como "cogier" que ha hecho mas incluso de lo que yo quería. Pero es válido. Al final si sigo avanzando en mi programa, voy hacer un proyecto, gracias a vuestra ayuda muy muy interesante para todos. Y si lo hago, prometo regalarlo a quien le interese. 

Nota: El proyecto es mucho mas de lo que te mandé, pero tu has visto su inicio mas simple.

Gracias, cogier y shordi, ok :)


-----------------------------------
cogier
Domingo, 25 Agosto 2019, 16:41

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
Vale, un intento más: 

[code linenumbers=false syntax=gambas]Public Sub Form_Open()
Dim Label1 As Label
Dim gastos As Single = 100993.78
Dim devoluciones As Single = 0
Dim sGastos, sDevoluciones As String 
Dim LenGastos, LenDevoluciones As Short

System.Language = "es_ES.UTF-8"

With Label1 = New Label(Me)
  .Height = 100
  .Width = 500
  .X = 10
  .Y = 10
  .Font = Font["Noto Mono, Bold, 14"] ''Importante
End With

sGastos = Format(gastos, "-#,##0.00 €")
LenGastos = Len(sGastos)

sDevoluciones = Format(devoluciones, "-#,##0.00 €")
LenDevoluciones = Len(sDevoluciones)


Label1.Text = "Nº de movimientos/mes es: " & "39" & "\n" & "    Gastado:" & Space(20 - LenGastos) & sGastos & "\n" & "Reembolsado:" & Space(20 - LenDevoluciones) & sDevoluciones


End[/code]

[img]http://www.cogier.com/gambas/Label1.png[/img]


-----------------------------------
gambafeliz
Domingo, 25 Agosto 2019, 17:56

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
[quote user="cogier" post="45850"]

[img]http://www.cogier.com/gambas/Label1.png[/img][/quote]

Aaa la ***** Super ****** 

Bien no, lo siguiente (Genial !!!!)

Musisimas Gracias, joven. Tu si que vales :)

-nota: supongo que no me vas a cobrar por ello-  :shock:


-----------------------------------
gambafeliz
Domingo, 25 Agosto 2019, 18:05

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
[quote user="cogier" post="45850"]Vale, un intento más: 

[code linenumbers=false syntax=gambas]
With Label1 = New Label(Me)
  .Height = 100
  .Width = 500
  .X = 10
  .Y = 10
  .Font = Font["Noto Mono, Bold, 14"] ''Importante
End With
End[/code]

[img]http://www.cogier.com/gambas/Label1.png[/img][/quote]

cogier mil gracias de verdad.

Permiteme que te aporte una información. Este es mi código actual:

   If inidiaext = 0 Then
      strTexto = "Nº de movimientos/mes es: [ "
   Else
      strTexto = "Nº de movimientos/día es: [ "
   Endif
   Dim cadena1 As String = strTexto & Format(gResultado.Count, "00 ]")
   Dim cadena2 As String = "Gastado: " & Format(gastos, "-#,##0.00 €")
   Dim cadena3 As String = "Reembolsado: " & Format(Abs(devoluciones), "-#,##0.00 €")
   Label1.Font = Font["Noto Mono, Bold, 11"] ''Importante <--------------------------------------------------------------------- Tan solo he añadido esta línea de tu código y todo resuelto.
   Label1.Text = cadena1 & "\n\n" & cadena2 & "\n" & cadena3

¿que te parece?


-----------------------------------
shordi
Domingo, 25 Agosto 2019, 23:04

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
[quote user="gambafeliz" post="45849"][quote user="shordi" post="45848"][quote user="gambafeliz" post="45843"]
Gracias, shordi, pero, ¿puede ser que no este algo bien?, por ejemplo String(Lenght As Integer, Pattern As String) As String

¿solo pregunto es que no me va o no se aplicarlo?
[/quote]

No, es que se me había olvidado el segundo parámetro al teclear
[code linenumbers=false syntax=gambas]
anchodeseado=30
cadenaconlapasta=" 30,86€"
cadena = "Literal que quiero:"
string(anchodeseado - len(cadena)," ") & cadena & cadenaconlapasta
[/code][/quote]

Yo he hecho esto basado en tus indicaciones:

   Dim anchodeseado As Integer = 30
   Dim cadenaconlapasta As String = " 30,86€"
   Dim cadenaconlapasta1 As String = " 130,86€"
   Dim cadenar As String = "Literal que quiero:"
   Dim cadenar1 As String = "Literal quiero:"
   Label1.text = String(anchodeseado - Len(cadenar), " ") & cadenar & cadenaconlapasta & "\n" & String(anchodeseado - Len(cadenar1), " ") & cadenar1 & cadenaconlapasta1

Lo siento, agradezco tu ayuda, pero no funciona como espero. 

Pero shordi ya lo he resuelto de forma airosa, no es la leche de alineación perfecta como "cogier" que ha hecho mas incluso de lo que yo quería. Pero es válido. Al final si sigo avanzando en mi programa, voy hacer un proyecto, gracias a vuestra ayuda muy muy interesante para todos. Y si lo hago, prometo regalarlo a quien le interese. 

Nota: El proyecto es mucho mas de lo que te mandé, pero tu has visto su inicio mas simple.

Gracias, cogier y shordi, ok :)[/quote]
Por supuesto al textlabel le habías puesto una fuente de paso fijo, claro...


-----------------------------------
Shell
Lunes, 26 Agosto 2019, 08:47

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
Esto..y como siendo valores constantes para algunas cosas, ¿ no usáis Const y preferís Dim ?.   :? 
Ancho, alto, etc, etc...

Saludos


-----------------------------------
gambafeliz
Lunes, 26 Agosto 2019, 09:30

Re: Igualar Longitud De Texto Por Alguna Forma O Formato
-----------------------------------
[quote user="shordi" post="45855"]
Por supuesto al textlabel le habías puesto una fuente de paso fijo, claro...[/quote]

Fíjate que por lo que he visto, gracias al aporte de "cogier", lo único que le faltaba a mi código para resolver el problema era decirle al Label1 que debía tener una fuente de paso fijo. Pero aunque alguna vez supongo que lo hice, pues no caí.

Para resumir, el problema no esta en el código sino en la Fuente del Label1 para que todo se vea como estaba pidiendo.

Gracias a todos.


