with TDBGrid(Sender) do begin
if Field.FieldName = '종류' then begin
case Field.AsInteger of
1 : canvas.TextRect(rect,rect.Left,rect.Top,'토목');
2 : canvas.TextRect(rect,rect.Left,rect.Top,'a');
end;
end;
end;
컬럼 에디터를 사용하셨군요, 그러면 DrawDataCell 대신
DrawColumnCell 이벤트를 쓰세요.
rect은 해당 컬럼의 사각 좌표입니다.
TextRect인자를 보시면 2,3번째가 글자의 시작 x,y좌표이므로 잘 조정하시면
왼쪽오른쪽들여쓰기가 가능합니다.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with TDBGrid(Sender) do begin
if Column.Title.Caption = '종류' then begin
case Column.Field.AsInteger of
1 : canvas.TextRect(rect,rect.Left,rect.Top,'토목');
2 : canvas.TextRect(rect,rect.Left,rect.Top,'a');
end;
end;
end;
end;
hsr///////////////////////////////////////////////////////////////
DB는 오라클인경우 decode문이나 Case문을 이용하면 됩니다.
MS-SQL인 경우는 Case문을 이용하시면 됩니다.
SELECT DECODE(등급,'1','상,'2','중','3','하') 등급
FROM 테이블
WHERE 조건;
2. CalcField를 이용한 방법
procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
With DataSet do
begin
Case StrToIntDef(FieldByName('등급').AsString,0) of
1: FieldByName('display').AsString := '상';
2: FieldByName('display').AsString := '중';
3: FieldByName('display').AsString := '하';
end;
아래것을 잘 정리해보세요,
'하'는 우측으로 붙인것처럼 잘조정하면 좌,우,중앙으로 나옵니다.
procedure TForm1.DBGrid2DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
with TDBGrid(Sender) do begin
if Field.FieldName = '등급' then begin
case Field.AsInteger of
1 : Canvas.TextRect(Rect,Rect.Left,Rect.Top,'상');
2 : Canvas.TextRect(Rect,Rect.Left,Rect.Top,'중');
3 : canvas.TextRect(Rect, Rect.Right - canvas.TextWidth('하') - 3, Rect.Top, '하')
end;
end;
end;
end;