Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-11-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 25
Crandel Va por buen camino
muy bien !!!

Te quedo muy bien. Aprovechando que tengo un poco de tiempo libre (mi mujer y mi hijo no estan por un dia ) te hice unos cuantos retoques, espero que no te moleste.

Agregue colores por defecto, un evento cuando se produce el cambio de foco y reescribi el metodo ScreenActiveControlChange.

Código Delphi [-]
unit BRGFocusAdmin;

interface

uses
  SysUtils, Classes, Graphics, StdCtrls, ComCtrls, Controls, Forms;

type
  TBRGFocusAdmin = class(TComponent)
  private
    { Private declarations }
    FTag: integer;
    FColorConFoco: TColor;
    FColorSinFoco: TColor;
    FPierdeFoco, FTieneFoco: TWinControl; // a partir de WinControl pueden recibir el foco
    FOnFocusChange: TNotifyEvent;
    procedure ScreenActiveControlChange(Sender: TObject);
  protected
    { Protected declarations }
  public
    { Public declarations }
    Procedure AplicarColor(Color: TColor; Componente: TWinControl);
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property Tag: integer read FTag write FTag;
    property ColorConFoco: TColor read FColorConFoco write FColorConFoco;
    property ColorSinFoco: TColor read FColorSinFoco write FColorSinFoco;
    property OnFocusChange: TNotifyEvent read FOnFocusChange write FOnFocusChange;
  end;

procedure Register;


implementation


procedure Register;
begin
  RegisterComponents('BRG', [TBRGFocusAdmin]);
end;

constructor TBRGFocusAdmin.Create(AOwner : TComponent);
begin
  inherited Create(AOwner);
  Screen.OnActiveControlChange := ScreenActiveControlChange;
  FColorConFoco := clSkyBlue;
  FColorSinFoco := clWindow;
end;

destructor TBRGFocusAdmin.Destroy;
begin
  Screen.OnActiveControlChange := nil;
  inherited;
end;

procedure TBRGFocusAdmin.ScreenActiveControlChange(Sender: TObject);
begin
  FPierdeFoco := FTieneFoco;
  FTieneFoco  := Screen.ActiveControl;

  if FPierdeFoco <> nil then
    Self.AplicarColor(FColorSinFoco, FPierdeFoco);

  if FTieneFoco <> nil then
  begin
    self.AplicarColor(FColorconFoco, FTieneFoco);
    FTag := self.Tag;
  end else
    FTag := 0;

  if Assigned(FOnFocusChange) then FOnFocusChange(Self);
end;

Procedure TBRGFocusAdmin.AplicarColor(Color :TColor; Componente: TWinControl);
begin
  try
    if (Componente is TCustomEdit)     then (Componente as TEdit).Color := Color;
    if (Componente is TDateTimePicker) then (Componente as TDateTimePicker).Color:= Color;
    if (Componente is TCustomMemo)     then (Componente as TMemo).Color:= Color;
    if (Componente is TCustomComboBox) then (Componente as TComboBox).Color:= Color;

    (Componente as TWinControl).Repaint;
  except
  end;
end;

end.
__________________
[Crandel]
Responder Con Cita
  #2  
Antiguo 28-09-2010
Avatar de pborges36
pborges36 pborges36 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Argentina
Posts: 192
Poder: 22
pborges36 Va por buen camino
Holas. Lo que hice fue poner la unit que retoco crandel en un dpk y luego instalarlo. Con esto me aparece en la paleta de componentes. De ahi solo lo solte en el formulario pricipal y listo, funciona muy bien.

Saludos.
Responder Con Cita
  #3  
Antiguo 28-09-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Gracias, no lo habia entendido.

He creado y compilado el dpk, correcto; lo suelto en el for, correcto pero al hacer F9 el resultado es este:

Project xxx.exe raised exception class EInvalidCast with message 'Invalid class Typecast' Process stoped Press Step or Run to continue.

Alguna pistilla?

Josep
Responder Con Cita
  #4  
Antiguo 29-09-2010
Avatar de pborges36
pborges36 pborges36 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Argentina
Posts: 192
Poder: 22
pborges36 Va por buen camino
Cita:
Empezado por jafera Ver Mensaje
...Project xxx.exe raised exception class EInvalidCast with message 'Invalid class Typecast' Process stoped Press Step or Run to continue...
Me suena a configuracion de Delphi.
Revisa debugger options, la opcion: stop on delphi exception (o notify on languaje exceptions, depende de la version) debe estar destiltada.

Saludos.
Responder Con Cita
  #5  
Antiguo 29-09-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Ok, solucionado el error.

El componente no me funciona del todo bien, explico:

Tengo una aplicacion MDI, coloco el componente en el form principal, lo coloco en un hijo y no cambia nada, pero dentro del hijo tengo un form normal, para busquedas, y allí si funciona.

Puede tener algo que ver el que el form stile sea un MDI Child?

Gracias por adelantado

Saludos

Josep
Responder Con Cita
  #6  
Antiguo 29-09-2010
Avatar de pborges36
pborges36 pborges36 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Argentina
Posts: 192
Poder: 22
pborges36 Va por buen camino
Cita:
Empezado por jafera Ver Mensaje
...Tengo una aplicacion MDI, coloco el componente en el form principal, lo coloco en un hijo y no cambia nada, pero dentro del hijo tengo un form normal, para busquedas, y allí si funciona.

Puede tener algo que ver el que el form stile sea un MDI Child?...
La verdad no tuve problemas con MDI. Solo una observacion, el componente lo pegue una unica vez en el form principal y funciona para toda la aplicacion.

Saludos.
Responder Con Cita
  #7  
Antiguo 30-09-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Buenas de nuevo, creo que el problema viene porque los componentes son DBEdit, si son Edit normales si funciona.

Como declaro esto, pero para un DBEdit?

Código Delphi [-]
if (Componente is TCustomEdit)     then (Componente as TEdit).Color := Color;

Saludos

Josep
Responder Con Cita
  #8  
Antiguo 25-05-2014
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 22
oscarac Va por buen camino
me esta saliendo el mismo error
alguien soluciono o probo este componente?
__________________
Dulce Regalo que Satanas manda para mi.....
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
Detectar cambio de ItemIndex en ComboBox ixMike OOP 5 19-10-2006 20:39:03
F9 - cambio de foco en pestaña roman La Taberna 15 04-10-2006 08:46:03
Cambio al hacer foco con el mouse c748a OOP 14 08-08-2005 17:31:35
Detectar el cambio de un directorio NeWNeO API de Windows 2 03-01-2005 09:36:48
Capturar El Evento Del Cambio De Foco En Un Form murci API de Windows 11 21-01-2004 09:39:13


La franja horaria es GMT +2. Ahora son las 21:47:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi