FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Poner asterisco al lado de un TEdit
Al componente TEdit le agregué la propiedad boleana Requerido para indicar si el campo no debe dejarse en blanco. El valor de esa propiedad quiero mostrarlo poniendo o no poniendo un asterisco rojo al lado derecho del rectángulo que delimita el TEdit, ya sea en tiempo de diseño o de ejecución.
He intentado poner el asterisco con TCanvas dentro del evento WMPaint pero no me ha funcionado. Algo importante, la validación de que no esté en blanco no la integraré al componente sino en un procedimiento de la TForm. A ver si pueden echarme una mano con el código o en caso de que no sea posible, pues también me lo digan. Gracias. |
#2
|
|||
|
|||
Hola!
Para lo que quieres hacer, yo heredaría de TCustomLabeledEdit, ya que este componente ya integra el label manteniéndolo público en lugar de published. De esta forma, con tu componente sólo deberías hacer en el setRequerido:
y poner las propiedades de la fuente y la posición del label (con LabelPosition y LabelSpacing). Cuando lo arrastres en tiempo de diseño, por no tener las propiedades published no te dejará modificarlas, por lo que siempre tendrás el caption que indiques con la propiedad "Requerido". Espero que te sirva. Un saludo, LoPiTaL |
#3
|
||||
|
||||
Hay varias opciones. Antes comentar que no me ha quedado claro si quieres el asterisco dentro del Edit (a la derecha) o fuera (a la derecha).
Si es dentro, puedes revisar el componente TEditInsideHelp de mi página. Bájalo y revisa el código, pero creo que es lo que necesitas:
En este caso se pinta lo que hay en una propiedad, pero es fácil modificar para que pinte un asterisco rojo a la derecha. Si lo que quieres es pintarlo fuera del edit (a la derecha), pues puedes derivar como te han dicho, o incluso utilizar Frames, aunque creo que la primera opción es mejor. Si me apuras puedes crear un componentes nuevo derivado de TPanel, que contenga un Edit y un Label.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
|||
|
|||
Desearía el asterisco estuviera fuera, algo como:
[____] * espero se entienda, la pseudo-imagen. Respecto a usar el componente InsideHelp, intenté modificar el evento para poner el asterisco fuera pero no lo he logrado. Si pudieras ayudarme a hacerlo porque los componentes no son mi fuerte, y con eso me economizarías horas silla |
#5
|
||||
|
||||
Cita:
Por lo pronto deriva el componente "sin nada." (1) En el create modifica la fuente y color del Label y asigna el ASTERISCO al Caption. (2) Modifica también la ubicación del Label. ... Prueba, pon el código y dinos si te atascas...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#6
|
|||
|
|||
Voy a hacer la derivación, como comenta LoPiTal y les comento la próxima semana pues estaré fuera unos días.
Por lo pronto, gracias por el apoyo a ambos. |
#7
|
|||
|
|||
No se me había ocurrido hacerlo así, y sí es como lo imaginaba.
Lo extra que tendría que hacer sería agregarle otras propiedades que ya le había puesto a mi TEdit derivado. Muchas gracias. |
#8
|
|||
|
|||
Cita:
Les pongo lo escencial del código: Código:
TEntradaTxt = class(TLabeledEdit) FRequerido: Boolean; procedure SetRequerido(lVal: Boolean); public constructor Create(AOwner: TComponent); override; published property Requerido: Boolean read FRequerido write SetRequerido; end; constructor TEntradaTxt.Create(AOwner: TComponent); begin inherited Create(AOwner); FRequerido := False; LabelPosition:= lpRight; LabelSpacing := 4; EditLabel.Caption:= ''; EditLabel.Font.Color:= clRed; end; procedure TEntradaTxt.SetRequerido(lVal: Boolean); begin if lVal <> FRequerido then begin FRequerido := lVal; if lVal then EditLabel.Caption:= '*' else EditLabel.Caption:= ''; RecreateWnd; end else begin //***mi parche*** if (not FRequerido) and (EditLabel.Caption <> '') then EditLabel.Caption:= ''; end; end; A mi ver no me falta ninguna inicialización pero me sale ese valor y quise resolverlo agregando el código que marque con la etiqueta "mi parche", pero no me funciona. En tiempo de diseño para borrar ese valor, una vez insertado el componente, en el Obj Inspector asigno con el mouse Requerido y luego lo desasigno y de esa manera desaparece el valor del Name en el Caption. Podrian orientarme en ¿cómo puedo corregirlo para que salga en blanco en tiempo de diseño? Gracias de antemano. |
#9
|
||||
|
||||
Prueba con algo así; Tal como lo habías hecho debería funcionar:
Creo que el problema es dejar la cadena vacía en el Edit; Basta con que coloques un ESPACIO. Por lo visto al dejarla vacía no le hace caso y vuelve a colocar el nombre.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#10
|
|||
|
|||
Gracias totales, Neftali, ese era el código ad-hoc.
Y gracias también a LoPiTal, por la línea a desarrollar. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
asterisco (*) en keydown o keypress | pborges36 | Varios | 5 | 27-02-2009 19:57:03 |
El lado equivocado | ContraVeneno | Humor | 3 | 18-09-2007 20:21:17 |
Tablas al lado | Deiv | HTML, Javascript y otros | 1 | 19-02-2007 20:32:25 |
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera | atirado | Varios | 4 | 11-09-2004 19:13:48 |
Minimizar al lado del relojito | RaulChemical | API de Windows | 1 | 07-11-2003 14:32:05 |
|