PDA

Ver la Versión Completa : Cambiar Caption


Caral
07-02-2008, 16:35:11
Hola a todos
Tengo una pregunta, seguramente muy tonta pero no le llego, a ver si me podéis ayudar.
Tengo Este código que esta en el evento OnCreate del form.

LReloj2.Text := FormatDateTime('hh:nn',Time);
DateTimePicker1.DateTime:= Now;
If LReloj2.Text > '12:00' then
begin
Button1.Caption:= 'Registrar la Entrada de la Tarde';
end
else
Button1.Caption:= 'Registrar la Entrada de la Mañana';


Como veis LReloj2 tiene un formato Hora, minutos, este esta ligado a un timer para que haga el cambio.
Lo que pretendo es que el caption del Button1 cambie dependiendo de la hora que se presente en LReloj2 que es un Edit.
Gracias por vuestros consejos.
Saludos

cmm07
07-02-2008, 16:44:08
coloca esto en el form OnCreate:


Timer1.Enabled:= True;
Timer1.Interval:= 1;


luego

coloca el siguiente codigo en un timer:


procedure TForm1.Timer1Timer(Sender: TObject);
begin
LReloj2.Text := FormatDateTime('hh:mm',Time);
If LReloj2.Text >= '12:00' then
begin
Button1.Caption:= 'Registrar la Entrada de la Tarde';
end
else
Button1.Caption:= 'Registrar la Entrada de la Mañana';
end;

Ñuño Martínez
07-02-2008, 16:46:32
El problema es que "LReloj2.Text > '12:00'" te compara dos textos y, por ejemplo, "2:00" es mayor que "12:00", ya que "2" es mayor que "1". Deberías obtener la hora en formato numérico y de esa forma la comparación sería más adecuada.

Creo recordar que "Now" devolvía el número de segundos, aunque ahora mismo no recuerdo cómo "quitarle los días", no sé si me explico.

[edito] Te adelaste, cmm07...

cmm07
07-02-2008, 16:49:42
no te entendí mucho pero si lo que quieres decir es pasarlo a numerico quedaría así


procedure TForm1.Timer1Timer(Sender: TObject);
function stripped(stripchar : char; str : string) : string;
var
tmpstr : string;
begin
tmpstr := str;
while pos(stripchar, tmpstr) > 0 do
delete(tmpstr, pos(stripchar, tmpstr), 1);
stripped := tmpstr;
end;

var
Hora: Integer;
begin
LReloj2.Text := FormatDateTime('hh:mm',Time);
Hora:= StrToInt(Stripped(':', LReloj2.Text));
If Hora >= 1200 then
begin
Button1.Caption:= 'Registrar la Entrada de la Tarde';
end
else
Button1.Caption:= 'Registrar la Entrada de la Mañana';
end;



mas corto el codigo:


var
Hora: Integer;
begin
LReloj2.Text:= FormatDateTime('hh:mm',Time);
Hora:= StrToInt(Copy(LReloj2.Text, 0, 2)+Copy(LReloj2.Text, 4, 5));
If Hora >= 1200 then
begin
Button1.Caption:= 'Registrar la Entrada de la Tarde';
end
else
Button1.Caption:= 'Registrar la Entrada de la Mañana';


si es así entonces no necesitaria ese LReloj2.

*recuerda colocar eso en un timer y esto en un form en oncreate:


Timer1.Enabled:= True;
Timer1.Interval:= 1;

Caral
07-02-2008, 16:54:29
Hola
Muchas gracias, me estoy volviendo viejo, lo tenia en el timer y lo cambie a create sin darme cuenta de que no funcionaria, bueno, por eso soy novato.:D
Ya esta solucionado, os lo agradezco mucho.:)
Saludos

egostar
07-02-2008, 16:55:45
entonces si hay que pasarlo a numerico quedaría así

(creando codigo...)

:D:D:D

Salud OS

egostar
07-02-2008, 17:01:07
Otra solución sin pasarlo a numérico (una idea muy interesante de cmm07 ;))


procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Time > StrtoTime('12:00') then
Button1.Caption:= 'Registrar la Entrada de la Tarde'
else Button1.Caption:= 'Registrar la Entrada de la Mañana';
end;

procedure TForm1.FormShow(Sender: TObject);
begin
if Time > StrtoTime('12:00') then
Button1.Caption:= 'Registrar la Entrada de la Tarde'
else Button1.Caption:= 'Registrar la Entrada de la Mañana';
end;


Salud OS

cmm07
07-02-2008, 17:12:05
jajaja para pasarlo a numerico no habia que hacer tanto atao aqui les dejo algo mas clarito:


if StrToInt(Copy(TimeToStr(Time), 0, 2)+Copy(TimeToStr(Time), 4, 2)) > 1200 then
Button1.Caption:= 'Registrar la Entrada de la Tarde'
else
Button1.Caption:= 'Registrar la Entrada de la Mañana';


SALU2

Gracias a [egostar] pude darme cuenta gracias.

sinalocarlos
07-02-2008, 17:54:53
uses DateUtils

...

if IsPM (now) then
Button1.Caption:= 'Registrar la Entrada de la Tarde'
else
Button1.Caption:= 'Registrar la Entrada de la Mañana';


mejor?

Delphius
07-02-2008, 18:14:06
La respuesta de sinalocarlos, me ha llamado la atención, no sólo por su simpleza sino también por el hecho de que desconocía dicha función.

Simplemente elegante y correcta.

Saludos,

sinalocarlos
07-02-2008, 18:27:12
me he sonrojado

alguien me ha dicho que escribí al menos 4 lineas de forma limpia, se agradece

Si algo he aprendido en el Club (a punta de mandarme a la guía de estilo) es que no hay que reinventar la rueda, darse una vuelta por la ayuda de Delphi ayuda bastante de ves en cuando


Saludos desde Tijuana, México

ixMike
07-02-2008, 23:54:10
me he sonrojado

alguien me ha dicho que escribí al menos 4 lineas de forma limpia, se agradece

Si algo he aprendido en el Club (a punta de mandarme a la guía de estilo) es que no hay que reinventar la rueda, darse una vuelta por la ayuda de Delphi ayuda bastante de ves en cuando


Saludos desde Tijuana, México

¿Te sonrojaste? Nos pasa a todos cuando nos dicen esas cosas por aquí :o.

¿Guía de estilo? Y Ezo Que E? :D:D

¿Reinventar la rueda? ¡A mí me encanta! Sobre todo cuando me pongo necio y digo «no pienso usar esa unit :mad:»... hasta me hice mi propio IntToStr :D


Y, dentro del tema del hilo... ¡estos novatos y sus dudas...! ;)


Salu2.

Ñuño Martínez
08-02-2008, 09:18:01
¿Guía de estilo? Y Ezo Que E? :D:D

¿Reinventar la rueda? ¡A mí me encanta! Sobre todo cuando me pongo necio y digo «no pienso usar esa unit :mad:»... hasta me hice mi propio IntToStr :D ¡Eres mi alma gemela! Si tienes chabola me caso contigo, que aquí se puede :p;):D

[p.s.] Algo me dice que hoy voy a tener el día tontorrón... :rolleyes:

Delphius
08-02-2008, 14:22:13
me he sonrojado

alguien me ha dicho que escribí al menos 4 lineas de forma limpia, se agradece


¿Te sonrojaste? Nos pasa a todos cuando nos dicen esas cosas por aquí .

¿Guía de estilo? Y Ezo Que E?

¿Reinventar la rueda? ¡A mí me encanta! Sobre todo cuando me pongo necio y digo «no pienso usar esa unit »... hasta me hice mi propio IntToStr


Y, dentro del tema del hilo... ¡estos novatos y sus dudas...!


Salu2.

¡Eres mi alma gemela! Si tienes chabola me caso contigo, que aquí se puede

[p.s.] Algo me dice que hoy voy a tener el día tontorrón...

:eek: ¿Que pasó aqui? Muchachos creo que se pasaron de copas:D... Un poco de gaseosa y cada uno a su cama.:D

Saludos,