Bom dia amigo.
Bom, você vai precisar salvar os dados da StringGrid e carregar depois.
Se pesquisar no google sobre como salvar uma stringgrid voce vai achar um monte de exemplos sobre isso.
Um exemplo de rotina para salvar as células do StringGrid está abaixo.
Mas como você tem uma stringgrid com dados constantes (sempre mostra todos os dias da semana), então acho que você deveria ter uma matriz bidimensional equivalente às linhas e colunas de datas do StringGrid, na qual você armazena informação de dia com evento marcado e então salvaria a matriz.
A mesma rotina usada para salvar/carregar dados do StringGrid poderia ser modificada para salvar/carregar a matriz de eventos e a partir dela você assinalar os dias com eventos no seu StringGrid.
As rotinas estão descritas abaixo.
Procedure SaveGrid; var f : textfile; x,y : integer; Begin assignfile (f,'NomeArquivo'); rewrite (f); //cria ou sobre-escreve arquivo writeln (f,stringgrid.colcount); //salva quantidade de colunas writeln (f,stringgrid.rowcount); //salva quantidade de linhas For X:=0 to stringgrid.colcount-1 do For y:=0 to stringgrid.rowcount-1 do writeln (F, stringgrid.cells[x,y]); //salva o texto das celulas do SG referenciados por X e Y closefile (f); End;
Para ler os dados é o processo inverso:
Procedure LoadGrid; var f : textfile; x,y : integer; Begin assignfile (f,'NomeArquivo'); reset (f); //abre para leitura readln (f,stringgrid.colcount); readlln (f,stringgrid.rowcount); For X:=0 to stringgrid.colcount-1 do For y:=0 to stringgrid.rowcount-1 do readln (F, stringgrid.cells[x,y]); closefile (f); End;
Agora, para "pintar" as células marcadas você deve fazer escrever sua rotina no evento OnDrawCell do StringGrid.
Seria mais ou menos assim:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect; State: TGridDrawState); begin if (Row=1) and (Col=1) then //aqui é que você identifica quais linhas e colunas devem ser pintadas. //neste caso está fixado para a celula coluna 1 e linha 1 begin StringGrid1.Canvas.Font.Color := clwhite; //cor do texto StringGrid1.Canvas.Brush.Color := clAqua; //cor de fundo da celula StringGrid1.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2,StringGrid1.Cells[Col, Row]); end; end;
Nao testei os codigos, se tiver alguma duvida ou problema pode falar.
Eu fiz uma vez um projeto tipo agenda de compromissos sem usar banco de dados, onde o usuário selecionava uma data num calendario feito de TPanels, e indicava qual seria o evento e quando deveria ser alarmado, alem de ter varias opções como icone ao lado do relogio, programa pode ou nao inicializar junto com o windows, pode colocar senha, mostra os feriados, etc.
Se quiser eu te mando (e para todos que se interessarem) o projeto com codigo aberto - aí posso mandar por e-mail ou talvez hospedar no 4shared.com ou em qualquer site indicado.
Teh mais