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;