안녕하세요... dbgird관련해서.. 계속해서 질문을 하게되네요..
우리 오너가 욕심이 많아서 흐흐~~ 그냥 네트웍장비만 관리하던
사람한테.. 간단한 프로그램이라며 만들어 보라고 하더니..
이제는 요구하는것들이 너무 많네요... T.T
질문은 지난번에.. 특정조건에 따라서 해당필드(또는 바로옆필드)
색깔 표시 및 그래프로 dbgrid에 표시하는것 까지 가르쳐 주셨는데..
가르쳐 주신것으로 구현한것은 이렇답니다..
[예]
부서 최초보유 소모 현보유 비율 그래프
-------------------------------------------------------------
인사과 110 60 50 40% 노란색 그래프
홍보과 210 20 190 90% 파랜색 그래프
관리과 310 300 10 10% 노란색 그래프
이런식으로 바로 옆필드에 .. 그래프로 비율에 따른 색상으로 표시를
했는데.. 비율값이 50% 이하일때 그래프 색은 노란색이거든요..
이것을 깜박이게 할수는 없을까요?..... 경고음도 들어가면 좋구요..
정말 자꾸 질문하게 되서.. 죄송스럽네요.. 바쁘실텐데..
그래두... 한번만더.. 답변좀 부탁드려요.. 아래는 소나기님께서.
지난번 답변해주신 자료입니당...
=====================================================================
procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
tmpRect : TRect;
begin
with TDBGrid(Sender).Canvas do
begin
Brush.Style := bsSolid;
Brush.Color := clWindow;
FillRect(Rect);
tmpRect := Rect;
if (Column.FieldName = 'Qty') then
begin
inc(tmpRect.Top,2);
dec(tmpRect.Bottom,2);
if column.Field.AsInteger < 3 then
begin
Brush.Color := clBlue;
tmpRect.Right := Rect.Left + round((Rect.Right - Rect.Left) * 0.3);
end
else if column.Field.AsInteger < 5 then
begin
Brush.Color := clYellow;
tmpRect.Right := Rect.Left + round((Rect.Right - Rect.Left) * 0.5);
end
else
begin
Brush.Color := clRed;
tmpRect.Right := Rect.Left + round((Rect.Right - Rect.Left) * 0.8);
end;
end;
if (gdFocused in State) or (gdSelected in State) then begin
Brush.Color := clHighlight;
Font.Color := clHighlightText;
end;
FillRect(tmpRect);
if (Column.FieldName = 'Qty') then
begin
Brush.Color := clBlack;
FrameRect(tmpRect);
end
else
begin
TextOut(Rect.Left+2,Rect.Top+2,Column.Field.AsString);
end;
Brush.Style := bsSolid;
Brush.Color := clWindow;
end;
end;