ferchobahia   03-04-2023, 22:12
#1
Hola Muchachos, tuve un problema con la ultima actualización 3.18 y me cambiaron las funcionalidades principalmente de los malditos combobox.... otra vez sopa, que si bien reemplace muchos por el control comboseek de Shordi, me quedaron un par que como eran readonly los usaba al pulsar una tecla rápidamente me encontraba en item que quería
ejemplo: lista.
1.lapiz
2.goma
3.hojas
4.lapicera
yo simplemente al pulsar 1 al instante me lo mostraba y podía cambar y elegir con las teclas numéricas solo pulsando una vez

pues ahora no anda mas así al pulsar una tecla con la lista cerrada no hace nada de nada; asi que mis opciones son volver a la 3.17 de Gambas y dejar de actualizar (no me gusta) o hacer mi propio listview que al pulsar solo una tecla se mueva por la lista sin que filtre los que no coinciden, trate con varios controles el listview parece el mas amigable pero no se que propiedad usar para que haga esto, no se si tiene alguna forma de búsqueda estos controles o mejor dicho no logro hacerlos andar porque la documentación es escasa.
que me pueden recomendar para encaminar mi idea y deshacerme de los malditos combobox

desde ya muchas gracias
Última modificación: 05-04-2023, 13:51 por ferchobahia.
tincho   04-04-2023, 09:14
#2
(03-04-2023, 22:12)ferchobahia escribió: que me pueden recomendar para encaminar mi idea y deshacerme de los malditos combobox

Hola Fercho.
Reemplazar los comboboxes por otro control es posible pero depende de cada caso.
Por ejemplo en un programa que hice una vez para editar registros de una base de datos, usaba un textbox para escribir texto "nuevo" y un list view para seleccionar datos existentes en la base filtrando de acuerdo a lo que escribía en el textbox.
Lo mejor para intentar resolver el tema es que subas un proyecto de ejemplo o el programa que estas haciendo para que hacer pruebas.

1 Saludo.
Shordi   04-04-2023, 10:26
#3
Espera un poquito y modifico ComboSeek para que se comporte así con el ReadOnly

Saludos

No podemos regresar
ferchobahia   04-04-2023, 19:02
#4
(04-04-2023, 09:14)tincho escribió:
(03-04-2023, 22:12)ferchobahia escribió: que me pueden recomendar para encaminar mi idea y deshacerme de los malditos combobox

Hola Fercho.
Reemplazar los comboboxes por otro control es posible pero depende de cada caso.
Por ejemplo en un programa que hice una vez para editar registros de una base de datos, usaba un textbox para escribir texto "nuevo" y un list view para seleccionar datos existentes en la base filtrando de acuerdo a lo que escribía en el textbox.
Lo mejor para intentar resolver el tema es que subas un proyecto de ejemplo o el programa que estas haciendo para que hacer pruebas.

gracias tincho, yo probe llenando un listview con una consulta y le asigne el id de la BD como key, y capturo la tecla en evento keyrelease, pero no termino de lograr que se mueva el cursor interno del listview a la posicion que quiero para dejarla seleccionada en la lista porque son muy dificiles de encontrar porque la funcion moveto no me mueve nada y eso es lo que me esta confundiendo . luego subo un codigo para que se vea el problema

(04-04-2023, 10:26)Shordi escribió: Espera un poquito y modifico ComboSeek para que se comporte así con el ReadOnly

Saludos

no shordi, no te pido tanto es un monton; solo con alguna manito para mover por codigo la seleccion de un control tipo list o grid me basta 
pero sos muy amable y siempre veo todos los videos de youtube, un genio

resumido la parte de BD y demas este codigo es mas o menos lo que tengo, hay que poner un control listview1 y este codigo:
 
Código:
 


Public Sub Form_Open()

Dim c, a As Integer
Dim Clave, id As String

For a = 0 To 9
  Clave = c & " Item"
  ListView1.Add(CStr(c), Clave)
  c = c + 1  
Next

End

Public Sub ListView1_KeyRelease()

  Dim tecla As Integer = Key.Code

  Print "key interno " & ListView1.Key  'esto me da el idcolor donde esta el registro posicionado
  Print "tecla pulsada: " & Chr$(tecla)
  
  ListView1.MoveTo(Chr$(tecla))
  ListView1.MoveCurrent
  
Catch 
  Print Error.Text

End

y quiero que al pulsar las teclas del 0 al 9 el list se mueva pero no lo logro
Última modificación: 04-04-2023, 19:38 por ferchobahia.
Shordi   05-04-2023, 10:16
#5
ListView es un control basado en Treeview y hereda, claro, toda su complejidad. Tiene dos cursores, el interno, que es el que manejas con MoveTo y el externo, que es el mostrado (nunca he entendido muy bien para qué, pero por algo será, supongo)

Cambia en el evento keyrelease que has publicado las acciones de move por la asignación de la clave así:

Código:
Public Sub ListView1_KeyRelease()

  Dim tecla As Integer = Key.Code

  Print "key interno " & ListView1.Key  'esto me da el idcolor donde esta el registro posicionado
  Print "tecla pulsada: " & Chr$(tecla)

  ListView1.Key = Chr(tecla)

Catch
  Print Error.Text

End

Por otra parte, si no vas a incorporar iconos a los items, ListView no es el control adecuado para eso, utiliza mejor ListBox, que es más simple.

Saludos
Última modificación: 05-04-2023, 10:20 por Shordi.

No podemos regresar
tincho   05-04-2023, 12:19
#6
Propongo este código.
Código:
' Gambas class file

Public Sub Form_Open()

  Dim k As Integer

  ListView1.Mode = Select.Single

  For k = 0 To 9
    ListView1.Add(CStr(k), "Texto " & CStr(k))
  Next

End

Public Sub Form_KeyPress()

  Dim sKey As String

  If Key.Normal Then
    sKey = Key.Text
    If ListView1.Keys.Exist(sKey)
      ListView1.MoveTo(sKey)
      ListView1[sKey].Selected = True
      ListView1.Refresh
    Endif
  Endif

End

1 Saludo.
ferchobahia   05-04-2023, 13:50
#7
(05-04-2023, 10:16)Shordi escribió: ListView es un control basado en Treeview y hereda, claro, toda su complejidad. Tiene dos cursores, el interno, que es el que manejas con MoveTo y el externo, que es el mostrado (nunca he entendido muy bien para qué, pero por algo será, supongo)

Cambia en el evento keyrelease que has publicado las acciones de move por la asignación de la clave así:

Código:
Public Sub ListView1_KeyRelease()

  Dim tecla As Integer = Key.Code

  Print "key interno " & ListView1.Key  'esto me da el idcolor donde esta el registro posicionado
  Print "tecla pulsada: " & Chr$(tecla)

  ListView1.Key = Chr(tecla)

Catch
  Print Error.Text

End

Por otra parte, si no vas a incorporar iconos a los items, ListView no es el control adecuado para eso, utiliza mejor ListBox, que es más simple.

Saludos

buenisimo anda como queria!! muchas gracias no puedo creer que era tan simple y no me daba cuenta, me volvi loco con el cursor interno de gusto

(05-04-2023, 12:19)tincho escribió: Propongo este código.
Código:
' Gambas class file

Public Sub Form_Open()

  Dim k As Integer

  ListView1.Mode = Select.Single

  For k = 0 To 9
    ListView1.Add(CStr(k), "Texto " & CStr(k))
  Next

End

Public Sub Form_KeyPress()

  Dim sKey As String

  If Key.Normal Then
    sKey = Key.Text
    If ListView1.Keys.Exist(sKey)
      ListView1.MoveTo(sKey)
      ListView1[sKey].Selected = True
      ListView1.Refresh
    Endif
  Endif

End

perfecto muchas gracias tincho, es una buena solucion mas completa; hay rutinas y metodos que estan buenos para tener en cuenta
Última modificación: 05-04-2023, 14:12 por ferchobahia.
  
Usuarios navegando en este tema: 3 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.