Q&A

  • DBGrid에서 특정한 줄만 색깔을 넣고 깜박거리게 하려고 합니다
DBGrid에서 특정한 줄만 색깔을 넣고 깜박거리게 하려고 합니다.
타이머를 이용하기 전에는 원하는 줄만 색깔이 바뀌어 졌습니다.
그리고, 타이머를 이용하여 깜박거리게 하려는데 잘 되지가 않네요.
아래와  같이 코딩을 하였더니 커서가 지나간 후에 한 칸만 깜박거리는데 어떻게 해결해야하나요?

procedure TFrmAlmque.DisplayAlm(sType: TAlmStatus;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  DGalmque.Canvas.Font.Name := aAdsetting[sType].Adfont;
  DGalmque.Canvas.Font.Color := aAdsetting[sType].AdFore;
  DGalmque.Canvas.Brush.Color := aAdsetting[sType].AdBack;
  DGalmque.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  if aAdsetting[sType].Adflash then    //깜박거릴때
    TTimer1.Interval := 500;                // 1초에 2번씩 색깔을 토글함
end;

procedure TFrmAlmque.DGalmqueDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);

var
  sStatus: String;

begin

if Tbalmque.FieldByName('ALMSTAT').AsString = 'ALARM' then
begin
  sStatus := tbAlmque.FieldByName('ALMACK').AsString;
  if sStatus = 'NA' then DisplayAlm(NA,Rect,DataCol,Column,State)
  else if sStatus = 'AA' then DisplayAlm(AA,Rect,DataCol,Column,State)
  else if sStatus = 'UA' then DisplayAlm(UA,Rect,DataCol,Column,State)
  else if sStatus = 'NC' then DisplayAlm(NC,Rect,DataCol,Column,State)
  else if sStatus = 'CF' then DisplayAlm(CF,Rect,DataCol,Column,State);
end;

end;
0  COMMENTS