Ir ao conteúdo
  • Cadastre-se

StringGrid (Marcar Células e Armazenar Coordenadas)


Posts recomendados

Pessoal em primeiro lugar bom dia a todos.

Seguinte, fiz uma stringgrid com a 1ª coluna os meses de janeiro a dezembro e as colunas restantes os dias do dia 1 ao 31, o que quero fazer é marcar os dias dos meses para agendar tarefas durante o ano todo, detalhe tenho que guardar essas coordenadas para que todos os dias eu tenha como avisar ao usuário que naquele dia marcado ele tem uma tarefa para esetuar. Como posso fazer isso ????

O String está anexado...

Valeu...

post-900017-13884960109651_thumb.jpg

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

  • 9 anos depois...

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...