https://foro.gambas-es.org/viewtopic.php?f=1&t=6492
-----------------------------------
Guizans
Martes, 04 Julio 2017, 13:41

Aumentar El Tamaño De La Fuente
-----------------------------------
Hola a todos.

 En el pequeño programa que estoy haciendo tengo una ventana en la cual hay un GridView, usando las bibliotecas Qt5 y la versión de Gambas es la 3.9.2,  que contiene números. Lo que pretendo es que cada vez que se redimensione el GridView el tamaño de la fuente aumente o disminuya en proporción al tamaño del GridView. He estado buscando, pero no he encontrado nada al respecto. ¿Alguien me puede ayudar?

Muchas gracias.

Un saludo.


-----------------------------------
v3ctor
Martes, 04 Julio 2017, 15:41

Re: Aumentar El Tamaño De La Fuente
-----------------------------------
tiro una idea a lo mejor te sirve, con un select case fabrica un rango
que si el gridvied mide tanto de ancho y tanto de alto ponga tal tamaño de fuente, si tiene otro rango entonces otro tamaño de fuente etc.

jaja es que desconozco otro forma  :oops: 

saludos


-----------------------------------
tincho
Martes, 04 Julio 2017, 17:05

Re: Aumentar El Tamaño De La Fuente
-----------------------------------
[quote user="Guizans" post="39070"]...una ventana en la cual hay un GridView...cada vez que se redimensione...el tamaño de la fuente aumente o disminuya en proporción.[/quote]

Por ejemplo para un GridView llamado grwData
El gridView tiene una propiedad grwData.Font.Grade, eso es lo que tienes que meter en un código como por ejemplo:

[code linenumbers=false syntax=gambas]
Public Sub grwData_BeforeArrange()
  grwData.Font.Grade = grwData.Height / 15
End[/code]

Es decir cada vez que el evento BeforeArrange sea lanzado cambiaran las propiedades del texto del gridview

Saludos.


-----------------------------------
Guizans
Martes, 04 Julio 2017, 22:09

Re: Aumentar El Tamaño De La Fuente (SOLUCIONADO)
-----------------------------------
Hola.

Gracias por contestar, pero ando un poco perdido. He estado haciendo pruebas y no consigo lo que quiero. Pero para intentar ordenar las ideas una pregunta, ¿para que sirve el método BeforeArrange? ¿Cuando es llamado?

 A ver si estoy haciendo las cosas mal y por eso no me sale. Me explico. Tengo el GridView dentro de un contenedor Panel. Una vez que se abre la ventana, llama a un método, por ejemplo divide(), que sabiendo la altura y la anchura del Panel lo divido por las celdas que quiero, 15x5 en mi caso. A continuación llamo a un método, rellena(), que es el encargado de mostrar el texto en cada celda. Lógicamente ahí ya tendré que decirle que altura de texto quiero,  ¿no?, supongo que el código que me ha pasado tincho. Muy bien, cada vez que se redimensiona la ventana tengo un método Form_Resize, que llama a su vez al método que divide y rellena. ¿Donde encaja el método BeforeArrange? Mi forma de hacerlo es incorrecta ya que no funciona, pero no soy capaz de ver donde me falla la lógica  :oops: 

Espero haberme explicado  :roll: 

Un saludo.

Edit: Acabo de descubrir el por que no aumentaba el tamaño de la fuente al redimensionar el GridView. En el método Form_Resize coloqué un GridView.Clear() y a partir de ahí hace exactamente lo que quiero.
Muchas gracias. :mryellow:


-----------------------------------
vuott
Martes, 04 Julio 2017, 23:08

Re: Aumentar El Tamaño De La Fuente (SOLUCIONADO)
-----------------------------------
[quote user="Guizans" post="39102"] hace exactamente lo que quiero[/quote]
Puedes mostrar el codigo con el cual solucionaste ?


-----------------------------------
Guizans
Jueves, 06 Julio 2017, 22:47

Re: Aumentar El Tamaño De La Fuente
-----------------------------------
[quote]
Puedes mostrar el codigo con el cual solucionaste ?[/quote]

No hay problema. Tengo un método que crea la cuadrícula del GridView en relación a la altura y anchura del panel donde está incrustado el GridView:
[code linenumbers=false syntax=gambas]
Private Sub redimensionar_tabla()
  
  GridView2.Rows.Count = 5
  GridView2.Columns.Count = 15

  GridView2.Columns.Width = (Panel1.Width / 15)
  GridView2.Rows.Height = (Panel1.Height / 5)
End
[/code]

Otro método que se encarga de rellenar la cuadrícula con los números:
[code linenumbers=false syntax=gambas]

Private Sub rellena()

  Dim a, b As Byte = 0
  Dim cont As Byte = 1
     
  For a = 0 To 4
    For b = 0 To 14
       aumentar = Int(GridView2[a, b].Height / 11)  
       GridView2.Font.Grade = aumentar
       GridView2[a, b].Text = Str(cont)
       GridView2[a, b].Font.Bold = True
       GridView2[a, b].Alignment = Align.Center
       Inc cont
    Next
  Next
  
End
[/code]
 Y por último el método Resize que es llamado cuando el usuario redimensiona la ventana. Y es en ese método donde coloco el GridView.Clear()
[code linenumbers=false syntax=gambas]
Public Sub Form_Resize()
  GridView2.Clear()
  redimensionar_tabla()
  rellena()

End
[/code]

Espero que te sirva.
Un saludo.


-----------------------------------
v3ctor
Jueves, 06 Julio 2017, 23:02

Re: Aumentar El Tamaño De La Fuente
-----------------------------------
interesante solución, aun no he usado .grade  :roll: 

gracias por compartir tu solución

Saludos


-----------------------------------
vuott
Viernes, 07 Julio 2017, 10:56

Re: Aumentar El Tamaño De La Fuente
-----------------------------------
[quote user="Guizans" post="39135"]No hay problema.[/quote]
Muchas gracias.

Saludos.


-----------------------------------
tincho
Domingo, 09 Julio 2017, 15:15

Re: Aumentar El Tamaño De La Fuente (SOLUCIONADO)
-----------------------------------
[quote user="Guizans" post="39102"]... supongo que el código que me ha pasado tincho...[/quote]
Si el método .Grade esta bastante interesante y ahorra bastante código.
Me alegro que lo hayas solucionado.
Saludos.


-----------------------------------
vuott
Domingo, 09 Julio 2017, 17:17

Re: Aumentar El Tamaño De La Fuente
-----------------------------------
Yo podría proponer este codigo, que tiene en cuenta eventual diferente ancho de las celdas.
[code linenumbers=false syntax=gambas]Private GridView1 As GridView


Public Sub Form_Open()
 
 Dim r, c As Short
 
  With Me
    .W = 520
    .H = 390
  End With
  
  With GridView1 = New GridView(Me)
    .X = 10
    .Y = 10
    .W = Me.W - 10
    .H = Me.H - 10
    .Rows.Count = 3
    .Columns.Count = 6
  End With
  
  For r = 0 To GridView1.Rows.Max
    GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count
  Next
  
  For r = 0 To GridView1.Rows.Max
    For c = 0 To GridView1.Columns.Max
      GridView1[r, c].Text = "Cella:" & String(c, "   ") & CStr(r) & "-" & CStr(c)
    Next
  Next
  
End


Public Sub Form_Resize()
 
 Dim r, c As Byte
 
  GridView1.Resize(Me.W - (GridView1.X + 10), Me.H - (GridView1.Y + 10))
  
  For c = 0 To GridView1.Columns.Max
    GridView1.Columns[c].W = GridView1.W / GridView1.Columns.Count
  Next
  For r = 0 To GridView1.Rows.Max
    GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count
  Next
  
  For r = 0 To GridView1.Rows.Max
    For c = 0 To GridView1.Columns.Max
      If GridView1.Columns[c].W > GridView1[r, c].Font.TextWidth(GridView1[r, c].Text) Then Inc GridView1[r, c].Font.Size
      If GridView1.Columns[c].W < GridView1[r, c].Font.TextWidth(GridView1[r, c].Text) Then Dec GridView1[r, c].Font.Size
    Next
  Next
  
End[/code]


