vuott 27-06-2024, 01:03
Hola,
aquí un posible código para la realización de un Confused pseudo-Slider con tres indicadores de valor:

Código:
Private DrawingArea1 As DrawingArea
Private bt1 As Button
Private bt2 As Button
Private bt3 As Button
 
 
Public Sub Form_Open()
 
 With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   .X = 20
   .Y = 20
   .W = 310
   .H = 20
   .Border = Border.Solid
 End With
 
 With bt1 = New Button(DrawingArea1) As "BT"
   If Not Even(DrawingArea1.W * 0.03) Then .W = (DrawingArea1.W * 0.03) + 1
   .H = DrawingArea1.H
   .X = 0
   .Y = 0
   .Text = String.Chr(&2193)
 End With
 With bt2 = New Button(DrawingArea1) As "BT"
   .W = bt1.W
   .H = DrawingArea1.H
   .X = DrawingArea1.W - (DrawingArea1.W / 2)
   .Y = 0
   .Text = String.Chr(&2193)
 End With
 With bt3 = New Button(DrawingArea1) As "BT"
   .W = bt1.W
   .H = DrawingArea1.H
   .X = DrawingArea1.W - .W
   .Y = 0
   .Text = String.Chr(&2193)
 End With
 Me.Title = "Min = " & CStr(bt1.X) & "   Med =" & CStr(bt2.X) & "   Max =" & CStr(bt3.X)
 
End
 
Public Sub DrawingArea1_Draw()
 
 With Paint
   .Brush = Paint.Color(Color.Green)
   .Rectangle(bt1.X + bt1.W, 0, (DrawingArea1.W - bt1.X) - (DrawingArea1.W - bt2.X), DrawingArea1.H)
   .Fill
   .Brush = Paint.Color(Color.Orange)
   .Rectangle(bt2.X + bt2.W, 0, (DrawingArea1.W - bt2.X) - (DrawingArea1.W - bt3.X), DrawingArea1.H)
   .Fill
   .End
 End With
  
End
 
Public Sub BT_MouseMove()
 
 With Last
   .X = .X + Mouse.X - Mouse.StartX
   .Y = .Y + Mouse.Y - Mouse.StartY
 End With
 
 If Last.Y <> 0 Then Last.Y = 0
  
 Select Case Last.Id
   Case bt1.Id
     If bt1.X < 0 Then bt1.X = 0
     If bt1.X > bt2.X - bt1.W Then bt1.X = bt2.X - bt1.W
   Case bt2.Id
     If bt2.X < (bt1.X + bt1.W) Then bt2.X = bt1.X + bt1.W
     If (bt2.X + bt2.W) > bt3.X Then bt2.X = bt3.X - bt2.W
   Case bt3.Id
     If bt3.X < (bt2.X + bt2.W) Then bt3.X = bt2.X + bt2.W
     If (bt3.X + bt3.W) > DrawingArea1.W Then bt3.X = DrawingArea1.W - bt3.W
 End Select
 
 DrawingArea1.Refresh

 Me.Title = "Min = " & CStr(bt1.X) & "   Med = " & CStr(bt2.X) & "   Max = " & CStr(bt3.X)
 
End
Europaei sumus !
Shordi 26-06-2024, 20:00
El control no es nuevo, lo hice hace el suficiente tiempo como para haber olvidado por completo cómo funcionaba. Menos mal que aunque he perdido la memoria aún se leer el código y ponerme al día fácilmente. A petición, le he añadido un comportamiento nuevo. Antes sólo buscaba y ahora filtra.
Una imagen vale más que mil palabras para el caso y un vídeo ni te cuento, aquí tenéis la demo:



Los enlaces de descarga del código fuente del vídeo:

https://drive.google.com/file/d/1_qWJ9Cm...sp=sharing

y, naturalmente, lo podéis bajar siempre en la última versión aquí:

https://gitlab.com/shordi/ComboSeek

Saludos
alberto-moyano 24-06-2024, 21:21
Hola gente, mi consulta es la siguiente, tengo una tabla que es chica en términos de entradas (hoy ronda los 3500 registros y en un par de años con suerte si llega a los 20.000) pero es muy grande en cantidad de columnas (109), la cuestión es que la carga del gridview es muy lenta, no estoy usando el evento data, ya que tengo entendido que su mejora influye sustancialmente cuando se manejan grandes volúmenes de información, que no es mi caso, lo que tengo es una tabla con muchísimas columnas. ¿Mi creencia sobre el evento data es correcto?, o muchas columnas también debe ser tratado como gran volumen de información.

La tabla es única, no tiene claves foráneas, porque no las hay, sus datos son únicos y no llevan relación con ninguna otra tabla, ¿es aconsejable partirla (en varias tablas), aún en estos casos?

En el gridview solo necesito ver los datos de 7 columnas, tiene sentido usar una tabla con esas 7 columnas y otra tabla con las restantes columnas y relacionarlas con una clave foránea.

Que opinión tienen ustedes.

Gracias de antemano por cualquier comentario esclarecedor.

Este es el código que utilizo para cargar la vista, borre todas las lineas para no cansar con la lectura

Código:
Public Sub Mostrar_ListaBIB()

  Dim i As Integer

  VListaBIB.Clear()

  Contenido = Conn.Exec("select * from bibtex ORDER BY id DESC")

  'diseñamos el tableview
  VListaBIB.Columns.Count = 110
  VListaBIB.Header = True
  VListaBIB.Columns[0].Title = "ID"
  VListaBIB.Columns[0].Width = 60
  
' sigue hasta el 109

  VListaBIB.Columns[109].Title = ""
  VListaBIB.Columns[109].Width = 0

  'asigno la cantidad de filas según los datos que existan
  VListaBIB.Rows.Count = Contenido.Count

  'recorremos el resutado de la consulta para mostrarlo
  For i = 0 To Contenido.Count - 1
    VListaBIB[i, 0].Text = Contenido!id
    VListaBIB[i, 1].Text = Contenido!tipoEntrada
    VListaBIB[i, 2].Text = Contenido!citationKey
    VListaBIB[i, 3].Text = Contenido!keywords
   
' sigue hasta el 109

    VListaBIB[i, 109].Text = Contenido!type

    Contenido.MoveNext
  Next

End

Y el código para generar una nueva entrada, no tiene problemas

Código:
Public Sub BtnNuevoBib_Click()

  BtnNuevoBib.Visible = False
  BtnEliminarBib.Visible = False
  btnGuardar.Visible = True
  btnGuardarCambios.visible = False
  btnAgregarCitationKey.Enabled = True
  ToolPanel1.Index = 0

  txtTMPbiblio.Clear 'limpiamos el campo temporal
  txtTMPbiblio.SetFocus()
  LimpiarCamposBIB()
  ObtenerNuevoId()

End

Public Sub ObtenerNuevoId()

  Dim Idn As Integer
  Dim MaxId As Variant

  MaxId = Conn.Exec("SELECT MAX(id) FROM bibtex LIMIT 1")

  If MaxId["MAX(id)"] = Null Then
    Idn = 0
  Else
    Idn = CInt(MaxId["MAX(id)"]) + 1
  Endif

  txtID.Text = Idn
  txtCLAVEbib.Text = "@" & Idn & "-"
  txtKEYWORDS.Text = "," & BaseName & ","

End
Páginas (520):    1 34 35 36 37 38 520   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 265
Último miembro: Morfeo68
Temas del foro: 1,596
Mensajes del foro: 8,342
Últimos temas
Antiguo foro. ¿ Viable ?
Foro: Sobre gambas-es.org
Último mensaje por: guizans, Hace 1 hora
Respuestas: 3 - Vistas: 44
Gambas 3.20
Foro: Instalación
Último mensaje por: Shell, Hace 6 horas
Respuestas: 14 - Vistas: 348
Ver los repositorios del ...
Foro: Mundo Linux
Último mensaje por: guizans, Ayer, 20:10
Respuestas: 4 - Vistas: 68
¿Cómo crear servidor FTP ...
Foro: General
Último mensaje por: Shordi, 22-01-2025, 12:19
Respuestas: 2 - Vistas: 75
TextEditor. Formateado. E...
Foro: General
Último mensaje por: Shell, 21-01-2025, 14:33
Respuestas: 2 - Vistas: 57
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.