StringGrid. Pesquisei no forum e não achei nada parecido
Evento de preenchimento OnShow:
Tenho um string grid preenchida com horas compreendidas entre 00:00 até 23:30 com intervalos de 30 em 30 minutos.
Tenho uma tabela chamada agenda, e nessa tabela existe um campo chamado hora.
A intenção é que ao se ativar o formulário seja feito uma rotina para varer a string grid bem como a tabela agenda, e, se tiverem valores iguais pintar a célula string grid com a cor vermelha, com isso indicando que aquele horário já foi reservado para algum paciente. Estou precisando urgente dessa dica ou de uma rotina. Por favor ajude-me está faltando essa rotina para que eu possa seguir com o desenvolvimento do meu sistema. Please, please help. Ozias. Estou começando a desanimar por procurar e não acha nada. :cry:
Tenho um string grid preenchida com horas compreendidas entre 00:00 até 23:30 com intervalos de 30 em 30 minutos.
Tenho uma tabela chamada agenda, e nessa tabela existe um campo chamado hora.
A intenção é que ao se ativar o formulário seja feito uma rotina para varer a string grid bem como a tabela agenda, e, se tiverem valores iguais pintar a célula string grid com a cor vermelha, com isso indicando que aquele horário já foi reservado para algum paciente. Estou precisando urgente dessa dica ou de uma rotina. Por favor ajude-me está faltando essa rotina para que eu possa seguir com o desenvolvimento do meu sistema. Please, please help. Ozias. Estou começando a desanimar por procurar e não acha nada. :cry:
Oziasl
Curtidas 0
Respostas
Marcelo Saviski
27/05/2004
Dê uolhada nesses exemplos:
http://www.delphibr.com.br/controle.php?tipo=1&id=85
http://www.delphibr.com.br/controle.php?tipo=1&id=86
como pode-se ver nesses dois exemplos, vc vai usar o evento OnDrawCell
e com base no Row e Col verificar as horas e pintar com a cor desejada
blz?
http://www.delphibr.com.br/controle.php?tipo=1&id=85
http://www.delphibr.com.br/controle.php?tipo=1&id=86
como pode-se ver nesses dois exemplos, vc vai usar o evento OnDrawCell
e com base no Row e Col verificar as horas e pintar com a cor desejada
blz?
GOSTEI 0
Oziasl
27/05/2004
Marcelo Saviski, desculpe a minha ig...., mais não consegui fazer com que a stringrid fosse varrida e localizar um item desejado.
Ex.: Varer o StringGrid e se tiver o horário 11:30 pintar essa célula de vermelho. Desculpe amigo, não tenho tanta experiência. Mas chego lá :oops:
Ex.: Varer o StringGrid e se tiver o horário 11:30 pintar essa célula de vermelho. Desculpe amigo, não tenho tanta experiência. Mas chego lá :oops:
GOSTEI 0
Fabio.hc
27/05/2004
Tente assim:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if StringGrid1.Cells[0,ARow] = ´*´ then StringGrid1.Canvas.Brush.Color := clRed; if gdFixed in State then StringGrid1.Canvas.Brush.Color := clBtnFace; StringGrid1.Canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 2, StringGrid1.Cells[Acol,Arow]); end; procedure TForm1.Button1Click(Sender: TObject); var X:integer; Hora:TTime; begin StringGrid1.ColWidths[0]:=0; Query1.Open; StringGrid1.RowCount:=48; for X:=1 to StringGrid1.RowCount -1 do begin Hora:=StrToTime(´00:30:00´)*X; StringGrid1.Cells[1,X]:=FormatDateTime(´hh:mm´,hora); if TimeToStr(Query1Hora.Value) = TimeToStr(Hora) then begin StringGrid1.Cells[0,X]:=´*´; Query1.Next; end else begin StringGrid1.Cells[0,X]:=´ ´; end; end; end;
GOSTEI 0
Oziasl
27/05/2004
Fabio.HC
Coloquei a seguinte instrução:
procedure TForm1.Button1Click(Sender: TObject);
var X:integer;
Hora:TTime;
begin
IBQuery1.Open;
for X:=1 to StringGrid1.RowCount-1 do
begin
Hora:=StrToTime(´00:30:00´)*X;
StringGrid1.Cells[0,X]:=FormatDateTime(´hh:mm´,hora);
if TimeToStr(IBQuery1Hora.Value) = TimeToStr(Hora) then
begin
StringGrid1.Cells[1,X]:=´X´;
IBQuery1.Next;
end
else
begin
StringGrid1.Cells[1,X]:=´ ´;
end;
end;
end;
obs.: O que está acontecendo é que a medida que eu dou click no botão o X muda para o próximo campo encontrado na tabela, ou seja ele não fica fixo no string grid. Tenho na tabela agenda os horários já marcados 09:00:00 e 07:30:00, queria que ficasse na stringgrid marcados. :roll:
Coloquei a seguinte instrução:
procedure TForm1.Button1Click(Sender: TObject);
var X:integer;
Hora:TTime;
begin
IBQuery1.Open;
for X:=1 to StringGrid1.RowCount-1 do
begin
Hora:=StrToTime(´00:30:00´)*X;
StringGrid1.Cells[0,X]:=FormatDateTime(´hh:mm´,hora);
if TimeToStr(IBQuery1Hora.Value) = TimeToStr(Hora) then
begin
StringGrid1.Cells[1,X]:=´X´;
IBQuery1.Next;
end
else
begin
StringGrid1.Cells[1,X]:=´ ´;
end;
end;
end;
obs.: O que está acontecendo é que a medida que eu dou click no botão o X muda para o próximo campo encontrado na tabela, ou seja ele não fica fixo no string grid. Tenho na tabela agenda os horários já marcados 09:00:00 e 07:30:00, queria que ficasse na stringgrid marcados. :roll:
GOSTEI 0