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
Sugerencias Durante La Escritura De Código HTML (Solucionado) :)
Objetivo: Sugerencias Durante La Escritura De Código HTML (Solucionado) :)
última edición por BrunoIV el Lunes, 29 Agosto 2011, 22:10; editado 1 vez
última edición por BrunoIV el Lunes, 29 Agosto 2011, 22:10; editado 1 vez
Objetivo: 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
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
Objetivo: 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:
Ni de coña me veo capacitado para eso.. jaja
¡Al turrón!
Respecto a:
Citar:
Ni de coña me veo capacitado para eso.. jaja
¡Al turrón!
Objetivo: 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
editor.Goto(0,0) 'Linea 0 columna 0
editor.setFocus
Objetivo: 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í:
Prueba a ver si así te funciona, si no, habrá que "cotillear" cómo lo hace Benoit...
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
' 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
' 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...
Objetivo: Re: Sugerencias Durante La Escritura De Código HTML
Public Sub, por supuesto. Ya lo he corregido.
Objetivo: 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:
El error está aquí (Unknown sysmbol "mostrarLista" in class 'Form'):
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é
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
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:
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é
Objetivo: 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..
Gracias igualmente cierro
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
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
Objetivo: 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
Un saludo
Página 1 de 2
No puede crear mensajesNo 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
Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.
Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo
Página generada en:: 0.468s (PHP: -67% SQL: 167%)
Consultas SQL: 45 - Debug off - GZIP Activado