Fórum datas em negrito / monthcalendar - delphi4 #388194
08/10/2010
0
Yuli Chrysostomo
Curtir tópico
+ 0Posts
09/10/2010
Emerson Nascimento
MonthCalendar1.BoldDays([1,8], MonthBoldInfo);
ele deve tornar negrito o dia 1o. e o dia 8. se funcionar, bsata você alterar o conteúdo do array.
Gostei + 0
09/10/2010
Yuli Chrysostomo
Gostei + 0
09/10/2010
Yuli Chrysostomo
procedure TForm1.CALENDARIOGetMonthInfo(Sender: TObject; Month: Cardinal;
var MonthBoldInfo: Cardinal);
var dias :array of cardinal;
DATA,DATENOW :TDATETIME;
begin
Q2.CLOSE;
Q2.SQL.CLEAR;
Q2.SQL.TEXT:=' SELECT DISTINCT DATA_LEITURA FROM AMCWU '
+' ORDER BY DATA_LEITURA DESC';
Q2.OPEN;
Q2.FIRST;
WHILE NOT Q2.EOF DO
BEGIN
DATA:=Q2.FIELDBYNAME('DATA_LEITURA').AsDateTime;
SetLength(dias,Q2.RECORDCOUNT);
DATENOW:= STRTOINT(FORMATDATETIME('MM',DATA));
if month = DATENOW THEN
BEGIN
MonthBoldInfo:=0;
dias[Q2.RECNO-1]:= STRTOINT(FORMATDATETIME('DD',DATA));
CALENDARIO.BoldDays(dias,MonthBoldInfo);
END;
Q2.Next;
end;
end; Gostei + 0
10/10/2010
Emerson Nascimento
procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject; Month: Cardinal;
var MonthBoldInfo: Cardinal);
var
aDias: array of cardinal; // array dinâmico
nDia: word;
function DiaOK: boolean; // sub-function para não duplicar o dia
var
i: integer;
begin
Result := True;
if Length(aDias) > 0 then
for i := 0 to High(aDias) do
if aDias[i] = nDia then
begin
Result := False;
exit;
end;
end;
begin
SetLength(aDias, 0); // inicializo o array
// filtro a tabela para listar somente os registros cuja data
// corresponda ao mesmo mês e ano que estiver sendo exibido no calendário
Table1.Filtered := False;
Table1.Filter := 'EXTRACT(YEAR FROM DATA_LEITURA) = ' + IntToStr(YearOf(MonthCalendar1.Date))+
' AND EXTRACT(MONTH FROM DATA_LEITURA) = ' + IntToStr(MonthOf(MonthCalendar1.Date));
Table1.Filtered := True;
// faço a varredura nos registros para 'pintar', no calendário, os dias necessários
while not Table1.Eof do
begin
nDia := DayOf(Table1.FieldByName('DATA_LEITURA').AsDateTime); // obtém o dia da data
if DiaOK then // verifica se pode incluir o dia no array (não repete o dia)
begin
SetLength(aDias, Length(aDias)+1); // incrementa o número de elementos no array
aDias[High(aDias)] := nDia; // atribui o dia ao novo elemento do array
end;
Table1.Next;
end;
Table1.Filtered := False; // limpa o filtro da tabela
if Length(aDias) > 0 then // se algum dia foi incluído, pinta no monthcalendar
MonthCalendar1.BoldDays(aDias, MonthBoldInfo);
end;
obviamente você terá de trocar Table1 pelo nome correto do seu objeto TTable e o campo DATA_LEITURA pelo campo correto da sua tabela.
Gostei + 0
11/10/2010
Yuli Chrysostomo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)