|
Página 1 de 2
|
Sugerencias Durante La Escritura De Código HTML (Solucionado) :)
Autor |
Mensaje |
BrunoIV
|
Sugerencias Durante La Escritura De Código HTML (Solucionado) :)
Konnichi wa...
Estoy tratando de que al escribir <h , aparezca un listado <h1>, <h2>, <h3>, etcs en modo emergente (como hace gambas cuando por ejemplo escribes "nex", el te sugiere "next")
Se me ocurrió usar crear un menú dependendiendo de lo que se escriba y mostrarlo con miMenu.PopUp(), me pregunto si hay algún componente o modo menos manual..
Saludos
última edición por BrunoIV el Lunes, 29 Agosto 2011, 22:10; editado 1 vez
|
#1 Sabado, 27 Agosto 2011, 21:45 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Sugerencias Durante La Escritura De Código HTML
Si no estoy equivocado, gambas usa un formulario sin bordes con un listbox ocupando toda la superficie (arrangement = fill). Puedes crear este formulario y llamarlo con los valores adecuados de posición, tamaño y la propiedad stacking = above ( http://gambasdoc.org/help/comp/gb.qt/window/stacking ). Al llamarlo le pasas un array con las coincidencias y llenas el listbox con ellas, incluso puedes usar iconos diferentes para los items del listbox. En otro evento, por ejemplo clic sobre el editor o tecla TAB para auto-completar, escondes el formulario emergente, inicializándolo cada vez que lo vuelvas a llamar mediante el evento change del editor si el número de caracteres tecleados son más de 2 y están dentro de las coincidencias posibles.
Puedes revisar el código fuente de gambas, la parte del editor, aunque es bastante complejo por el uso intensivo de POO, pero quizás te de alguna idea.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#2 Sabado, 27 Agosto 2011, 22:23 |
|
|
BrunoIV
|
Re: Sugerencias Durante La Escritura De Código HTML
Gracias jguardon, intento esto y ya daré señales de vida y mi solución cuando la tenga.
Respecto a:
Citar:
Puedes revisar el código fuente de gambas, la parte del editor, aunque es bastante complejo por el uso intensivo de POO, pero quizás te de alguna idea.
Ni de coña me veo capacitado para eso.. jaja
¡Al turrón!
|
#3 Sabado, 27 Agosto 2011, 22:27 |
|
|
BrunoIV
|
Re: Sugerencias Durante La Escritura De Código HTML
Ya lo tengo casi... pero tengo un pícolo problemo con esto.. Al abrir el formulario o el menú popup (intenté los 2), me es imposible escribir en el cuadro de texto, hay que hacer clic sobre el.. y setFocus no no funciona, intenté también:
editor.Goto(0,0) 'Linea 0 columna 0
editor.setFocus
|
#4 Sabado, 27 Agosto 2011, 23:04 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Sugerencias Durante La Escritura De Código HTML
Claro... se me ocurre que podrías declarar un evento en el formulario emergente que se dispare justo cuando se muestra, en el form_open y manejar el evento desde el formulario donde está el editor. Ese evento debe ejecutar editor.setFocus, para devolver el foco al editor inmediatamente.
Algo así:
' Form emergente "FEmerg"
' Declaramos un nuevo evento
EVENT devuelveFoco()
Public Form_Open()
' lo disparamos nada mas mostrarse el formulario
RAISE devuelveFoco()
End
Public mostrarLista(coincidencias AS String[])
' este es el método que empleamos para llamar al formulario desde el principal
' pasando como parámetros un array con las coincidencias filtradas
ListBox1.List = coincidencias
Me.Show
End
'Form editor
' Declaramos un formulario genérico
Private $formEmergente as Form
Public Form_Open()
' Instanciamos nuestro nuevo formulario emergente con su manejador de eventos
$formEmergente = New FEmerg AS "formEmergente"
...
End
Public Sub editor_change()
' llamamos al formulario emergente con la lista de etiquetas
' habria que inventar un contador para calcular que solo se llame
' si hemos tecleado al menos 2 o 3 letras de una palabra clave
If contador > 2 then
$formEmergente.mostrarLista(lista)
Endif
End
' Usamos el nombre del manejador de eventos y el nombre del evento
' para construir este método que se ejecutará cuando se dispare dicho evento
Public Sub formEmergente_devuelveFoco()
editor.setFocus
End
Prueba a ver si así te funciona, si no, habrá que "cotillear" cómo lo hace Benoit...
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#5 Domingo, 28 Agosto 2011, 00:05 |
|
|
BrunoIV
|
Re: Sugerencias Durante La Escritura De Código HTML
Public formEmergente_devuelveFoco()
Missing AS
|
#6 Domingo, 28 Agosto 2011, 13:24 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Sugerencias Durante La Escritura De Código HTML
Public Sub, por supuesto. Ya lo he corregido.
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#7 Lunes, 29 Agosto 2011, 00:34 |
|
|
BrunoIV
|
Re: Sugerencias Durante La Escritura De Código HTML
Disculpa mi torpeza, pero no lo logro..
Intentaré poner lo que tengo, a ver si localiza alguien el error:
'FMain (aquí tengo el editor llamado edtHtml)
PRIVATE $formEmergente AS Form
Public Form_Open()
$formEmergente = New FEmerg AS "FEmerg" 'Nombre del formulario que tiene el listbox
End
Public Sub formEmergente_devuelveFoco()
edtHtml.setFocus
End
'Por otro lado, al apretar < y cualquier letra intento abrir esto:
$formEmergente.mostrarLista() 'DE MOMENTO SIN PARÁMETROS!!
'==========================================================================
'FEmerg (aquí muestro una etiquetas, ACTUALMENTE SON 2 DE EJEMPLO!!)
EVENT devuelveFoco()
PUBLIC SUB Form_Open()
RAISE devuelveFoco()
END
PUBLIC SUB mostrarLista()
'Este método lo llamamos para mostrar el formulario
'Carga datos de ejemplo, SUBSTITUIR LUEGO
ListBox1.Add("<h2>")
ListBox1.Add("<h8>")
ME.Show
END
El error está aquí (Unknown sysmbol "mostrarLista" in class 'Form'):
Citar:
$formEmergente.mostrarLista()
Si lo substituyo por FFmerg.mostrarLista() abre el formulario pero no establece el foco en el Editor...
Si no se puede no pasa nada, lo puedo incrustar a la izquierda de la pantalla o algo pensaré
|
#8 Lunes, 29 Agosto 2011, 18:33 |
|
|
BrunoIV
|
Re: Sugerencias Durante La Escritura De Código HTML
Lo tengo.. Muajajaaj.. He optado por lo sencillo, pero funciona correctamente...
He creado un panel oculto en el formulario con el listbox que me dijiste, cuando el Luser escribe < y cualquier cosa se muestra donde tengas el mouse con las sugerencias. Me falta que al apretar las fechas y apretar intro se muestre la selección..
PUBLIC FUNCTION muestraSugerencias(aCoincidencias AS String[])
DIM iContador AS Integer
FOR iContador = 0 TO aCoincidencias.Length - 1 STEP 1
lbxEtiquetas.Add(aCoincidencias[iContador])
NEXT
pnlSugerencias.Move(Mouse.ScreenX, Mouse.ScreenY)
pnlSugerencias.Visible = TRUE
pnlSugerencias.Height = lbxEtiquetas.Count * 28
lbxEtiquetas.Height = pnlSugerencias.Height - 10
END
Gracias igualmente cierro
|
#9 Lunes, 29 Agosto 2011, 22:10 |
|
|
netking86
Técnico Programador
Registrado: Septiembre 2009
Mensajes: 159
Edad: 38 Ubicación: Málaga
|
Re: Sugerencias Durante La Escritura De Código HTML (Solucionado) :)
Una recomendación. Yo estoy trabajando con el editor y he visto algunas cosas interesantes. Puedes investigar el control Editor, ya que creo que hay unas propiedades que te indican la posicion en pixeles del cursor. De ese modo, el cuadro sugerencias lo puedes mostrar al lado de donde se esta escribiendo.
Un saludo
=================== Proyecto Open Media Manager -> http://www.OpenMediaManager.com
|
#10 Lunes, 29 Agosto 2011, 22:34 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|