안녕하세요..!!
정말 프로그램은 한도 끝도 없군요..
지난번 질문드렸던 디비그리드 퍼센트 셀 옆에..
퍼센트 비율에 따른 가로 막대그래프를 셀에 추가가 가능할지요?
percent graph
-----------------------
100% [ ||||||||||] (녹색그래프)
70% [||||||||] (노란색 그래프)
50% [||||||] (파란색 그래프)
위와 같이 dbgrid 퍼센트 필드에 따라서 그래프 필드에 표시가 가능할까요?
혹시 괜찮은 예문이나 소스라도 가지고 계시다면... 부탁드려요..
매번 공짜로 얻어가는것 같아서 정말 죄송하네요.... 감사합니다..
모양은 좀더 다듬을 수 있긴 있을 텐데 -_-;;
그럼 소스 뿌립니다.. ^^
=====================================================================
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;