FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda para escribir Símbolos Lógicos!!!
Hola, tengo que hacer mi TFC en Delphi y ando bastante perdida, ya que llevo muchos años sin programar.
El caso es que la primera parte de mi TFC es un editor de fórmulas lógicas y se me ocurrió usar un RichEdit para que allí el usuario pueda escribirlas. El problema está a la hora de escribir los símbolos lógicos porque solamente se pueden escribir en el tipo de letra "Symbol". Tengo creados unos botones, cada uno para cada símbolo lógico (en el Caption de cada botón si que se ve correctamente el símbolo lógico), de manera que tú escribes una letra en el Richedit y cuando pulsas uno de los botones te añade el simbolo lógico y te lo deja preparado para seguir escribiendo letras en el tipo de letra que tenia. Tengo puesto el siguiente código en el evento OnClick de cada botón y no funciona (juro que en mi antiguo PC funcionó, pero ahora en el nuevo con Windows Vista no hay manera): RichEdit1.SelAttributes.Name:='Symbol'; RichEdit1.Seltext:=RichEdit1.Seltext+'$'; /*Este simbolo al escribirlo en "Symbol" te escribe el símbolo "Existe" */ RichEdit1.SelAttributes.Name:='Courier New'; RichEdit1.SetFocus; El caso es que cuando pulsas el botón no llega a cambiar el tipo de letra y claro te escribe el '$' en lugar del símbolo "Existe". No se me ocurre otra manera de poder hacer el editor, a lo mejor existe otro componente que me facilitaría el tema de los símbolos lógicos, pero lo desconozco porque ya os digo que hace mucho que no programo nada y me he quedado un poco "obsoleta", jeje. Por favor si a alguien se le ocurre algo que me lo diga, porque no paso de esta primera parte y claro no avanzo nada (y eso que esta primera parte es la fácil, jeje). Un saludo y gracias de antemano Su |
#2
|
|||
|
|||
Hola, tengo windows xp y tu codigo me funcionaba...¿has probado cambiando Richedit1.Font.Name segun lo necesites? Tambien puedes mirar si los nombres son exactamente esos y si asi estan registrados en Windows Vista...no se me ocurre nada mas de momento
Última edición por coso fecha: 12-10-2008 a las 22:58:46. |
#3
|
||||
|
||||
Si coso dice que funciona, funcionará, pero teóricamente diría que no:
Digo que teóricamente me suena mejor así: - selecciono el texto - cambio el tipo de letra - deselecciono el texto - restauro el tipo de letra. Quizás después del SelLength habría que poner selStart := length(richedit1.lines.text) para que se desplace hasta el final el cursor... no sé. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 13-10-2008 a las 12:31:51. Razón: quitar scroll horizontal |
#4
|
|||
|
|||
juas gracias pero...no no, me funcionaba su codigo en Windows XP, ni idea de en Windows Vista
|
#5
|
|||
|
|||
Muchas gracias a los dos por contestar, voy a probar lo que me habeís dicho a ver si me funciona. Os diré algo, vale??
Un saludo Su |
#6
|
|||
|
|||
Hola de nuevo, casi he conseguido que me funcione con el código que tenía. Bueno en realidad también debía funcionar antes, pero ahora me he dado cuenta de que la primera vez que se crea y activa el formulario (es el tercer formulario de la aplicación) cuando pincho en el botón del "Existe", me escribe el símbolo "$". Pero si lo selecciono de manera que se queda marcado en negro y vuelvo a dar al botón, pues me cambia el que había escrito y me escribe uno nuevo pero ya correctamente en el tipo de letra Symbol.
Si cierro esa ventana, vuelvo al formulario anterior y la vuelvo a abrir, ya si que me funciona bien desde el principio. Es como si el RichEdit ya se quedase bien. Probablemente necesite poner algo en el FormActivate o en el FormCreate. Ahora mismo tengo puesto lo siguiente: procedure TForm3.FormActivate(Sender: TObject); begin RichEdit1.SetFocus; RichEdit1.Text:=''; RichEdit2.Text:=''; RichEdit1.SelAttributes.Name:='Symbol'; end; procedure TForm3.FormCreate(Sender: TObject); begin RichEdit1.Text:=''; RichEdit2.Text:=''; RichEdit1.SelAttributes.Name:='Symbol'; end; ¿Creeis que está bien así? ¿Y por qué no cambia bien el tipo de letra la primera vez que se crea el formulario? Gracias Su |
#7
|
|||
|
|||
Hola, poniendo algo como
se soluciona. Creo que el problema viene de RichEdit1.SelAttributes.InitFormat(var format : TCharFormat). Me da que se llama a esta funcion la primera vez que se pega una seleccion, por lo que entonces tu primer $ no tendria aun los atributos correspondientes. Ni idea, solo se que con eso lo resuelves. Saludos. |
#8
|
|||
|
|||
Madre mia por fin me funciona, muchas gracias coso, con esto último que me has dicho me funciona perfectamente. He estado haciendo unas cuantas pruebas y de momento no me ha fallado ninguna. Voy a ver si continuo y si me surge alguna duda os consultaré de nuevo.
Muchas gracias Su |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Campos Lógicos en Firebird | KAYO | Conexión con bases de datos | 10 | 01-09-2008 23:41:27 |
Necesito crear un permiso para escribir pero no para leer | federiconqn21 | Conexión con bases de datos | 5 | 07-07-2006 19:13:47 |
Bdbrid con campos logicos | federicorl | Conexión con bases de datos | 2 | 17-05-2006 23:14:41 |
Campos lógicos en Paradox | Acker | Conexión con bases de datos | 4 | 28-08-2005 12:41:56 |
Ayuda con el Inno SEtUp5.¿Cómo escribir en un fichero?? | VRO | Varios | 3 | 17-01-2005 08:23:49 |
|