Projeto não abre

Delphi

18/06/2015

Olá !

Baixei um exemplo de calendario stringgrid , porem, ao tentar abri-lo o delphi não o abre corretamente e nem a execução do projeto está correta, se possível alguém pode me dizer o que está havendo ?

Link : http://www.planetadelphi.com.br/download/4869/arquivo/calendario-com-stringgrid
André Moutinho

André Moutinho

Curtidas 0

Respostas

Dorivan Sousa

Dorivan Sousa

18/06/2015

evento CalendarGridDrawCell

var
  DiaGrid : string;
  AlturaGrid, LarguraGrid, TopGrid, LeftGrid : Integer;
  Data : TDateTime;
begin
  with CalendarGrid do begin
    //Limpando o Calendário Para Recria-lo
    Canvas.Brush.Color := clWhite;
    Canvas.Pen.Color   := clWhite;
    Canvas.Font.Style  := [];
    Canvas.Font.Color  := clBlack;
    Canvas.FillRect(Rect);
    DiaGrid := Cells[aCol, aRow];
    //Senão for Cabeçalho dos Dias da Semana
    //if DiaGrid<>'' then //ADICIONA ESSA LINHA ********************************************************************
      if aRow > 0 then begin
GOSTEI 0
André Moutinho

André Moutinho

18/06/2015

evento CalendarGridDrawCell

var
  DiaGrid : string;
  AlturaGrid, LarguraGrid, TopGrid, LeftGrid : Integer;
  Data : TDateTime;
begin
  with CalendarGrid do begin
    //Limpando o Calendário Para Recria-lo
    Canvas.Brush.Color := clWhite;
    Canvas.Pen.Color   := clWhite;
    Canvas.Font.Style  := [];
    Canvas.Font.Color  := clBlack;
    Canvas.FillRect(Rect);
    DiaGrid := Cells[aCol, aRow];
    //Senão for Cabeçalho dos Dias da Semana
    //if DiaGrid<>'' then //ADICIONA ESSA LINHA ********************************************************************
      if aRow > 0 then begin


Teria como você me explicar melhor ?

Onde insiro ? Como faço para funcionar corretamente ?

Desculpe, mas estou sem entender, gostaria apenas que o calendário com esse StringGrid, funcionasse , nada mais.

Obrigado .
GOSTEI 0
Dorivan Sousa

Dorivan Sousa

18/06/2015

voce clica na string grid vai no object inspector, na aba eventos e procura o evento OnGridDrawCell
voce vai ver esse codigo

var
  DiaGrid : string;
  AlturaGrid, LarguraGrid, TopGrid, LeftGrid : Integer;
  Data : TDateTime;
begin
  with CalendarGrid do begin
    //Limpando o Calendário Para Recria-lo
    Canvas.Brush.Color := clWhite;
    Canvas.Pen.Color   := clWhite;
    Canvas.Font.Style  := [];
    Canvas.Font.Color  := clBlack;
    Canvas.FillRect(Rect);
    DiaGrid := Cells[aCol, aRow];
    //Senão for Cabeçalho dos Dias da Semana
    if aRow > 0 then begin
    ...
    ...
    ...
    ///daqui pra baixo tem mais codigos mas so precisa modificar a linha acima.


antes do
 if aRow > 0 then begin 
voce coloca o
if DiaGrid<>'' then


vai ficar assim

var
  DiaGrid : string;
  AlturaGrid, LarguraGrid, TopGrid, LeftGrid : Integer;
  Data : TDateTime;
begin
  with CalendarGrid do begin
    //Limpando o Calendário Para Recria-lo
    Canvas.Brush.Color := clWhite;
    Canvas.Pen.Color   := clWhite;
    Canvas.Font.Style  := [];
    Canvas.Font.Color  := clBlack;
    Canvas.FillRect(Rect);
    DiaGrid := Cells[aCol, aRow];
    //Senão for Cabeçalho dos Dias da Semana
    if DiaGrid<>'' then //ADICIONA ESSA LINHA ********************************************************************
    if aRow > 0 then begin
    ...
    ...
    ...
    ///daqui pra baixo tem mais codigos mas so precisa modificar a linha acima.


eu to sem meu note nesse final de semana se nao conseguir na segunda eu posto o exemplo do site corrigido.
GOSTEI 0
André Moutinho

André Moutinho

18/06/2015

voce clica na string grid vai no object inspector, na aba eventos e procura o evento OnGridDrawCell
voce vai ver esse codigo

var
  DiaGrid : string;
  AlturaGrid, LarguraGrid, TopGrid, LeftGrid : Integer;
  Data : TDateTime;
begin
  with CalendarGrid do begin
    //Limpando o Calendário Para Recria-lo
    Canvas.Brush.Color := clWhite;
    Canvas.Pen.Color   := clWhite;
    Canvas.Font.Style  := [];
    Canvas.Font.Color  := clBlack;
    Canvas.FillRect(Rect);
    DiaGrid := Cells[aCol, aRow];
    //Senão for Cabeçalho dos Dias da Semana
    if aRow > 0 then begin
    ...
    ...
    ...
    ///daqui pra baixo tem mais codigos mas so precisa modificar a linha acima.


antes do
 if aRow > 0 then begin 
voce coloca o
if DiaGrid<>'' then


vai ficar assim

var
  DiaGrid : string;
  AlturaGrid, LarguraGrid, TopGrid, LeftGrid : Integer;
  Data : TDateTime;
begin
  with CalendarGrid do begin
    //Limpando o Calendário Para Recria-lo
    Canvas.Brush.Color := clWhite;
    Canvas.Pen.Color   := clWhite;
    Canvas.Font.Style  := [];
    Canvas.Font.Color  := clBlack;
    Canvas.FillRect(Rect);
    DiaGrid := Cells[aCol, aRow];
    //Senão for Cabeçalho dos Dias da Semana
    if DiaGrid<>'' then //ADICIONA ESSA LINHA ********************************************************************
    if aRow > 0 then begin
    ...
    ...
    ...
    ///daqui pra baixo tem mais codigos mas so precisa modificar a linha acima.


eu to sem meu note nesse final de semana se nao conseguir na segunda eu posto o exemplo do site corrigido.


Então, efetuei a modificação, o code ficou assim na parte modificada :
//Senão for Cabeçalho dos Dias da Semana
    if DiaGrid<>'' then
    if aRow > 0 then begin
     Data := StrToDate(DiaGrid);
      DiaGrid := IntToStr(DayOf(Data));
      //Checa se os Dias São do Mês Selecionado
      if MonthOf(Data) = MonthOf(PrimeiroDiaMes) then begin
        //Pintando a Data Atual
        if Data = Date then begin
          Canvas.Brush.Color := $00FFC794;
          Canvas.Font.Style  := [fsBold];
          Canvas.Rectangle(Rect);
        end;
        //Pintando Data Selecionada
        if gdSelected in State then begin
          Canvas.Brush.Color := $00FFC794;
          Canvas.Font.Color  := clBlack;
          Canvas.Font.Style  := [fsBold];
          Canvas.Rectangle(Rect);
        end;


Porém, ao rodar a aplicação,olha o que ocorreu,repare na parte que eu sinalizei em vermelho do GRID, ficou toda estranha :

[img]http://arquivo.devmedia.com.br/forum/imagem/412436-20150620-175441.png[/img]

Como eu arrumo isso ai da imagem acima ?

Na verdade, o que eu queria fazer como controle, ao invés dessas setas na esquerda e direita, eu queria fazer com ComboBox, exemplo :

[img]http://arquivo.devmedia.com.br/forum/imagem/412436-20150620-180339.png[/img]

Em uma eu selecionava o MÊS e na outra o ANO, e ela já iria direto para o mês e ano pré-selecionado.


Caso, quando você veja aqui, possa me ajudar a deixar dessa forma com as COMBO-BOX agradeço, se for muito complicado deixar dessa forma, só me ajude naquela outra forma que já está pronta mesmo, o que eu queria da primeira maneira lá , é que na hora que inicia-se o ANO fosse 2015 e não 1900, tem como fazer ? (isso se dessa segunda forma com as combo-box for muito difícil, se não for poderia me dar o exemplo, com essas combos ai )


Obrigado pela ajuda !
GOSTEI 0
Dorivan Sousa

Dorivan Sousa

18/06/2015

o problema é na data inicial olha no oncreate, realmnte quando modifica o codigo ele inicia vazio, mas ao selecionar um ele normaliza... eu vou ver no projeto do site e vejo se encontro o problema....
GOSTEI 0
André Moutinho

André Moutinho

18/06/2015

o problema é na data inicial olha no oncreate, realmnte quando modifica o codigo ele inicia vazio, mas ao selecionar um ele normaliza... eu vou ver no projeto do site e vejo se encontro o problema....


Sem problemas, se você puder, tem como me fazer o exemplo, com as combo-box ? como eu citei acima ?

Agradeço
GOSTEI 0
POSTAR