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 16-02-2013
rotsen26 rotsen26 is offline
Miembro
NULL
 
Registrado: ene 2013
Posts: 41
Poder: 0
rotsen26 Va por buen camino
Cambiar color de panel al seleccionarlo

Buen día a todos...

Una pregunta a todos, como puedo cambiarle el color a un TPanel al darle clic???

Lo que pasa es que tengo varios paneles en una form, y quiero que se cambie de color el panel que le doy clic y se quede así hasta darle clic a otro panel. como puedo cambiar el color de ello???

Se le agradece su ayuda de antemano!!!
Responder Con Cita
  #2  
Antiguo 16-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mira los enlaces del final de la página, abajo del todo, espero que te sirva.
Responder Con Cita
  #3  
Antiguo 16-02-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por rotsen26 Ver Mensaje
...
Lo que pasa es que tengo varios paneles en una form, y quiero que se cambie de color el panel que le doy clic y se quede así hasta darle clic a otro panel.
...
Hola rotsen26.

Un modo de hacer lo que solicitas es:
Código Delphi [-]
...
implementation 

var
  PrevWinCtrl: TWinControl;

...

procedure TForm1.PanelsClick(Sender: TObject);
begin
  if Assigned(PrevWinCtrl) then
    TPanel(PrevWinCtrl).Color := clBtnFace; // color inicial
  TPanel(Sender).Color := clRed;            // color seleccion
  PrevWinCtrl:= TPanel(Sender);
end
...

Saludos.

Edito: Desde el Object Inspector deberás agregar el procedimiento PanelsClick a los eventos OnClick de los Panels del form.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 16-02-2013 a las 20:52:21. Razón: aclaración
Responder Con Cita
  #4  
Antiguo 18-02-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Se me ocurrió otra forma de realizar lo mismo y que evita las múltiples asignaciones al evento OnClick de los TPanel:
Código Delphi [-]
...
implementation

var
  PrevWinCtrl: TWinControl;

procedure TForm1.MouseEvent(var Msg: TMsg; var Handled: Boolean);
var
  Ctrl : TWinControl;
begin
  if Msg.message =  WM_LBUTTONDOWN then
  begin
    Ctrl := FindVCLWindow(Mouse.CursorPos);
    if Assigned(Ctrl) and (Ctrl is TPanel) then
    begin
      if Assigned(PrevWinCtrl) then
        TPanel(PrevWinCtrl).Color := clBtnFace; 
      TPanel(Ctrl).Color := clRed;
      PrevWinCtrl := TWinControl(Ctrl);
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Application.OnMessage := MouseEvent;
end;
...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 18-02-2013 a las 20:11:59. Razón: ortografía
Responder Con Cita
  #5  
Antiguo 19-02-2013
rotsen26 rotsen26 is offline
Miembro
NULL
 
Registrado: ene 2013
Posts: 41
Poder: 0
rotsen26 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola de nuevo.

Se me ocurrió otra forma de realizar lo mismo y que evita las múltiples asignaciones al evento OnClick de los TPanel:
Código Delphi [-]
...
implementation

var
  PrevWinCtrl: TWinControl;

procedure TForm1.MouseEvent(var Msg: TMsg; var Handled: Boolean);
var
  Ctrl : TWinControl;
begin
  if Msg.message =  WM_LBUTTONDOWN then
  begin
    Ctrl := FindVCLWindow(Mouse.CursorPos);
    if Assigned(Ctrl) and (Ctrl is TPanel) then
    begin
      if Assigned(PrevWinCtrl) then
        TPanel(PrevWinCtrl).Color := clBtnFace; 
      TPanel(Ctrl).Color := clRed;
      PrevWinCtrl := TWinControl(Ctrl);
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Application.OnMessage := MouseEvent;
end;
...

Saludos.


Una pregunta, el siguiente código a que se refiere???
Código Delphi [-]
if Msg.message =  WM_LBUTTONDOWN then

Porque me marca error en el!!!
Responder Con Cita
  #6  
Antiguo 19-02-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por rotsen26 Ver Mensaje
Una pregunta, el siguiente código a que se refiere???
Código Delphi [-]
if Msg.message =  WM_LBUTTONDOWN then

Porque me marca error en el!!!
Hola.

El mensaje WM_LBUTTONDOWN es disparado cuando se presiona el botón izquierdo del mouse.

Desconozco el motivo del error ya que no comentas cuál es. Pero si copiaste y pegaste el código anterior no tendría por que darlo.

Para que puedas revisar el código con tranquilidad te adjunto los fuentes del ejemplo (probado).

Saludos.
Archivos Adjuntos
Tipo de Archivo: zip rotsen26.zip (3,7 KB, 8 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 19-02-2013 a las 14:37:06.
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
Cambiar Color a Panel rotsen26 OOP 16 14-02-2013 20:18:57
Cambiar el color de un panel de TStatusBar fide_uci Gráficos 4 03-02-2009 15:43:08
Duda. Cambiar Color del Panel con Xpmanifest ekstase Gráficos 2 07-04-2008 05:22:38
Cambiar color en panel de DBCtrlGrid segun valor de un atributo akinom38 Varios 4 23-01-2006 14:25:30
Panel color blanco xxxFALKORxxx Varios 2 27-05-2005 18:26:37


La franja horaria es GMT +2. Ahora son las 07:57:28.


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