Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-12-2006
pascalutn2003 pascalutn2003 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Córdoba
Posts: 36
Poder: 0
pascalutn2003 Va por buen camino
Smile Un editor COOL. Al recibir el foco se "ilumina" y viceversa...

HOLA A TODOS:

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 ) 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

Código Delphi [-]

unit CoolEdit;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, StdCtrls, Graphics, Forms;

type
     TCoolEdit = class(TEdit)
     private

          fColor              :    TColor;
          fColorWithFocus     :    TColor;
          fColorWithOutFocus  :    TColor;

          fFont               :    TFont;
          fFontFocus          :    TFont;
          fFontNoFocus        :    TFont;

          FColorFont          :    TColor;
          fFontColorFocus     :    TColor;
          fFontColorNoFocus   :    TColor;

          Procedure SetColor(Value:TColor);
          Procedure SetFont(Value:TFont);
          Procedure SetColorFont(Value:TColor);


     protected

          Procedure WMSetFocus(var Message:TWMSetFocus);message WM_SETFOCUS;
          Procedure WMKillFocus(var Message:TWMKillFocus);Message WM_KILLFOCUS;

     public

          Constructor Create(AOwner:TComponent);override;
          Destructor Destroy;override;

     published

          Procedure RePaint;Override;

          Property FocusColor      :    TColor Read fColorWithFocus Write SetColor Default clAqua;
          Property NoFocusColor    :    TColor Read fColorWithOutFocus Write SetColor Default clSilver;

          Property FocusFont       :    TFont Read fFontFocus Write SetFont;
          Property NoFocusFont     :    TFont Read fFontNoFocus Write SetFont;

          Property FontColorFocus  :    TColor Read fFontColorFocus Write SetColorFont Default clBlue;
          Property FontColorNoFocus:    TColor Read fFontColorNoFocus Write SetColorFont Default clBlack;

     end;

procedure Register;

implementation

Var  Foco :    Boolean;

Constructor TCoolEdit.Create(AOwner:TComponent);
Begin

     Inherited Create(AOwner);

     Color:=clSilver;
     fColorWithFocus:=clAqua;
     fColorWithOutFocus:=clSilver;
     fFontColorFocus:=clBlue;
     fFontColorNoFocus:=clBlack;


End;

Procedure TCoolEdit.WMSetFocus(var Message:TWMSetFocus);
Begin
     Inherited;

     Foco:=True;

     Repaint;
End;

Procedure TCoolEdit.WMKillFocus(var Message:TWMKillFocus);
Begin
     Inherited;

     Foco:=False;

     Repaint;
End;

Procedure TCoolEdit.Repaint();
Begin
     If Foco Then Begin
          Font.Style:=[fsBold];
          Font.Color:=fFontColorFocus;
          Color:=fColorWithFocus;
     End
     Else begin
          Font.Style:=[];
          Font.Color:=fFontColorNoFocus;
          Color:=fColorWithOutFocus;
     End;
End;

Procedure TCoolEdit.SetColor(Value:TColor);
Begin
     If fColor <>Value Then Begin
          fColor:=Value;
          Repaint;
     End;
End;

Procedure TCoolEdit.SetFont(Value:TFont);
Begin
     If fFont<>Value Then Begin
          fFont:=Value;
          Repaint;
     End;
End;

Procedure TCoolEdit.SetColorFont(Value:TColor);
Begin
     If fColorFont <>Value Then Begin
          fColorFont:=Value;
          Repaint;
     End;
End;

Destructor TCoolEdit.Destroy;
Begin
     Inherited Destroy;
End;

procedure Register;
begin
  RegisterComponents('Cool', [TCoolEdit]);
end;

end.

Última edición por vtdeleon fecha: 05-12-2006 a las 05:05:43.
Responder Con Cita
  #2  
Antiguo 05-12-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues está muy bien, hombre. Muchas gracias por compartirlo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 05-12-2006
pascalutn2003 pascalutn2003 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Córdoba
Posts: 36
Poder: 0
pascalutn2003 Va por buen camino
Thumbs up 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 ...

En cualquier momento paso otro codigo de un editor con un boton adentro que cambia el glyph...

None vemo depue'
Responder Con Cita
  #4  
Antiguo 05-12-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 05-12-2006
pascalutn2003 pascalutn2003 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Córdoba
Posts: 36
Poder: 0
pascalutn2003 Va por buen camino
Exclamation Me olvidaba...

1.-Tambien se puede proceder del igual modo con un TDBEdit, ya lo hice y obviamente se llama TDBCoolEdit

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.
Responder Con Cita
  #6  
Antiguo 05-12-2006
pascalutn2003 pascalutn2003 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Córdoba
Posts: 36
Poder: 0
pascalutn2003 Va por buen camino
Smile Sobre RePaint...

¿Curioso?

Para nada; pasa que es una buena forma de retribuir a las ayudas que me dan las personas que andan por el foro.

Y sip; lo del repaint puede no ser necesario, pero pasa que por ahi pequé de necio 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.

En fin; espero puedan disfrutarlo (y mejorarlo jejejejeje; le falta mucho) yo por mi lado lo voy a seguir desarrlollando...

EDGARDO - Córdoba - Argentina
Responder Con Cita
  #7  
Antiguo 05-12-2006
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
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!
Responder Con Cita
  #8  
Antiguo 06-12-2006
pascalutn2003 pascalutn2003 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Córdoba
Posts: 36
Poder: 0
pascalutn2003 Va por buen camino
Cool 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 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.
Responder Con Cita
  #9  
Antiguo 06-12-2006
pascalutn2003 pascalutn2003 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Córdoba
Posts: 36
Poder: 0
pascalutn2003 Va por buen camino
Thumbs up Para DarKrazy...

Hola pibeeee:

Tenes razon sobre las cosillas de mas; no me di cuenta jejejeje

Ya lo corregiré
Responder Con Cita
  #10  
Antiguo 07-12-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
DevEx Editors ya incluye este comportamiento para todos sus controles (mas de 30) con muchas otras opciones...
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #11  
Antiguo 08-12-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
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

Código Delphi [-]
{Hay que sobreescribir el procedimiento WndProc procedure}
procedure WndProc(var Message : TMessage) ; override ;

procedure TForm1.WndProc(var Mesg : TMessage) ;
begin
{Aqui vemos que componente ha cambiado. 
  El bit de aqui nos dice sobre que componente se encuentra el mouse }
     if Mesg.LParam = Longint(Label1) then
        ChangeColor(Label1, Mesg.Msg) ;
     if Mesg.LParam = Longint(Label2) then
        ChangeColor(Label2, Mesg.Msg) ;
     if Mesg.LParam = Longint(Label3) then
        ChangeColor(Label3, Mesg.Msg) ;
     if Mesg.LParam = Longint(CheckBox1) then
        ChangeColor(CheckBox1, Mesg.Msg) ;

   inherited WndProc(Mesg) ;
end;


procedure TForm1.ChangeColor
   (Sender : TObject; Msg : Integer) ;
Begin
{ Si el mouse está sobre un label tenemos que hacer esto} 

  if Sender IS TLabel Then
   begin
     if (Msg = CM_MOUSELEAVE) then
      (Sender As TLabel).Font.Color:=clWindowText;
     if (Msg = CM_MOUSEENTER) then
      (Sender As TLabel).Font.Color:=clBlue;
   end;

{ Si es un checkbox...}  
  if Sender IS TCheckBox Then
   begin
    if (Msg = CM_MOUSELEAVE) then
     (Sender As TCheckBox).Font.Color:=clWindowText ;
    if (Msg = CM_MOUSEENTER) then
     (Sender As TCheckBox).Font.Color:=clRed ;
   end;
end;
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #12  
Antiguo 08-12-2006
pascalutn2003 pascalutn2003 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Córdoba
Posts: 36
Poder: 0
pascalutn2003 Va por buen camino
Question Pregunta...

Hola AzidRain

¿Donde están esos componentes?, ¿tienen el codigo para verlo?

EDGARDO - Córdoba - Argentina

P.D.: veo que me odiaste por hacer esto tan pavo para vos; perdon.

Última edición por pascalutn2003 fecha: 08-12-2006 a las 05:51:26.
Responder Con Cita
  #13  
Antiguo 08-12-2006
Avatar de rcarrillom
[rcarrillom] rcarrillom is offline
Miembro Premium
 
Registrado: dic 2004
Ubicación: UK / North Sea / Norway / Golfo de México / Frente a mi Laptop
Posts: 219
Poder: 20
rcarrillom Va por buen camino
Cita:
Empezado por pascalutn2003
¿Donde están esos componentes?, ¿tienen el codigo para verlo?
Son de paga, la página de la suite es http://www.devexpress.com
__________________
eLcHiCoTeMiDo - Rompecorazones profesional
Yo no soy presumido; ¿Pero de qué sirve mi humilde opinión contra la de los espejos?
Salva a un nylon, usa prendas de piel de foca
Responder Con Cita
  #14  
Antiguo 09-12-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Cita:
Empezado por pascalutn2003
Hola AzidRain
P.D.: veo que me odiaste por hacer esto tan pavo para vos; perdon.
Hombre pero por que odiar.... Que palabra tan fea, a mi tambien me ha pasado que según yo descubro algo superbuenisimo y al comentarlo en el foro o con amigos resulta que ya lo habia por otro lado y mejor...Ja..Bueno finalmente siempre sirve todo el esfuerzo para aprender.

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...
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #15  
Antiguo 12-12-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Arrow

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
Responder Con Cita
  #16  
Antiguo 13-12-2006
pascalutn2003 pascalutn2003 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Córdoba
Posts: 36
Poder: 0
pascalutn2003 Va por buen camino
Smile El codigo de CoolEdit corregido

Hola Deiv:

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

Código Delphi [-]

unit CoolEdit;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, StdCtrls, Graphics, Forms;

type TCoolEdit = class(TEdit)
     private

          fColorWithFocus     :    TColor;
          fColorWithOutFocus  :    TColor;

          FColorFont          :    TColor;
          fFontColorFocus     :    TColor;
          fFontColorNoFocus   :    TColor;
          Foco                :    Boolean;

          Procedure SetColor(Value:TColor);
          Procedure SetColorNoFocus(Value:TColor);
          Procedure SetFontColorFocus(Value:TColor);
          Procedure SetFontColorNoFocus(Value:TColor);


     protected

          Procedure WMSetFocus(var Message:TWMSetFocus);message WM_SETFOCUS;
          Procedure WMKillFocus(var Message:TWMKillFocus);Message WM_KILLFOCUS;

     public

          Constructor Create(AOwner:TComponent);override;
          Destructor Destroy;override;

     published

          Procedure RePaint;Override;

          Property ColorFocus      :    TColor Read fColorWithFocus Write SetColor Default clAqua;
          Property ColorNoFocus    :    TColor Read fColorWithOutFocus Write SetColorNoFocus Default clSilver;

          Property FontColorFocus  :    TColor Read fFontColorFocus Write SetFontColorFocus Default clBlue;
          Property FontColorNoFocus:    TColor Read fFontColorNoFocus Write SetFontColorNoFocus Default clBlack;

     end;


     Procedure Register;

implementation

Procedure TCoolEdit.SetFontColorFocus(Value:TColor);
Begin

     fFontColorFocus:=Value;

     Repaint;

End;

Procedure TCoolEdit.SetFontColorNoFocus(Value:TColor);
Begin

     fFontColorNoFocus:=Value;

     Repaint;

End;

Constructor TCoolEdit.Create(AOwner:TComponent);
Begin

     Inherited Create(AOwner);

     Color:=clSilver;
     fColorWithFocus:=clAqua;
     fColorWithOutFocus:=clSilver;
     fFontColorFocus:=clBlue;
     fFontColorNoFocus:=clBlack;

End;

Procedure TCoolEdit.WMSetFocus(var Message:TWMSetFocus);
Begin
     Inherited;

     Foco:=True;

     Repaint;
End;

Procedure TCoolEdit.WMKillFocus(var Message:TWMKillFocus);
Begin
     Inherited;

     Foco:=False;

     Repaint;
End;

Procedure TCoolEdit.Repaint();
Begin
     If Foco Then Begin
          Font.Style:=[fsBold];
          Font.Color:=fFontColorFocus;
          Color:=fColorWithFocus;
     End
     Else begin
          Font.Style:=[];
          Font.Color:=fFontColorNoFocus;
          Color:=fColorWithOutFocus;
     End;
End;

Procedure TCoolEdit.SetColor(Value:TColor);
Begin
     If fColorWithFocus <>Value Then Begin
          fColorWithFocus:=Value;
          Repaint;
     End;
End;

Procedure TCoolEdit.SetColorNoFocus(Value:TColor);
Begin
     If fColorWithOutFocus <>Value Then Begin
          fColorWithOutFocus:=Value;
          Repaint;
     End;
End;

Destructor TCoolEdit.Destroy;
Begin

     Inherited Destroy;

End;

procedure Register;
begin
  RegisterComponents('Cool', [TCoolEdit]);
end;

end.

Última edición por pascalutn2003 fecha: 13-12-2006 a las 03:21:28.
Responder Con Cita
  #17  
Antiguo 13-12-2006
pascalutn2003 pascalutn2003 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Córdoba
Posts: 36
Poder: 0
pascalutn2003 Va por buen camino
Question 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
Responder Con Cita
  #18  
Antiguo 13-12-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
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
Responder Con Cita
  #19  
Antiguo 13-12-2006
pascalutn2003 pascalutn2003 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Córdoba
Posts: 36
Poder: 0
pascalutn2003 Va por buen camino
Thumbs up Ya está encuadrado

Gracias hector :

Actuo como si entendiera y todo

jejeje
Responder Con Cita
  #20  
Antiguo 13-12-2006
Delar Delar is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
Delar Va por buen camino
Que hace el inherited?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Ventana MDI, "Siempre visible" y "Pantalla completa" ixMike API de Windows 7 11-04-2007 19:36:55
¿cuál es mejor: "close" o "application.terminate"? unreal4u Varios 5 05-03-2007 12:01:19
"ChequeaEsto" elegido el futuro "Killer CLubDelphi" mamcx Noticias 51 31-10-2006 21:56:32
porque no me reconoce los caracteres "*" ni "%" cuando filtro mrmago Conexión con bases de datos 10 27-01-2006 05:21:16
Múltiples "Deshacer" en un editor de textos soul6301 Varios 1 05-06-2004 22:38:37


La franja horaria es GMT +2. Ahora son las 17:23:26.


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