Un editor COOL. Al recibir el foco se "ilumina" y viceversa...
HOLA A TODOS: :D
A ver que les parece esto que les tiro. Es un editor que al recibir el foco cambia de color y la apariencia de la fuente y cuando lo pierde (al foco :D) vuelve a la normalidad. En realidad me hacia falta algo asi y comence a diseñarlo; seguramente esta para arreglarlo y mejorarlo pero a mi me sirvio a pesar de sus defectos. Perdonen por no haberlo comentado, me parecio que no hacia falta. EDGARDO - Córdoba - Argentina
|
Hola,
Pues está muy bien, hombre. Muchas gracias por compartirlo. ;) |
Yo de nuevo...
¿Te anduvo?
Espero que si, pero fijate bien que si pones el efecto del cambio en el paint (donde debe ir) y no en repaint te puede funcionar mejor :rolleyes: ... En cualquier momento paso otro codigo de un editor con un boton adentro que cambia el glyph... None vemo depue' :) |
Hola,
Bueno. En realidad me limité a leer el código fuente. Me parece curioso que quieras compartirlo, porque puede ser de utilidad a alguien. Supongo que lo que dices del "Paint" tiene que ver conque no es del todo necesario el "Repaint", ¿verdad? |
Me olvidaba...
1.-Tambien se puede proceder del igual modo con un TDBEdit, ya lo hice y obviamente se llama TDBCoolEdit :D
2.- No te va a funcionar el cambio de color de foco porque no lo termine, solo le di un color fijo pero; en cuanto lo tenga lo paso. :cool: |
Sobre RePaint...
¿Curioso? :confused:
Para nada; pasa que es una buena forma de retribuir a las ayudas que me dan las personas que andan por el foro.:o Y sip; lo del repaint puede no ser necesario, pero pasa que por ahi pequé de necio :rolleyes: y en lugar de utilizar el Paint como corresponde quise ver que pasaba de la forma en que lo subi. De modo alguno vas a encontrar un par de cosas que no tienen sentido; sucede que iba escribiendo y bla bla bla, pero cuando daba marcha atras en algo no borraba todo el codigo basura.:p En fin; espero puedan disfrutarlo (y mejorarlo jejejejeje; le falta mucho) yo por mi lado lo voy a seguir desarrlollando... EDGARDO - Córdoba - Argentina :cool: |
Hola! Muy bueno el componente. Tan sólo una objeción. La propiedad "FontColorFocus" y "FontColorNoFocus" no es necesaria, ya que podrías usar el atributo Color de "FocusFont" y "NoFocusFont".
unsaludo! |
Fe De Errata...
...por mas que quiero...
Hola a todos, anoche deje el codiguito del CoolEdit y mencione lo del Paint en lugar de RePaint. Crei que era yo el herrado cuando le dije a David que habia sido necio al utilizar Repaint en lugar de Paint; pero resulta que Paint en el ancestro no existe:o y por muchas vueltas que le di; aun intentando con un evento personalizado agregado al que pretendi llamar Paint; no se pudo. Pido disculpas por el error cometido. |
Para DarKrazy...
Hola pibeeee:
Tenes razon sobre las cosillas de mas; no me di cuenta jejejeje :) Ya lo corregiré :rolleyes: |
DevEx Editors ya incluye este comportamiento para todos sus controles (mas de 30) con muchas otras opciones...
|
Este código hace un "HotTrack" con Labels y checkboxes, si lo cambian un poco sirve para cualquier control...me parece que se explica solo
|
Pregunta...
Hola AzidRain
¿Donde están esos componentes?, ¿tienen el codigo para verlo? EDGARDO - Córdoba - Argentina :cool: P.D.: veo que me odiaste por hacer esto tan pavo para vos; perdon. :o |
Cita:
|
Cita:
Ahi te deje un código muy similar que hace lo mismo que quieres, solo falta cmabiarlo para que afecte cualquier componente. Los componentes de Developer Express los encuentras en http://www.devexpress.com, hay varios demos descargables. La verdad son impresionantes y para quienes tenemos que hacer aplicaciones que "son para entregar ayer" y que además se ven bien pues es un muy buena opción. A mi me pasó que hice un descendiente de TDBGrid con totales y ordenación en los encabezados, pensé que era lo máximo hasta que vi TcxDBGrid de las DevEx...:D |
Interesante tu componente, esta pregunta me hice hace 1 año atrás de cómo lograr ese efecto de selección muy diferente al predeterminado por windows y.... pregunté en otros foros, no me respondieron, luego me olvidé del asunto y no lo hice ni en el Club Delphi, sabiendo que aquí encuentro muchas respuestas.
Probando el mismo, no sé si estoy utilizando mal tu componente o no me queda claro: las propiedades = Color, FocusColor, FontColorFocus, FontColorNoFocus, por mucho que las cambio a otro Color, en tiempo de ejecución no trabajan. Imagino ¿te falta acabarlo verdad? pregunto esto ya que con la programación de componentes no estoy muy familiarizado. Un saludo |
El codigo de CoolEdit corregido
Hola Deiv: :D
Perdon por la demora; aqui tenes el código corregido : ;) Falta darle unos retoques aun pero ahi va. Vas a encontrar cosas como por ejemplo que conviven la propiedad Color(la que trae por defecto) y ColorNoFocus (que es la que le puse yo), traté de que el efecto de "normalización" a la hora de perder el foco se produjera con la misma propiedad Color(por defecto del componente) pero si hago eso se pone todo en negro y todavia no encuentro el porqué (que seguro es una burrada que estoy obviando por ser eso : una burrada). Seguramente alguien le puede encontrar la vuelta y darle remedio; yo lo seguiré intentando al igual que con las fuentes que; posiblemente cambie todo a TStyleFont. Espero te sirva y si le haces cambios avisame. GRACIAS por comprar mi producto jajajajajaja noooo; una broma :cool:
|
otra vez yo jejeje
¿Como hacen para que el codigo que uno mete en el hilo les salga realmente como codigo (encuadrado y con formato Delphi) dentro del foro?, ¿que hay que tocar? o ¿lo hacen los moderadores?
EDGARDO - Córdoba - Argentina |
Hola pascalutn2003!
Puedes hacerlo tu mismo, solamente tienes que encerrar el código entre etiquetas [ delphi ] [ /delphi] (pero sin espacios) Más información aquí http://www.clubdelphi.com/foros/showthread.php?t=10004 Saludos |
Ya está encuadrado
Gracias hector :
Actuo como si entendiera y todo jejeje:cool: |
Que hace el inherited?
|
Inherited ejecuta el método que se llama igual en su ancestro. Puesto que el TCoolEdit deriva de un TEdit, lo que hace es ejecutar el método con el mismo nombre en la clase TEdit. En plata: Lo que se hace es un puente, para que todo el código escrito en la clase TEdit, sirva para el TCoolEdit. En este caso: se le ha de pasar el parámetro AOwner al Tedit, por eso se le añade el nombre del método (Create) y el parámetro AOwner. Saludos |
Respuesta a Delar
Hola Delar : :D
Respondiendo a tu pregunta, Inherited es la palabra reservada que implica la herencia. :) En el caso de SetFocus y KillFocus (que es a los Inherited que creo estas refiriendote) heredan el comportamiento del metodo del ancestro; a seguir le agregué lo que me interesaba que hiciera, pero fijate que si no lo pones (al inherited) cuando el componente reciba el foco no vas a ver el cursor y no se pintará el texto que haya adentro si es que lo hay. Hacele pruebas y mirá que resultados te dá. ;) Aunque de todos modos capaz que alguien atine a que haga lo que debe hacer sin la palabra reservada Inherited :rolleyes: De todos modos; como estoy trabajando con RePaint, tal vez sea esa la causa de verme obligado a utilizar Inherited. Como te decía antes, hace pruebas y fijate si encontras alguna otra forma.:o Espero que te aclare el panorama y suerte. EDGARDO - Córdoba - Argentina :cool: |
Hola pascalutn2003,
He recopiado tu último código y he vuelto a instalar el mismo, si bien ahora cambia el color, lo hace en tiempo de diseño pero no así en tiempo de ejecución. Sería bueno quienes entienden sobre la programación de componentes te echen una mano para seguir adelante y finalizar tu componente. |
Que raro...
Hola Deiv:
Fijate que he estado revisando el codigo, lo he desinstalado y vuelto a instalar y funciona bien.:confused: Las propiedades son: ColorFocus : Color de fondo con el foco ColorNoFocus : Color de fondo sin el foco FontColorFocus : Color de la fuente con el foco FontColorNoFocus : Color de la fuente sin el foco Por defecto y siempre al recibir el foco la letra se pone en negrita. Fijate nuevamente por favor y si no te funciona no se que pueda ser, seria bueno que otros amigos del club lo probaran y me dijeran si les pasa lo mismo.:o Nuevamente el codigo que acabo de compilar y que tengo funcionando en mi maquina :)
|
Pues yo lo acabo de instalar y aparentemente funciona, es decir, tengo varios CoolEdit en una forma y al navegar entre ellos con la tecla Tab cambian su color al recibir el foco. Bueno fue una prueba muy superficial pero al menos no me pasa los mismo que indica Deiv.
Saludos |
Bueno no sé como explicar, pero lo que sucede es que para desinstalarlo, primero que me fuí a Install Packages y busqué COOL, y no había, luego entonces reinstalé, ahí ya me salió un mensaje que ya existía duplicado, entonces en esa ventana que aparece Compile, Install, etc, ahi le dí Remove, si bien ya no veia al componente COOL en dicha ventana, pero seguía la pestaña de COOL entonces no se desinstaló, cosa mas rara, y cuando comprobé el componente, evidentemente trabajaba en tiempo de diseño pero no en tiempo de ejecución, algo debió truncarse imagino en mi máquina ya que si le funcionó a Randolph, entonces sí funca!
|
Para Deiv
Hola Deiv:
El problema que podes llegar a tener es que cuando instalaste el componente lo hayas hecho en un paquete que ya existia. Te recomiendo hacer lo siguiente : 1.- Click en Component en el menu principal de Delphi 2.- Click en Configure Palette 3.- Una vez dentro del cuadro de propiedades de la paleta de componentes "Palette Properties", vas a ver dos listados (uno al lado del otro) 4.- En el listado de la izquierda anda hasta el final del listado y Click sobre [All] para que te liste los componentes en su totalidad sin importar a quien pertenecen 5.- En el listado de la derecha vas a ver dos titulo (Name y Package); Click sobre Name para ordenar alfabeticamente los componentes 6.- Busca el componente Cool 7.- Si lo encontraste, fijate en la columna mas a la derecha a que paquete pertenece. 8.- Una vez localizado el componente, cerrá todo 9.- Buscá y abrí el paquete en cuestion haciendo doble click sobre dicho paquete 10.- En el cuadro de Edicion del paquete vas a ver una serie de botones (Compile, Add, Remove, Install y Options) 11.- Click sobre Remove 12.- En el cuadro de dialogo Remove From Project Click sobre el componente que quieras eliminar, darle a Ok y listo; no hay mas componente. Ojo guardá los cambios en el paquete. 13.- Reinstala el componente en un paquete nuevo (dale vos un nombre) y compilalo. 14.- Suerte y cuidado con lo que eliminas del paquete Si tenes duda sobre algo avisame y te doy una mano EDGARDO - Córdoba - Argentina |
Otro código parecido...
En su momento también necesite un código parecido, en mi caso no cambio el tipo de letra cuando el control está activo pero si el color del mismo permitiendo su selección desde el inspector de objetos.
Por otro lado, cómo la aplicación era de tamaño físicamente reducido decidí cargarme las etiquetas de cada TEdit y para que se supiera que era cada componente, decidí añadir una propiedad más DefaultValue que sirve para mostrar un texto por defecto en el caso que el usuario al salir del TEdit lo deje vacío (previamente tengo que decir que al entrar en el TEdit el text por defecto se borra para permitir al usuario introducir el valor que el quiera o no en función de la propiedad ClearOnEnter). Os dejo mi código:
Espero que alguien más a parte de mi pueda encontrar utilidad este "componente". Un saludo y gracias a todos. |
Acabo de darme cuenta que el "uses MaskUtils;" no tiene mucho sentido o si, no lo sé en cualquier caso seguro que está ahi por algún intento de "evolución" y que puede ser eliminado sin problema.
|
Para Hector
Hola master:
Acabo de instalarlo y probarlo. :) Sinceramente me gustó como lo encaraste, me habia olvidado de DoEnter y DoExit asi que voy a utilizar esa parte de tu codigo en el mio (me gusto mas:D). Ahora sigo con el problema de como realizar el cambio de fuente en activo y no activo usando los tipo TFontStyle. Tu codigo esta mejor porque contempla la propiedad Color para cuando esta inactivo, en cambio yo queria sacarmela de encima y no sabia como. :cool: En otros terminos, me gusto mas el tuyo. :rolleyes: GRACIAS :) EDGARDO - Córdoba - Argentina |
Cita:
8.- Bien cierro todas las ventanas. 9.- Busco en la pestaña del TabSheet de la PageControl donde estaba ubicado, pero ¿Donde doy doble click?? Le dí doble click a la pestaña, le dí doble click al componente y no sucede nada no aparece esa ventana que la conozco muy bien y se cómo utilizarla. 10.- Bueno finalmente he tratado de reinstalar el componente, así me salga el mensaje que existe un duplicado, y ahí aprovecho en REMOVErlo (11.-) cuando me aparece esa ventana(10.-) 12.- lo regrabo, pero cuando voy a la pestaña donde se encontraba el componente, por mucho que le haya dado Remove, por mucho que reinicio, SIGUE AHÍ y sigue trabajando! Bueno finalmente intenté por otro lado, he instalado un componente que no me hacía falta solo por abrir esa ventana, lo Remuevo, reinicio y evidentemente ya no está el COOL component. Para asegurarme he editado el código para que me aparezca en otra pestaña: Reinstalo el componente...... Y lo mas interesante es que se vuelve a instalar en la ANTIGUA PESTAÑA (Paquete) que estaba la última vez y no así en esta nueva de arriba, compruebo el código y ahora si trabaja muy bien. No sé si mi Delphi 7 está funcionando mal o el Componente hace algo en reinstalaciones. Pero de trabajar ahora trabaja muy bien. |
Me alegra que te haya gustado
Siguiendo la forma de este componente lo lógico sería pensar en esta aproximación:
pero cuando fueras al Inspector de objetos y le dieras al botón [...] para asignar los valores correspondiente a tu fuente te llevarás una pequeña sorpresa; por así decirlo Delphi no sabe que hacer para asignar de forma correcta los diferentes campos del TFont, para que funcione correctamente creo que vas a tener que jugar con la unit DesignEditors para definir un Property Editor para la asignación del TFont desde el inspector de objetos. En cualquier caso y siendo un poco chapuzas, puedes poner algo del tipo:
Así lograrías poder cambiar el tipo de letra en tiempo de diseño para cada uno de los componentes de forma individual desde el propio inspector de objetos, y de este modo cada componente podría tener su tipo de letra diferente si eso tiene alguna utilidad... Este cutre-procedimiento lo puedes extender también para el resto de propiedades del TFont que quieras modificar... si así lo haces te recomiendo empezar todas esas propiedades por alguna palabra común por ejemplo: FuenteActivaNombre, FuenteActivaTamaño, FuenteActivaEstilo, ... así lo que lograrías es que todas las propiedades aparezcan en el inspector de objetos agrupadas. |
Por si acaso estás tentado a preguntarme sobre esa unit y los editores de propiedades te recomiendo tanto la búsqueda por este foro de esos conceptos; como también, por ejemplo, la búsqueda en el google de: TPropertyEditor TFont Delphi el primer enlace trae ejemplos y te da dos referencias más para buscar: TFontNameProperty y TFontProperty... espero que te gusten las pruebas de ensayo y error como técnica de aprendizaje
Supongo que por mi parte ésta es toda la ayuda que te puedo ofrecer, pues poco he trabajado con los editores de propiedades. |
La franja horaria es GMT +2. Ahora son las 10:32:14. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi