Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Que un Boton cambie de color cuando haya texto en un campo en una BD Access (https://www.clubdelphi.com/foros/showthread.php?t=84597)

feliz-58 08-11-2013 19:28:39

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?

Casimiro Notevi 08-11-2013 19:40:28

Podías hacer un esfuerzo, porque así no vas a aprender nada, copiando el código que te ponen ;)

feliz-58 08-11-2013 20:02:16

Cita:

Empezado por Casimiro Notevi (Mensaje 469440)
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;

Casimiro Notevi 08-11-2013 20:24:28

Estupendo :)
No era tan difícil, ¿verdad? ;)

feliz-58 08-11-2013 20:35:09

Cita:

Empezado por Casimiro Notevi (Mensaje 469443)
Estupendo :)
No era tan difícil, ¿verdad? ;)

Esto, no tanto, las otras cosas si XD

nlsgarcia 08-11-2013 20:58:37

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.

ecfisa 08-11-2013 21:45:39

Cita:

Empezado por feliz-58 (Mensaje 469439)
...
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 :)

feliz-58 10-11-2013 16:59:39

Cita:

Empezado por ecfisa (Mensaje 469447)
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!

ecfisa 10-11-2013 17:45:00

Cita:

Empezado por feliz-58 (Mensaje 469479)
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 :)

feliz-58 10-11-2013 19:04:11

Cita:

Empezado por ecfisa (Mensaje 469481)
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 :)

:eek: Gracias :D
entendi!

Saludos!


La franja horaria es GMT +2. Ahora son las 16:09: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