Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MARCOS MARTINS

Sera q alguem pode responder essa?

Recommended Posts

Depois de pesquisar tanto na net , já que não consegui mudar a cor de um determinado dia no componente Calendar eu mudei pro componente MonthCalendar, então depois d tanta pesquisa consegui adaptar um comando assim:procedure T_FrmAgendamento.calendarioGetMonthInfo(Sender: TObject; Month: Cardinal; var MonthBoldInfo: Cardinal);var dias :array of cardinal; DATA,DATENOW :TDATETIME;begin dm.qryAgendamento.CLOSE; dm.qryAgendamento.SQL.CLEAR; dm.qryAgendamento.SQL.TEXT:=' SELECT * FROM agendamento ' + ' ORDER BY DATA,hora,nome'; dm.qryAgendamento.OPEN; dm.qryAgendamento.FIRST; WHILE NOT dm.qryAgendamento.EOF DO BEGIN DATA:=dm.qryAgendamento.FIELDBYNAME('DATA').AsDateTime; SetLength(dias,dm.qryAgendamento.RECORDCOUNT); DATENOW:= STRTOINT(FORMATDATETIME('MM',DATA)); if month = DATENOW THEN BEGIN MonthBoldInfo:=0; dias[dm.qryAgendamento.RECNO-1]:= STRTOINT(FORMATDATETIME('DD',DATA)); Calendario.BoldDays(dias,MonthBoldInfo); END; dm.qryAgendamento.Next; end;end;Só que ainda tenho um problema, ELE SÓ ATUALIZA QUANDO FECHA O FORM, ENTÃO A QUESTÃO É, COMO FAÇO P/ ATUALIZAR, MOSTRAR O CAMPO DA DATA EM NEGRITO SEM FECHAR A JANELA, OUTRA MUITO + IMPORTANTE,SE EU USO WHERE ELE NÃO FUNCIONA. PORQUE? ALGUEM SABE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ENTÃO MARCIO SE EU TROCO A LINHA EM AZUL Q FUNCIONA + NÃO É LEGAL PORQ MISTURA TD, PELA LINHA EM VERMELHO ELE NÃO PINTA O MONTHCALENDAR, TEM ALGO DE ERRADO?

COMO EU CHAMO ESSE COMANDO NO EVENTO ONSHOW COMO você DISSE?

 

 

 

 

 

procedure T_FrmAgendamento.calendarioGetMonthInfo(Sender: TObject;

Month: Cardinal; var MonthBoldInfo: Cardinal);

var dias :array of cardinal;

DATA,DATENOW :TDATETIME;

begin

DM.qryAgendamento.Close;

DM.qryAgendamento.SQL.Clear;

DM.qryAgendamento.SQL.Add('select * from agendamento');

DM.qryAgendamento.SQL.Add('where Data = :Mes');

DM.qryAgendamento.SQL.Add('ORDER BY HORA');

DM.qryAgendamento.ParamByName('Mes').AsDate := datetimepicker1.Date;

DM.qryAgendamento.Open;

 

dm.qryAgendamento.CLOSE;

dm.qryAgendamento.SQL.CLEAR;

dm.qryAgendamento.SQL.TEXT:=' SELECT * FROM agendamento '

+ ' ORDER BY DATA,hora,nome';

dm.qryAgendamento.OPEN;}

dm.qryAgendamento.FIRST;

 

 

WHILE NOT dm.qryAgendamento.EOF DO

BEGIN

DATA:=dm.qryAgendamento.FIELDBYNAME('DATA').AsDateTime;

SetLength(dias,dm.qryAgendamento.RECORDCOUNT);

 

DATENOW:= STRTOINT(FORMATDATETIME('MM',DATA));

 

if month = DATENOW THEN

BEGIN

MonthBoldInfo:=0;

dias[dm.qryAgendamento.RECNO-1]:= STRTOINT(FORMATDATETIME('DD',DATA));

Calendario.BoldDays(dias,MonthBoldInfo);

END;

 

dm.qryAgendamento.Next;

end;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente fazer o SQL assim:

 

DM.qryAgendamento.Close;DM.qryAgendamento.SQL.Clear;DM.qryAgendamento.SQL.Add('select * from agendamento');DM.qryAgendamento.SQL.Add('where Data = :Mes');DM.qryAgendamento.SQL.Add('ORDER BY HORA');DM.qryAgendamento.ParamByName('Mes').Value:=StrToDate(DateToStr(datetimepicker1.Date));DM.qryAgendamento.Open;

Estava olhando, e fica certo no local que você colocou para pintar a data, no caso teria de ver os filtros que executa, teria de consultar usando o próprio calendário e não o datetimepicker, pois o calendário pode esta posicionado e data diferente do seu datetimepicker. E rode passo-a-passo para ver os locais que ele passa e executa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ENTÃO MARCIO TENTEI DO JEITO Q você FALOU, + QUANDO COLOCA A INSTRUÇÃO WHERE NÃO PINTA. SE você QUISER EU MANDO O PROGRAMA NO SEU E-MAIL, DAI você DA UMA OLHADA, você VAI GOSTAR TEM UMA INTERFACE LEGAL.SE QUISER ME PASSA SEU E-MAIL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.