Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-12-2010
gonza_619 gonza_619 is offline
Miembro
 
Registrado: feb 2010
Posts: 157
Poder: 15
gonza_619 Va por buen camino
validar dbedit para horario

hola amigos, bueno lo que quiero hacer es algo que hice parecido con un datetimepicker, pero ahora con dbedit que muestra horas de una tabla donde quiero modificar el horario segun un turno, es decir al seleccionar un registro de tabla, tambien selecciono el turno ej:
1:turno mañana
2:turno tarde
al turno lo saco asi.
turno:=table.fieldbyname('turno').asinteger;
luego con ese turno validar dbedit, que si es 1 el turno , no pueda sobrepasar de tal hora eJ:
si es turno1 : va de 09:00 am - hasta- 12:00 am, que no sobrepase de este rango en el dbedit cunado quiera modificar el horario desde el mismo dbedit. no uso dtpicker porq no ingreso nuevo horario sino que necesito editarlo. gracias

Código Delphi [-]
var  HoraAct : Integer;
begin
if tur=1 then
begin
 HoraAct := HourOf(DateTimePicker1.Time);
 //si no esta entre las 17 y 20 horas o la hora ini es mayor que la hora fin, le ponemos la hora con la que empieza el rango
 if Not((HoraAct>=8) and (HoraAct<=12)) or (CompareTime(DateTimePicker1.Time,DateTimePicker2.Time)=1) Then
  begin
  DateTimePicker1.Time := EncodeTime(9,MinuteOf(DateTimePicker1.Time),0,0);
  end;
end;

esto hice con dtpicker con hora pero nose como hacerlo con dbedits para controlar grcias

Última edición por Casimiro Notevi fecha: 12-12-2010 a las 02:00:21. Razón: Poner etiquetas [delphi] [/delphi]
Responder Con Cita
  #2  
Antiguo 12-12-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Una forma puede ser:
Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);
begin
  LongTimeFormat:= 'hh:mm:ss';
  DataSet1.FieldByName('HORA').EditMask:= '!90:00:00;1;_';
  ...
end;

procedure TForm1.DataSet1HORASetText(Sender: TField; const Text: String);
var
  Hora,m1,m2,
  t1,t2: TTime;
  aux: string;
begin
  aux:= Text;
  // Rango turno mañana
  m1:= StrToTime('08:00');  
  m2:= StrToTime('12:00');
  // Rango turno tarde
  t1:= StrToTime('16:00');  
  t2:= StrToTime('20:00');
  Hora:= StrToTime(aux);
  DataSet1.Edit;
  if ((ComboBox1.Text = 'MAÑANA') and
     ((Hora < m1) or ( Hora > m2))) or
     ((ComboBox1.Text = 'TARDE') and
     ((Hora < t1) or (Hora > t2))) then
  begin
    ShowMessage('Horario no permitido en el turno elegido');
    DataSet1.Cancel;
  end
  else
    (Sender as TField).AsDateTime:= Hora;
end;

Saludos.
Responder Con Cita
  #3  
Antiguo 12-12-2010
gonza_619 gonza_619 is offline
Miembro
 
Registrado: feb 2010
Posts: 157
Poder: 15
gonza_619 Va por buen camino
hola, perdon por no entender bien, unas preguntas.

DataSet1.FieldByName('HORA').EditMask:= '!90:00:00;1;_';

esta parte seria table1.fieldbyname.... o se puede hacer directamente por dataset?

y esta parte:
aux:= Text; /// text de donde obtengo esta variable?

y tambien en
DataSet1.Edit;/// aca estaria modificando desde el dbedit? o directamente desde el table?
gracias perdon por tantas preguntas.
Responder Con Cita
  #4  
Antiguo 12-12-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Gonza.

El DBEdit es la representación visual de un campo de un DataSet, asi que es lo mismo asignar la máscara con la línea: DataSet1.FieldByName('HORA').EditMask:= '!90:00:00;1;_'; que desde el editor de máscaras del campo. Puse el código
por que se presta menos a confuciones que explicar el proceso visual.

La variable aux me quedó de una prueba, perdón.

En la línea: DataSet1.Edit; estoy poniendo el DataSet en modo edición. Te agrego el mismo ejemplo con algunos cambios
que creo te van a aclarar como se hace lo mismo pero referenciando el DataSet desde el parámetro Sender de tipo TField.

Código Delphi [-]
procedure TForm1.DataSet1HORASetText(Sender: TField; const Text: String);
var
  Hora,m1,m2,
  t1,t2: TTime;
begin
  // Rango turno mañana
  m1:= StrToTime('08:00');
  m2:= StrToTime('12:00');
  // Rango turno tarde
  t1:= StrToTime('16:00');
  t2:= StrToTime('20:00');
  Hora:= StrToTime(Text);
  (Sender as TField).DataSet.Edit;
  if ((ComboBox1.Text = 'MAÑANA') and
     ((Hora < m1) or ( Hora > m2))) or
     ((ComboBox1.Text = 'TARDE') and
     ((Hora < t1) or (Hora > t2))) then
  begin
    ShowMessage('Horario no permitido en el turno elegido');
    (Sender as TField).DataSet.Cancel;
  end
  else
    (Sender as TField).AsDateTime:= Hora;
end;


Un saludo.

Última edición por ecfisa fecha: 12-12-2010 a las 10:21:45.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
validar dbedit q muestra horario gonza_619 Varios 9 07-12-2010 19:52:46
validar un dbedit moyo18 Conexión con bases de datos 32 08-01-2009 20:19:11
Validar un Dbedit? kman Varios 10 13-03-2007 04:07:11
Validar un DBEdit con delphi interbase servicomp Conexión con bases de datos 8 06-08-2006 16:27:11
validar dbedit yeison Cristman Conexión con bases de datos 1 29-07-2006 21:55:56


La franja horaria es GMT +2. Ahora son las 12:01:32.


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
Copyright 1996-2007 Club Delphi