Fórum StringGrid. Pesquisei no forum e não achei nada parecido #234733

27/05/2004

0

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:


Oziasl

Oziasl

Responder

Posts

27/05/2004

Marcelo Saviski

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?


Responder

Gostei + 0

27/05/2004

Oziasl

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:


Responder

Gostei + 0

27/05/2004

Fabio.hc

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;



Responder

Gostei + 0

28/05/2004

Oziasl

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:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar