Feriado móvel e Datas Comemorativas
Bom dia pessoal. Estou precisando da ajuda de vocês. É o seguinte: estou necessitando fazer o cadastro de feriados (internacionais, nacionais, estaduais e municipais) e também as datas comemorativas (como dia das mães, dos pais, etc.). Em relação aos feriados tá tudo OK, mas tô me batendo à bessa em relação às datas comemorativas, em especial aqueles como o Dia das Mães, que é no segundo domingo de maio. Num formulário eu tenho, além dos demais componentes, um ComboBox que lista a ordem (1º, 2º, 3º, 4º e 5º) e em outro ComboBox tenho os dias da semana (domingo, segunda, ...). O que eu preciso é selecionar o dia da semana e depois a ordem. Por exemplo: para o dia das mães, seleciono DOMINGO e depois 2º (segundo domingo do mês de maio). Feito isso, o sistema deverá apresentar a data correta conforme os parâmetros passado (ordem, dia da semana e mês). Neste caso a data correta será 11/05/2008.
Grande abraço.
Jair
Grande abraço.
Jair
Riaj818
Curtidas 0
Respostas
Riaj818
13/02/2008
Sobe
GOSTEI 0
Marco Salles
13/02/2008
olha eu fiz aqui rapidinho , ´rapidinho não´ gastei uns 40 minutos . mas tudo bem . Deve funcionar , se é que eu entendi a sua dúvida . Mas por favor , na hora de implementar não ´judia´ de mim não , implemente segundo as especificaçoes Ok !!!!
Escreva os Métodos :
para o OnClick Do Button
para a Function RetornarData passando os parâmetros Ordem , DiaSemana , mes e Ano , que é exatamente aquilo que tu queres:
compile , execute e rode...
espero ter sido util afinal 1 Hora são 1 Hora... hehehehe
1)um combobox chamado de cbordem com a Propriedade items
prenchido nesta ordem :
1
2
3
4
5
1)um combobox chamado de cbDiaSemana com a Propriedade items
prenchido nesta ordem :
Sabado
Domingo
Segunda
Terça
Quarta
Quinta
Sexta
1)um combobox chamado de cbmes com a Propriedade items
prenchido nesta ordem :
1
2
3
4
5
6
7
8
9
10
11
12
Um Edit com a Propriedade [b:f5e6670c3f]Name edtText [/b:f5e6670c3f]e Finalmente Um Botonn
Escreva os Métodos :
para o OnClick Do Button
procedure TForm1.Button1Click(Sender: TObject); var ordem,diaSemana,mes,ano:Word; begin try ordem:=strtoint(cbOrdem.Items.Strings[cbOrdem.itemIndex]); diasemana:=cbDiaSemana.itemIndex; mes:=strtoint(cbmes.Items.Strings[cbmes.itemIndex]); ano:=strtoint(edtAno.Text); Showmessage(DatetoStr(RetornarData(Ordem,DiaSemana,mes,ano))); except on e:econverterror do raise exception.Create(´Erro Na Passagem Dos Parâmetros´); end; end;
para a Function RetornarData passando os parâmetros Ordem , DiaSemana , mes e Ano , que é exatamente aquilo que tu queres:
function TForm1.RetornarData(ordem,diaSemana, mes,ano:word): Tdate; var DataInicio,DataFim:Tdate; DiaTeste:integer; DiaFim:Word; mensagem:String; begin try dataInicio:=encodedate(ano,mes,1); DiaTeste:=diaSemana - ((trunc(DataInicio) mod 7)); if diaTeste < 0 Then diaTeste:=DiaTeste+7; diaFim:=(diaTeste+1)+7*(ordem-1); result:=encodedate(ano,mes,diaFim); except on e:econverterror do begin case diaSemana of 0:mensagem:=´Sabado´; 1:mensagem:=´Domingo´; 2:mensagem:=´Segunda´; 3:mensagem:=´Terça´; 4:mensagem:=´Quarta´; 5:mensagem:=´Quinta´; 6:mensagem:=´Sexta´; end; raise exception.Create(´Erro : Possivelmente esta Mes Não permite´+#13+ inttostr(ordem)+´ ´+´Semanas , para o Dia da Semana :´+mensagem); end; end; end;
compile , execute e rode...
espero ter sido util afinal 1 Hora são 1 Hora... hehehehe
GOSTEI 0
Riaj818
13/02/2008
Marco,
Funcionou exatamente como eu preciso. Nunca que eu iria conseguir implementar essa funcionalidade. Em relação a não mudar nada, pode ficar tranqüilo, só irei mudar para componentes Dataware, que é o que eu preciso. Vou colocar você nos créditos do sistema que estou desenvolvendo, pois sem a sua ajuda (digo rotina inteira) eu não iria mesmo conseguir fazer.
Fiquei vários dias pesquisando aqui no fórum, na ajuda do Delphi, dicas, tutoriais, revistas e sei lá mais onde para achar como fazer e nada. Parecia que não tinha jeito.
Valeu cara, grande abraço.
Jair
Funcionou exatamente como eu preciso. Nunca que eu iria conseguir implementar essa funcionalidade. Em relação a não mudar nada, pode ficar tranqüilo, só irei mudar para componentes Dataware, que é o que eu preciso. Vou colocar você nos créditos do sistema que estou desenvolvendo, pois sem a sua ajuda (digo rotina inteira) eu não iria mesmo conseguir fazer.
Fiquei vários dias pesquisando aqui no fórum, na ajuda do Delphi, dicas, tutoriais, revistas e sei lá mais onde para achar como fazer e nada. Parecia que não tinha jeito.
Valeu cara, grande abraço.
Jair
GOSTEI 0
Marco Salles
13/02/2008
fico muito feliz :P e me sinto lisonjiado :P pelos ´créditos´ . Não mereço tanto :lol:
Obrigado...
Obrigado...
GOSTEI 0