Verificar quando selecionar data diferente de terça ou quart

Delphi

15/09/2008

Como pegar uma data de um componente TDateTimePicker e quando eu clicar numa data diferente de terça e quinta, ele me informe com um [b:f45fe4d6d4]MessageDlg(´Você selecionou uma data diferente de terça e quinta´, mtinformation, [mbok], 0)[/b:f45fe4d6d4]


Rlcdo

Rlcdo

Curtidas 0

Respostas

Help

Help

15/09/2008

Utilize a função ´DayOfWeek´ da unit ´SysUtils´ no evento ´OnChange´ do componente.

Se o resultado for igual a 3 (terça) ou 5 (quinta), exiba a mensagem.

Acho que isso resolve sua questão.


GOSTEI 0
Rlcdo

Rlcdo

15/09/2008

Beleza... funcionou direitinho, porém tem como além de mandar a mensagem, eu colocar algum controle que impeça a pessoa de selecionar uma data diferente de terça ou quinta após a exibição da mensagem?
Porque da maneira que eu to fazendo, eu seleciono uma data, por exemplo: quarta, a mensagem é exibida, mas após eu clicar em ´ok´ fica selecionado na quarta
O código é esse:
procedure TFRM_Movimento.Dta_SessaoChange(Sender: TObject);
begin
  inherited;
   if (dayofweek(Dta_Sessao.date)<>3) and (dayofweek(Dta_sessao.Date)<>5) then
   MessageDlg(´Você selecionou uma data diferente de terça e quinta´, mtinformation, [mbok], 0);

end;


Obs: o Dta_Sessão é um componente TDateTimePicker[/code]


GOSTEI 0
Marco Salles

Marco Salles

15/09/2008

pode ser que tenha uma propriedade , um evento mais direto.
Porém vc obtem o que deseja processando mensagem

mais ou menos assim:

//declarando Variáveis e métodos
private
     Fdata:TDate;
     procedure OnChage(var message:TMessage);message Wm_User;


//inicializando Variáveis
procedure TForm1.FormCreate(Sender: TObject);
begin
Fdata:=Dta_Sessao.Date;
end;


//Processando o Valor da Data Atribuida
procedure TForm1.Dta_SessaoChange(Sender: TObject);
begin
case dayofweek(Dta_Sessao.date) of
1,2,4,6,7:
 begin
   Dta_Sessao.onChange:=nil;
   Showmessage(´Você selecionou uma data diferente de terça e quinta´);
   postMessage(handle,wm_user,0,0);
 end
else
 Fdata:=Dta_Sessao.date;
end;
end;


//Corrigindo a Data caso necessário
procedure TForm1.OnChage(var message: TMessage);
begin
Dta_Sessao.Date:=Fdata;
Dta_Sessao.onChange:=Dta_SessaoChange;
end;


Boa sorte. Espero ter sido Útil


GOSTEI 0
POSTAR