Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Formatar Campo na Table


Eder

Pergunta

Ola...

estou com dificuldades para formatar uma campo A(alphanumerico) que trabalha com horas....ele formata certinho até as 99:00:00

se ultrapassar a 99 ou seja 101:00:00 ele não formata direito

esta formatação estou fazendo dentro da Table no campo Total_horas no EditMask. a mascara esta assim:

!90:00:00;1;_

ela funciona certinho se a hora vai até 99.

vamor supor que a hora de 101:00:00 ele me mostra 01:00:00 a centena não aparece..

Como eu poderia fazer a mascara do editmask para ficar certinho?

Grato

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
esta formatação estou fazendo dentro da Table no campo Total_horas no EditMask. a mascara esta assim:

!90:00:00;1;_

ela funciona certinho se a hora vai até 99.

vamor supor que a hora de 101:00:00 ele me mostra 01:00:00 a centena não aparece..

Como eu poderia fazer a mascara do editmask para ficar certinho?

basta usar desta maneira:

!000:00:00;1;_

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

não deu certo...

tipo se for 24 horas...

sai assim:

240: 00:00

deveria ser assim:

024:00:00

Oi Eder.. voce deve pensar um pouco ... a mascara é para mostrar da maneira que voce precisa

basta usar desta maneira:

!000:00:00;1;_

entretanto voce tem que fazer algumas conversões para que isto ocorra, não é simplesmente fazendo < strtotime >

voce esta trabalhando com horas, minutos e segundos.. então o mais logico para atingir o resultado esperado para a mascara é converter as horas em segundos depois soma-las e novamente converter segundos para horas e transportar para o maskedit

exemplo:

// Horas em segundos
function Hora_Seg( Horas:string ):LongInt;
Var Hor,Min,Seg:LongInt;
begin
  Horas[Pos(':',Horas)]:= '[';
  Horas[Pos(':',Horas)]:= ']';
  Hor := StrToInt(Copy(Horas,1,Pos('[',Horas)-1));
  Min := StrToInt(Copy(Horas,Pos('[',Horas)+1,(Pos(']',Horas)-Pos('[',Horas)-1)));
  if Pos(':',Horas) > 0 then
     Seg := StrToInt(Copy(Horas,Pos(']',Horas)+1,(Pos(':',Horas)-Pos(']',Horas)-1)))
  else
     Seg := StrToInt(Copy(Horas,Pos(']',Horas)+1,2));
  Result := Seg + (Hor*3600) + (Min*60);
end;

// Segundos em horas
function Seg_Hora( Seg:LongInt ):string;
Var Hora,Min:LongInt;
   Tmp : Double;
begin
  Tmp := Seg / 3600;
  Hora := Round(Int(Tmp));
  Seg :=  Round(Seg - (Hora*3600));
  Tmp := Seg / 60;
  Min := Round(Int(Tmp));
  Seg :=  Round(Seg - (Min*60));
  Result := FormatFloat( '00', Hora )+ ':' + FormatFloat( '00', Min ) + ':' + FormatFloat( '00', Seg );
end;

procedure TForm1.Button1Click(Sender: TObject);
var time1, time2, time3 : TTimeStamp;
begin
  MaskEdit1.text := Seg_Hora(strtoint(Edit1.text));
end;

neste exemplo: se voce digitar no edit1 o valor de 570000 ( segundos ), ou seja, a soma de todas as horas convertidas em segundos, voce vai ter como resposta no maskedit o valor de 150:20:00

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...