Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cambiar Caption (https://www.clubdelphi.com/foros/showthread.php?t=53002)

Caral 07-02-2008 16:35:11

Cambiar Caption
 
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.

Código Delphi [-]
 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:

Código Delphi [-]
Timer1.Enabled:= True;
Timer1.Interval:= 1;

luego

coloca el siguiente codigo en un timer:

Código Delphi [-]
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í

Código Delphi [-]
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:

Código Delphi [-]
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:

Código Delphi [-]
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

Cita:

Empezado por cmm07 (Mensaje 264000)
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 ;))

Código Delphi [-]
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:

Código Delphi [-]
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

Código Delphi [-]
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

Cita:

Empezado por sinalocarlos (Mensaje 264035)
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

Cita:

Empezado por ixMike (Mensaje 264191)
¿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

Cita:

Empezado por sinalocarlos (Mensaje 264035)
me he sonrojado

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

Cita:

Empezado por ixMike (Mensaje 264191)
¿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.

Cita:

Empezado por Ñuño Martínez (Mensaje 264285)
¡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,


La franja horaria es GMT +2. Ahora son las 16:59:49.

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