Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-07-2011
linuxtin linuxtin is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 30
Poder: 0
linuxtin Va por buen camino
Crear unidad para cambiar el formato a los Tedits....

Hola a todos como andan!!

La consulta que tengo es la siguiente, en los distintos formularios se me ocurrió cambiar el fondo de lo Tedits de color azul y la letra con color blanco, para que sea un poco mas amigable al cargar los datos.

Código Delphi [-]

procedure TAltasForm.MailEditEnter(Sender: TObject); 
begin               
  MailEdit.Color:=$00FC8856;               
  MailEdit.Font.Color:=clWhite;  
end;  

procedure TAltasForm.MailEditExit(Sender: TObject); 
begin                 
  MailEdit.Color:=clWhite;                 
  MailEdit.Font.Color:=clBlack;  
end;

Pero como son muchos edits me gustaria hacer una unidad, para poder llamarla para cada edit.

No se como implementar esto. Si alguien me puede dar una idea!!

Desde ya muchas gracias!

Última edición por Neftali [Germán.Estévez] fecha: 20-07-2011 a las 11:00:13. Razón: Corregir etiquetas de código (Neftalí)
Responder Con Cita
  #2  
Antiguo 20-07-2011
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
Poder: 20
ElKurgan Va camino a la fama
Mira el truco de las clases interpuestas, del maestro Marteens; a lo mejor te puede dar una idea.

Además, si buscas clases interpuestas con Delphi en google te sale un buen puñado de enlaces.

Un saludo
Responder Con Cita
  #3  
Antiguo 20-07-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
La otra opción es crear un componente sencillo que lo haga y utilizarlo cuando lo necesites.
Hay varios hilos en los foros donde puedes ver cómo hacerlo, algunos incluso son prácticamente lo que necesitas:

http://www.clubdelphi.com/foros/show...53&postcount=5
http://www.clubdelphi.com/foros/show...34&postcount=7
http://www.clubdelphi.com/foros/show...98&postcount=3
http://www.clubdelphi.com/foros/show...22&postcount=6
__________________
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.
Responder Con Cita
  #4  
Antiguo 20-07-2011
linuxtin linuxtin is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 30
Poder: 0
linuxtin Va por buen camino
Gracias Neftali, ElKurgan muchos enlaces me pasaron!!

Cual me recomiendan para implementar???

Saludos!!!!!
Responder Con Cita
  #5  
Antiguo 20-07-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por linuxtin Ver Mensaje
Cual me recomiendan para implementar???
Si lo vas a utilizar en muchos sitios del proyecto, yo optaría por el componente nuevo.
Si dentro de un mismo formulario vas a tener Edit de este tipo y Edits normales, también deberás crear componente nuevo.
Si es en un formulario o dos puedes utilizar esta técnica.

Es un poco a tu gusto; Al final hacen lo mismo.
__________________
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.
Responder Con Cita
  #6  
Antiguo 20-07-2011
linuxtin linuxtin is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 30
Poder: 0
linuxtin Va por buen camino
Cita:
Si lo vas a utilizar en muchos sitios del proyecto, yo optaría por el componente nuevo.
Una preguntita o preguntonta jaja, al ser un componente tengo que compilarla en un proyecto nuevo y agregar la ruta?

O agrego la unidad al proyecto mio??

Saludos!
Responder Con Cita
  #7  
Antiguo 20-07-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Para un nuevo componente debes crear un package nuevo (o agergarlo en el de usuario).
Una vez compilado e instalado ya te aparecerá en la paleta de componentes y podrás utilizarlo siempre que quieras.
Tal vez debas revisar algun manualillo de crear componentes.

* Crear componente paso a paso
* Manual para crear un componente
__________________
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.
Responder Con Cita
  #8  
Antiguo 20-07-2011
linuxtin linuxtin is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 30
Poder: 0
linuxtin Va por buen camino
Pude compilar el componente, anda muy bien pero el problema es que tengo que cambiar todos los Tedits que tengo, si creo una unidad con este código

Código Delphi [-]
unit ColorEdit;

interface

uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, jpeg, ExtCtrls, StdCtrls, Buttons, Mask, DBCtrls;


type
  TForm1 = class(TForm)
    {...}
    procedure OnFieldEnter(Sender: TObject);
    procedure OnFieldExit(Sender: TObject);
  end;

  {...}

const
  clFocused = TColor($00FFFF);   // color for focused field
  clBlurred = TColor($FFFFFF);   // color for blurred field


implementation


procedure TForm1.OnFieldEnter(Sender: TObject);
begin
  if (Sender is TCustomEdit) then
    TEdit(Sender).Color := clFocused;
   // you may change all properties as desired when element is entered
end;

procedure TForm1.OnFieldExit(Sender: TObject);
begin
  if (Sender is TCustomEdit) then
    TEdit(Sender).Color := clBlurred;
end;

(*
  Now you select every element you want to change color
  if entered on your form and add the OnFieldEnter/OnFieldExit
  procedure to the OnEnter/OnExit event.
*)
end.

Como seria la forma para llamarla desde los otros formularios??

Desde ya muchas Gracias!!!

Última edición por linuxtin fecha: 20-07-2011 a las 19:33:10.
Responder Con Cita
  #9  
Antiguo 21-07-2011
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
Poder: 20
ElKurgan Va camino a la fama
Cita:
Empezado por linuxtin Ver Mensaje
Pude compilar el componente, anda muy bien pero el problema es que tengo que cambiar todos los Tedits que tengo, si creo una unidad con este código
¡Claro!... Ese es precisamente el problema de los componentes nuevos. Creas el paquete, los registras,... ¡Y luego tienes que sustituir todos los edits de todos los formularios!.

Yo he usado las clases interpuestas y me han funcionado muy bien. Ventajas: En tiempo de diseño trabajas con el componente normal. Pero si pones la clase interpuesta en una unit que se añada a la clausula uses de todos tus formularios, en tiempo de ejecución se verán de la forma nueva que has diseñado.

Saludos
Responder Con Cita
  #10  
Antiguo 21-07-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por linuxtin Ver Mensaje
Pude compilar el componente, anda muy bien pero el problema es que tengo que cambiar todos los Tedits que tengo, si creo una unidad con este código...

Como seria la forma para llamarla desde los otros formularios??
Finalmente veo que te has decantado por las clases superpuestas.
La solución para utilizarlos en otros formularios es la siguiente (lo explica Ian).

¿Qué pasaría si necesitáramos los nuevos botones en otro formulario? ¿Tenemos que definir otra vez la clase de interposición? ¡Ni hablar! Podemos encapsularla dentro de una unidad. Para seguir engañando a Delphi, tenemos que incluir la nueva unidad en la cláusula uses del formulario, pero teniendo cuidado de ubicarla después de la unidad donde se encuentra la clase original.
__________________
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.
Responder Con Cita
  #11  
Antiguo 21-07-2011
linuxtin linuxtin is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 30
Poder: 0
linuxtin Va por buen camino
Gracias Neftali y ElKurgan!! El componente esta muy bueno, lo tengo instalado pero para usarlo cuando haga otra aplicación.

Hace poco termine de cursar la materia Diseño Estructurado, así que ahora estoy tratando de eliminar la redundancia de código, y lo primero que vi mal fue el tema de tener dos procedimientos por cada TEdis para cambiarle el color.

Saludos y gracias a los dos!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear Unidad Virtual lefarre Internet 4 09-01-2009 01:40:55
Unidad de Delphi para crear imágenes ISO de DVDs ISEKO Varios 3 17-10-2008 15:39:30
Crear unidad virtual temporaria ANG4L API de Windows 16 07-07-2006 20:15:29
Como cambiar el formato de un QRSysData en formato fecha Bitbanner Tablas planas 1 13-02-2005 12:33:26
Cambiar el nombre de la unidad de DD? danytorres Varios 1 05-02-2004 07:07:58


La franja horaria es GMT +2. Ahora son las 14:51:06.


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
Copyright 1996-2007 Club Delphi