PDA

Ver la Versión Completa : Que un Boton cambie de color cuando haya texto en un campo en una BD Access


feliz-58
08-11-2013, 19:28:39
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
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:

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
Estupendo :)
No era tan difícil, ¿verdad? ;)

Esto, no tanto, las otras cosas si XD

nlsgarcia
08-11-2013, 20:58:37
feliz-58,


...Que un Botón cambie de color...


Revisa este código:

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
...
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:

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

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
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:
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
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:
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!