Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Sobre El Control Editor
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Sobre El Control Editor 
 
Alguien sabe como se puede hacer en este control para que muestre el número de linea???

He visto el showlinenumbers, pero veo la ayuda para ver como va, y me quedo igual v.v

Me pasa lo msimo con el highlight, como podría hacer para cargar una sintaxis a mano?

EDITO: ya he conseguido lo del showlinenumbers... manda huevos...

txt_edicion.Flags[5] = TRUE

así se habilita!!!
 



 
al081570 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sobre El Control Editor 
 
Bueno, he conseguido (tras muuuuchas pruebas) sacar algo en claro sobre el highlight de este control.

Los colores (significativos) que implementa son:

    * breakpoint: rojo oscuro
    * commet: gris en cursiva
    * current: azul
    * currentline: gris claro
    * custom: azul oscuro
    * datatype: parecido a current
    * error: rojo subrayado
    * function: azul oscuro menos grueso
    * gambas: negro
    * highlight: amarillo (chillón)
    * keyword: azul oscuro
    * none: sin nada
    * normal: negro
    * number: rojo
    * operator: azul oscuro
    * string: rosa
    * symbol: negro

Las conclusiones que he sacado, después de dos días de pruebas, se remontan a lo siguiente:

El resaltado se realiza, tras el salto de línea gracias al evento highlight. Podemos cambiar el resaltado de la línea con highlight.add(higlight.xxx) donde xxx es alguno de los anteriores, y posteriormente highlight.showlimit = false.

Higlight.add, ejecutado sin más, sólo resalta la primera letra, si se ejecuta highlight.add(texto,n), tendremos un total de n carácteres resaltados. Sólo cambiará el resaltado cuando se vuelvan a ejecutar higlight.add con otro tipo de resaltado.

Un ejemplo práctico:

cadena = Highlight.Text
vector_cadena = Split(cadena, ” “)

FOR EACH c IN vector_cadena
Highlight.Add(diccionarios(c), Len(c))
Highlight.ShowLimit = FALSE
Highlight.Add(Highlight.Normal, 1)
Highlight.ShowLimit = FALSE
NEXT

Donde diccionarios:

PUBLIC FUNCTION diccionarios(cadena AS String) AS Integer

IF cadena = “pepe” THEN
RETURN Highlight.Keyword
ELSE
RETURN Highlight.Normal
ENDIF

END

Con lo que cuando escribamos la palabra pepe se nos iluminará.

Espero haberme podido explicar bien, y que sirva de ayuda para que alguien no tenga que liarse como me he tenido que liar yo.

He hecho algunas pruebas también para que se iluminen las palabra a medida que se escriben pero no iba muy fino, ya informaré..................
 



 
al081570 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sobre El Control Editor 
 
Hola tengo una consulta acerca de este control. Estoy tratando de realizar un IDE para Bennu (bennugd.com) lo primero que quiero que haga es el resaltado de sintaxis, encontre este maravilloso control pero tiene muy poca documentación. Como se implementa? ya vi el ejemplo que trae gambas (el editor HTML) pero me gustaria implementar utilizando diccionarios. Por ejemplos

Keywords
BEgin
If
EndIf
Else
While

Operadores
=
>
<

Comentarios
//

Etc.

tendrian un ejemplo sencillo donde se explique mejor como hacer ? Muchas GRacias!!!

saludos
 



 
crashon182 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sobre El Control Editor 
 
Este es un control realmente complejo. Debido a la falta de documentación sobre su uso, la única alternativa por el momento podría ser el estudio del propio código fuente de gambas (hecho en gambas), donde a buen seguro encontrareis las claves para implementarlo de una manera decente.

Muchas veces la solución la tenemos delante y no sabemos verla. Ojo, no digo que no hayáis buscado, que no lo dudo, pero es lo único que se me ocurre. Yo de momento no he necesitado usar el Editor, por lo que no lo he estudiado; quizás algún día lo necesite y tenga que recurrir a mi propio consejo

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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sobre El Control Editor 
 
muchas gracias jguardon por responder. voy a ver si busco en el fuente y logro entender que es lo que hacen, voy posteando las distintas pruebas! cualquier cosa que alguien entienda el uso de este control somos todos oidos!  

saludos!

Alexis
 



 
crashon182 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sobre El Control Editor 
 
bueno pongo el código de los avances con el control... ya he logrado algunas cosas investigando pero me faltan muchas otras.

Que logre:

declaro las variables que voy a utilizar y le indico al control que se muestre con los números de linea

' gambas class file
PUBLIC cadena AS String
PUBLIC vector_cadena AS Array
PUBLIC c AS String
PUBLIC cadena_comentario AS String
PUBLIC longitud_texto AS Integer
PUBLIC comentario AS Boolean


PUBLIC SUB Form_Open()
' Indicamos que el editor inicie mostrando las lineas
Editor1.Flags[Editor1.showlinenumbers] = TRUE

END


Hice una función llamada diccionario, la cual tiene las palabras claves del lenguaje. el código es el siguiente:

'*************************************************************************************************************************
'***************función que maneja el diccionario de palabras reservadas de Bennu
'************************************************************************************************************************
PUBLIC FUNCTION diccionarios(cadena AS String) AS Integer

 SELECT CASE cadena
  CASE "BEGIN"
   RETURN Highlight.Keyword
   CASE "END"
   RETURN Highlight.Keyword
  CASE "DECLARE"
    RETURN Highlight.Keyword
  CASE "LOOP"
    RETURN Highlight.Keyword
  CASE "LOOP"
   RETURN Highlight.Keyword
  CASE "WHILE"
   RETURN Highlight.Keyword
  CASE "FOR"
    RETURN Highlight.Keyword
  CASE "FROM"
    RETURN Highlight.Keyword  
  CASE "IF"
    RETURN Highlight.Keyword
  CASE "CASE"
    RETURN Highlight.Keyword    
  CASE "STRUCT"
    RETURN Highlight.Keyword
  CASE "#IFNDEF"
    RETURN Highlight.Keyword  
  CASE "#IFDEF"
    RETURN Highlight.Keyword  
  CASE "REPEAT"
    RETURN Highlight.Keyword  
  CASE ELSE
    RETURN Highlight.Normal
 END SELECT
  
END


Nótese que devuelve el tipo de coloreado (highlight.keyword, le poner el color de palabra claves) Muchas gracias a al081570, porque me base en su código.


luego cree un nuevo evento llamado Editor1_Highlight(), el cual maneja el coloreado en si.


PUBLIC SUB Editor1_Highlight()


'*******************************************************************************************************************'*
****************LE indicamos al lenguaje que utilizaremos el indentado Por ahora vastante incomodo porque indenta todo. *****************
'*****************TODO: Lograr un indentado inteligente que dependiendo la palabra clave lo haga de una Forma u otra*
Editor1.Indent

'calculamos la longitud total del texto contenido en el editor

longitud_texto = Editor1.Length
  ' convertimos el texto que deseamos colorear a Mayúsculas
  ' de esta forma evitamos de exigir al usuario que lo ingrese de cierta forma
  'o de extender más el código.
cadena = UCase$(Highlight.Text)

' dividimos cada palabra reservada y la ponemos en un Array.
vector_cadena = Split(cadena, " ")
' Recorremos el Array

FOR EACH c IN vector_cadena

' preguntamos si el texto es un comentario, en este caso se trata de forma especial, debido
' a que debemos marcar todo el renglón del mismo texto
  ' en cadena comentario guardamos las primeras dos letras (que serian las //) para que si el texto se escribe junto a estas
  ' nos señale como comentario.

 cadena_comentario = Left$(c, 2)
  IF cadena_comentario = "//" OR cadena_comentario = "/*" THEN
'pintamos el texto con el color correspondiente al comentario, pintamos la longitud total del renglón
   Highlight.Add(Highlight.Comment, Len(cadena))
  ELSE
 'sino pintamos la palabra reservada que encontró en la función diccionario(c)
    Highlight.Add(diccionarios(c), Len(c))
    Highlight.ShowLimit = FALSE
    Highlight.Add(Highlight.Normal, 1)
    Highlight.ShowLimit = FALSE
  ENDIF
  
'***********************************************************************************************************************
'************ En esta sección nos fijamos si se pone una palabra que deba llevar END al final y lo pone automaticamente
'***********************************************************************************************************************
   IF c = "BEGIN" OR c = "PROCEDURE" THEN
    Editor1.Insert("END", Editor1.Line + 2, 0)
  ENDIF
  
   IF c = "/*" THEN
    Editor1.Insert("*/", Editor1.Line + 2, 0)
 ENDIF
  
NEXT

END


esta se podría decir que es la parte principal donde coloreamos el texto.
también hice que cuando el programador ponga BEGIN automaticamente coloque el end. Igualmente con el comentario de múltiple linea /*  */
que problemas tengo en este caso:

1 dependiendo donde escriba la palabra begin, en alguno casos me pone el END al lado del otro por ejemplo.

BEGIN
BEGIN

ENDEND

otra cosa el END no lo pone indentado. por ejemplo

Begin
       Begin

       END
END

otro problema es que cuando pongo el comentario /*  solo me comenta la primer linea y no todo el bloque.

otro problema que encontré es que al usar cadena = UCase$(Highlight.Text) no me escribe en mayuscula en el editor. Es decir, yo necesito que si escribe:

begin el editor automáticamente lo pongo como BEGIN.

Otra de los cambios que quiero hacer es que las palabras claves las tome de un archivo XML.

Bueno eso es todo lo que he descubierto por ahora... gracias a todos y espero que les sirva.


PD: ME costo mucho leer los fuentes del gambas, y hay pocas cosas que pude aprovechar por no entenderlo.

bueno cualquier otro avance lo público y si alguien tiene conocimiento acerca de este control esta invitado para ayudar!  

ahora les pongo un ejemplo de RUDIMENTARIO IDE funcionando

 pantallazo

no se rian! =P
 



 
última edición por crashon182 el Miercoles, 13 Enero 2010, 12:28; editado 3 veces 
crashon182 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sobre El Control Editor 
 
jeje. ,me estuve pegando mucho tiempo con esto.

Puedes descargarte de mi web www.joa.al081570.es el código del Joa, donde implementé el coloreado del texto.

En su día no encontré nada de documentación, y me tuve que buscar un poco la vida... pero conseguí lo que me hacía falta. Mira a ver si puedes aprovechar algo.

Saludos!!
 



 
al081570 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sobre El Control Editor 
 
Muchas gracias pero ya lo había bajado y estudiado al código fuente de tu programa (jeje me sirvió mucho).

Ahora estoy con el siguiente problema. Cuando abro un archivo (el cual fue creado desde windows) me sale el carácter de retorno de carro. Con los ficheros que creo desde linux no me ocurre esto. a que se puede deber?. tienen alguna idea para solucionar este problema y que me quede el código fuente limpio?

muchas gracias!

les pongo una imagen para que vean como queda con estos caracteres raros.

 ace_1
 



 
crashon182 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sobre El Control Editor 
 
Mira esto: http://gambasdoc.org/help/lang/conv?es
 



 
al081570 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sobre El Control Editor 
 
al081570 escribió: [Ver mensaje]
Mira esto: http://gambasdoc.org/help/lang/conv?es


Muchas gracias Al, he logrado solucionar el problema en parte.

al control editor le ingrese lo siguiente:


Editor1.Text = Conv$(sData, Desktop.Charset, "UTF-8")

donde sData es la información cargada. (el código fuente)

ahora en algunos casos me saco los cuadraditos pero en otras partes sigue igual. probé con distintos charset y me ocurre lo mismo. Sabrás porque puede ser?

adjunto imagen para que vean como va quedando

 ace_2
 



 
crashon182 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Control Editor: Colorear Palabras Clave jsbsan Controles/Librerías/Componentes 0 Martes, 29 Marzo 2011, 10:23 Ver último mensaje
jsbsan
No hay nuevos mensajes Cuestiones Sobre El Editor De Gambas3 Shell General 2 Viernes, 30 Noviembre 2012, 10:24 Ver último mensaje
Shell
No hay nuevos mensajes Un Nuevo Control: HttpEdit. Editor De Html shordi Controles/Librerías/Componentes 8 Viernes, 06 Septiembre 2019, 21:19 Ver último mensaje
tincho
No hay nuevos mensajes Menu Editor Y Herencia Del Control Event mateobadajoz Controles/Librerías/Componentes 7 Viernes, 13 Marzo 2020, 13:47 Ver último mensaje
mateobadajoz
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron