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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-11-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: Sep 2012
Posts: 249
Poder: 6
feliz-58 Va por buen camino
Que un Boton cambie de color cuando haya texto en un campo en una BD Access

Me explico,

hay dos botones.
una base de datos en access.
y los respectivos componentes Ado.

en la base de datos hay dos campos uno que dice: "Dia" y otro "Evento".

uso los botones para localizar dos registros en especifico, ejemplo dia 1 y dia 2.
quiero que cuando en el campo evento, del dia 1, en la base de datos, no este vacio, las letras del boton se pongan de color rojo.

entonces cada ves que el programa inicie o le den a otro boton para "actualizar" se verifique si en los respectivos eventos hay algo escrito, y si lo hay, los botones se coloquen de color rojo, ya sea el 1 o el 2.
es posible?
Responder Con Cita
  #2  
Antiguo 08-11-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.238
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Podías hacer un esfuerzo, porque así no vas a aprender nada, copiando el código que te ponen
Responder Con Cita
  #3  
Antiguo 08-11-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: Sep 2012
Posts: 249
Poder: 6
feliz-58 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Podías hacer un esfuerzo, porque así no vas a aprender nada, copiando el código que te ponen
Gracias, ya lo hice, a mi manera, pero funciona:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  R,B:string;
begin
R:='clred';
B:='clblack';
if adotable1.Locate ('Dia', '1', [])
then
begin
if
dbmemo1.Text = 'No hay evento(s)'
then
bitbtn1.Font.Color:=StringToColor(R);
if
dbmemo1.Text <> 'No hay evento(s)'
then
bitbtn1.Font.Color:=StringToColor(B);
end;
end;
Responder Con Cita
  #4  
Antiguo 08-11-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.238
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Estupendo
No era tan difícil, ¿verdad?
Responder Con Cita
  #5  
Antiguo 08-11-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: Sep 2012
Posts: 249
Poder: 6
feliz-58 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Estupendo
No era tan difícil, ¿verdad?
Esto, no tanto, las otras cosas si XD
Responder Con Cita
  #6  
Antiguo 08-11-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: Feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 15
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
feliz-58,

Cita:
Empezado por feliz-58
...Que un Botón cambie de color...
Revisa este código:
Código Delphi [-]
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
   case RadioGroup1.ItemIndex of
      0 : BitBtn1.Font.Color := clBlue;
      1 : BitBtn1.Font.Color := clRed;
      2 : BitBtn1.Font.Color := clYellow;
      3 : BitBtn1.Font.Color := clNavy;
      4 : BitBtn1.Font.Color := clGreen;
   end;
end;
El código anterior permite cambiar el color de un componente TBitBtn en tiempo de ejecución sin utilizar la función StringToColor.

Espero sea útil

Nelson.
Responder Con Cita
  #7  
Antiguo 08-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.042
Poder: 29
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 behold
Cita:
Empezado por feliz-58 Ver Mensaje
...
entonces cada ves que el programa inicie o le den a otro boton para "actualizar" se verifique si en los respectivos eventos hay algo escrito, y si lo hay, los botones se coloquen de color rojo, ya sea el 1 o el 2.
es posible?
Hola feliz-58.

Con respecto al evento para verificar el estado del campo "Evento" y poner en consecuencia el color del TBitBtn, podrías usar el evento OnDataChange del TDataSource asociado al TADOTable:
Código Delphi [-]
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
const
   ESTADO : array[Boolean] of TColor = (clBlack, clRed);
begin
  with ADOTable1 do
  begin
    if FieldByName('DIA').AsString = '1' then
      BitBtn1.Font.Color := ESTADO[Trim(FieldByName('Evento').AsString)='']
    else if FieldByName('DIA').AsString = '2' then
      BitBtn2.Font.Color := ESTADO[Trim(FieldByName('Evento').AsString)=''];
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 10-11-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: Sep 2012
Posts: 249
Poder: 6
feliz-58 Va por buen camino
Question

Cita:
Empezado por ecfisa Ver Mensaje
Hola feliz-58.

Con respecto al evento para verificar el estado del campo "Evento" y poner en consecuencia el color del TBitBtn, podrías usar el evento OnDataChange del TDataSource asociado al TADOTable:
Código Delphi [-]
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
const
   ESTADO : array[Boolean] of TColor = (clBlack, clRed);
begin
  with ADOTable1 do
  begin
    if FieldByName('DIA').AsString = '1' then
      BitBtn1.Font.Color := ESTADO[Trim(FieldByName('Evento').AsString)='']
    else if FieldByName('DIA').AsString = '2' then
      BitBtn2.Font.Color := ESTADO[Trim(FieldByName('Evento').AsString)=''];
  end;
end;

Saludos
Hola
como aplicas los colores?
Saludos!
Responder Con Cita
  #9  
Antiguo 10-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.042
Poder: 29
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 behold
Cita:
Empezado por feliz-58 Ver Mensaje
Hola
como aplicas los colores?
Saludos!
Hola feliz-58.

Las variables de tipo Boolean pueden tomar dos valores: False o True. Notarás en la declaración de la constante de arreglo "ESTADO", que su índice es de tipo Boolean y que por tanto admite dos valores de tipo TColor: clBlack y clRed.
Es decir, el valor de ESTADO[False] es igual clBlack (negro) y de ESTADO[True] es igual clRed (rojo).

Por otro lado, la comparación:
Código Delphi [-]
Trim(FieldByName('EVENTO').AsString) = ''
arrojará un resultado negativo si el campo "EVENTO" tiene algún carácter, o positivo de otro modo.

Si por ejemplo estamos en el registro cuyo campo DIA tiene valor "1" y el campo "Evento" tiene el valor "salir a pasear el perro", el resultado de la comparación anterior será False por lo que el BitBtn tomará el color negro. Si "Evento" no tuviera ningún contenido, el resultado sería True y por lo tanto le sería asignado el color rojo.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 10-11-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: Sep 2012
Posts: 249
Poder: 6
feliz-58 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola feliz-58.

Las variables de tipo Boolean pueden tomar dos valores: False o True. Notarás en la declaración de la constante de arreglo "ESTADO", que su índice es de tipo Boolean y que por tanto admite dos valores de tipo TColor: clBlack y clRed.
Es decir, el valor de ESTADO[False] es igual clBlack (negro) y de ESTADO[True] es igual clRed (rojo).

Por otro lado, la comparación:
Código Delphi [-]
Trim(FieldByName('EVENTO').AsString) = ''
arrojará un resultado negativo si el campo "EVENTO" tiene algún carácter, o positivo de otro modo.

Si por ejemplo estamos en el registro cuyo campo DIA tiene valor "1" y el campo "Evento" tiene el valor "salir a pasear el perro", el resultado de la comparación anterior será False por lo que el BitBtn tomará el color negro. Si "Evento" no tuviera ningún contenido, el resultado sería True y por lo tanto le sería asignado el color rojo.

Saludos
Gracias
entendi!

Saludos!
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
crear un tigger para que se dispare cuando cambie la fecha en firebird n03l Firebird e Interbase 6 24-07-2012 18:21:51
Un boton 3D con color con componentes de la VCL rrf Varios 0 03-02-2009 17:47:35
Saber cuando has pulsado Enter en un botón diego11 Varios 4 07-12-2007 17:08:07
Error en sql cuando cambie de version IVAND Firebird e Interbase 4 03-05-2005 01:44:34
Botón con Imagen y color. kukinn Varios 10 13-01-2005 14:32:30


La franja horaria es GMT +2. Ahora son las 18:32:15.


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