DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
fldb
 

País: r
Estado: RS
Cidade: São Leopoldo
Mensagens: 19
 Postado em: 1/11/2010 8:40:45 PM

Boa tarde Pessoal

vi no Forum DevMedia esse topico http://www.devmedia.com.br/forum/delphi/388292-datas-em-negrito---monthcalendar-delphi4.html, aonde com ele tambem consegui deixar a data em negrito, só que tem um porem quando fica em negrito, elel coloca para todos os meses.

Alguem sabe como ?

Obrigado.
Martins
 
 


País: Brasil
Estado: MA
Cidade: Pindaré Mirim
Mensagens: 276
 Postado em: 2/11/2010 1:02:36 AM
Ainda não olhei o link q vc passou em sua postagem, mas vc poderia publicar seu código para q possamos ver como corrigir esse problema? Boa sorte e bons códigos.

 
fldb
 

País: r
Estado: RS
Cidade: São Leopoldo
Mensagens: 19
 Postado em: 2/11/2010 11:24:23 AM
Obrigado pelo retorno,
ai esta meu codigo para darem uma olhada:

procedure TFPesquisaReserva.MonthCalendar1GetMonthInfo(Sender: TObject; Month: Cardinal;
  var MonthBoldInfo: Cardinal);
var
  aDias: array of cardinal; // array dinâmico
  nDia: word;
  nDiaString: string;

  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
  CDS_Pesquisa.Close;
  SQLDataSet_Pesq.CommandText := 'select data from reserva';
  CDS_Pesquisa.Open;

    // faço a varredura nos registros para 'pintar', no calendário, os dias necessários
    while not CDS_Pesquisa.Eof do
    begin
     nDiaString := FormatDateTime('dd',CDS_Pesquisa.FieldByName('DATA').AsDateTime);// obtém o dia da data
     nDia := StrToInt(ndiaString);

    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;
    CDS_Pesquisa.Next;
  end;


 
fldb
 

País: r
Estado: RS
Cidade: São Leopoldo
Mensagens: 19
 Postado em: 10/11/2010 11:29:00 AM
Alguem ?????

 
Emerson
 
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 10/11/2010 4:46:23 PM
fldb, compare o trecho:

  // filtro a tabela para listar somente os registros cuja data
  // corresponda ao mesmo mês e ano que estiver sendo exibido no calendário
  CDS_Pesquisa.Close;
  SQLDataSet_Pesq.CommandText := 'select data from reserva';
  CDS_Pesquisa.Open;

com o código do post original.

cadê a filtragem da data? você está escolhendo sempre TODOS os registros da tabela. é preciso escolher somente os registros cujo ano e mês correpondam ao ano e mês do calendário.

leia com bastante atenção o texto em vermelho.

 
fldb
 

País: r
Estado: RS
Cidade: São Leopoldo
Mensagens: 19
 Postado em: 10/11/2010 4:59:58 PM
Obrigado pelo retorno amigão mas achei outra maneira, vou colocar aqui o fonte para caso alguem precisar.

Valeu

procedure TFPesquisaReserva.MonthCalendar1GetMonthInfo(Sender: TObject; Month: Cardinal;
  var MonthBoldInfo: Cardinal);
var dias :array of cardinal;
   Data,Datenow  :TDateTime;
begin

  CDS_Pesquisa.Close;
  SQLDataSet_Pesq.CommandText := 'select data from reserva where Situacao = ''R'' order by data desc';
  CDS_Pesquisa.Open;
  CDS_Pesquisa.FIRST;


 WHILE NOT CDS_Pesquisa.EOF DO
  BEGIN
   Data := CDS_Pesquisa.FieldByName('DATA').AsDateTime;

   SetLength(dias,CDS_Pesquisa.RECORDCOUNT);

   Datenow:= StrToInt(FORMATDATETIME('MM',DATA));

   if month = DATENOW THEN
     BEGIN
      MonthBoldInfo:=0;
      dias[CDS_Pesquisa.RECNO-1]:= STRTOINT(FORMATDATETIME('DD',DATA));
      MonthCalendar1.BoldDays(dias,MonthBoldInfo);
     END;

   CDS_Pesquisa.Next;
  end;
end;


 
Emerson
 
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 11/11/2010 1:26:17 PM
da forma como está você vai varrer a tabela inteira e pode acabar pintando dias referentes a outros anos que não o apontado no calendário.

troque sua instrução para algo como:

SQLDataSet_Pesq.CommandText :=
  'select data from reserva '+
  'where Situacao = ''R'' and extract(month from data)='+inttostr(month)+
  ' and extract(year from data)='+FormatDateTime('YYYY',MonthCalendar1.Date);

essa alteração serve para o FB. adapte os comandos para o banco que você utiliza.




 
fldb
 

País: r
Estado: RS
Cidade: São Leopoldo
Mensagens: 19
 Postado em: 11/11/2010 3:49:23 PM
Valeu or mais essa dica, fica o codigo para quem precisar pois é muito util para que quiser fazer telas que queiram usar o calendario para pesquisar.

Valeu

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03