Cambiar el color a un cuadro de texto

Tengo un informe y en un cuadro de texto coloco un numero que proviene de una consulta y lo que deseo es que si es menor a cero que el número me lo coloque en rojo, si es mayor a cero en negritas y si es igual a cero que me coloque una diagonal.
Todo está diseñado en Access 97 y de código no se nada.
Respuesta
1
Perdona que me vaya sin despedirme.
Saludos.
VicMat.
[email protected]
En el Form_Load() o en un botón o en cualquier lugar pon esto:
if texto <1 then
texto.forecolor = 255 'rojo
doevents 'esto actualiza
else
texto.forecolor = 0'negro
doevents 'esto actualiza
end if

8 respuestas más de otros expertos

Respuesta
1
En el informe en el origen del control pones esto:
=SiInm([numero]=0;"/";[numero])
Esto lo que hace es que si el numero es cero nos aparezca la barra y si no nos aparezca el numero en cuestión
A continuación en el diseño del informe picas sobre detalle en la parte gris que pone detalle. Ahí veras las propiedades y concretamente hay una que pone al dar formato. Pues le das a los puntos suspensivos y pones el siguiente código:
Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
Select Case numero.Value
Case Is < 0
Me!Texto3.ForeColor = 255
Case Is > 0
Me!Texto3.FontBold = True
Me!Texto3.ForeColor = 0
End Select
End Sub
El primer case te pone el color a rojo y el segundo te pone el color a negro y en negrita.
Espero te sirva de ayuda, si tienes algún problema me escribes o me envías la base y te lo arreglo yo.
Un saludete
Respuesta
1
Debes colocar en el evento afterUdate del campo el siguiente Código:
if Numero < 0 then
NombreCampo.ForeColor = 255 'Rojo
elseif Numero => 0 then
NombreCampo.BackColor = -2147483640 'Negro
NombreCampo.FontBold = True 'Negrita
end if
Respuesta
1
Selecciona el detalle del informe y en propiedades elije eventos, en el evento al dar formato pincha en los puntos suspensivos. Entonces tienes que escribir (supongo que el cuadro de texto que quieres cambiar de color se llama numero)
Para tachar un texto pinta una linea encima del cuadro de texto y pon su propiedad visible =false (supongamos que la linea se llama linea)
if numero<0 then
numero.fontbold=false
numero.forecolor=vbred
linea.visible=false
end if
if numero=0
numero.fontbold=false
numero.forecolor=vbblack
linea.visible=true
end if
if numero>0 then
numero.fontbold=true
numero.forecolor=vbblack
linea.visible=false
end if
---------------------
Fontbold te pone el número en negrita si está a true, si estaba en negrita lo ponemos a false y quita la negrita.
Forecolor indica el color de la letra.
Yo cuando una cifra es cero no suelo mostrar el valor,(en lugar de tacharlo), para ello pongo su propiedad forecolor igual a la propiedad backcolor (el color de la tinta del mismo color que el fondo) es decir, no se ve.
numero.forecolor=numero.backcolor.
Respuesta
1
Revisa este ejemplo, tienes que agregarlo como código al evento "AL DAR FORMATO" del DETALLE del informe..
El ejemplo siguiente utiliza la función RGB para establecer las propiedades ColorDeLosBordes (BorderColor), ColorDelFondo (BackColor) y ColorDelTexto (ForeColor) dependiendo del valor del cuadro de texto txtPastDue. También se puede utilizar la función QBColor para establecer estas propiedades. Al escribir el código siguiente en el evento Form_Current( ) se establecen las características de la pantalla del control en cuanto el usuario abre un formulario o se mueve a un nuevo registro.
Sub Form_Current()
Dim curAmntDue As Currency, lngNegro As Long
Dim lngRojo As Long, lngAmarillo As Long, lngBlanco As Long
If Not IsNull(Me!txtPastDue.Value) Then
curAmntDue = Me!txtPastDue.Value
Else
Exit Sub
End If
lngRojo = RGB(255, 0, 0)
lngNegro = RGB(0, 0, 0)
lngAmarillo = RGB(255, 255, 0)
lngBlanco = RGB(255, 255, 255)
If curAmntDue > 100 Then
Me!txtPastDue.BorderColor = lngRojo
Me!txtPastDue.ForeColor = lngRojo
Me!txtPastDue.BackColor = lngAmarillo
Else
Me!txtPastDue.BorderColor = lngNegro
Me!txtPastDue.ForeColor = lngNegro
Me!txtPastDue.BackColor = lngBlanco
End If
End Sub
Respuesta
1
Creo que esto sólo se puede hacer usando código, que sería el siguiente:
if campo<0 then textbox.backcolor=vbred
else
Textbox. Fontbold
Endif
Respuesta
1
Deja te lo Investigo, porque dentro del reporte tienes que darle al campo una instrucción que no me la se.
Respuesta
1
Debes hacer algo como esto:
if nombre_campo<1 then rgb(255) else rgb(1). esto va en las propiedad del campo. Mira en la ayuda por rgb o color.
Espero haberte podido colaborar. Henrry
Respuesta
1
Para el mayor o menor que cero puedes usar las opciones de formato. Revísalas en la ayuda.
En cuanto a lo de la diagonal, no entiendo muy bién a qué te refieres... podrías poner una línea y hacerla visible o invisible en función del valor del control, pero deberás acudir al código para hacerlo... en particular en el evento "Aldarformato" de la sección "detalle" del informe... allá meterías;
if [controlvalor]=0 then
[milinea].visible = true
else
[milinea].visible = false
end if
Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas