hsr//////////////////////////////////////////////////
아래 이벤트로 해보세요
OnDrawColumnCell 또는 OnDrawDataCell에다 해도 되며
고쳐쓰시면 됩니다.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with TDBGrid(Sender) do begin
if DataCol=1 then begin //원하는 필드 우측정렬
canvas.TextRect(Rect, Rect.Right - canvas.TextWidth(Fields[DataCol].AsString) - 3, Rect.Top, Fields[DataCol].AsString)
end
else if DataCol=2 then begin //원하는 필드 중앙
Canvas.TextRect(Rect,(Rect.left+Rect.right) div 2, Rect.Top, Fields[DataCol].AsString);
end
else if DataCol=3 then begin //원하는 필드 폰트바꾸기
Canvas.Font.Color:=clYellow;
DefaultDrawColumnCell(Rect, DataCol, Column,[]);
end;
end;
end;
제가 DBGrid에 그림을 넣었더니 그림이 사라지는군요.
아마
canvas.TextRect(Rect, Rect.Right - canvas.TextWidth(Fields[DataCol].AsString) - 3, Rect.Top, Fields[DataCol].AsString)
에서 문자열만 처리해서 그런것 같습니다
그래서 DBGrid에는 그림과 문자가 같이 나올때 그림은 왼쪽에 있고
글자는 오른쪽에 있고 하는 법입니다.히히 그냥 한번올립니다.
// 오른쪽 정렬을 하는 부분.
with TDBGrid(Sender) do begin
if DataCol=0 then begin //원하는 필드 우측정렬
// canvas.TextRect(Rect, Rect.Right - canvas.TextWidth(Fields[DataCol].AsString) - 3, Rect.Top, Fields[DataCol].AsString)
canvas.TextRect(OutRect, OutRect.Right - canvas.TextWidth(Fields[DataCol].AsString) - 3, OutRect.Top, Fields[DataCol].AsString)
end
else if DataCol=1 then begin //원하는 필드 중앙
Canvas.TextRect(Rect,(Rect.left+Rect.right) div 2, Rect.Top, Fields[DataCol].AsString);
end
else if DataCol=2 then begin //원하는 필드 폰트바꾸기
Canvas.Font.Color:=clYellow;
DefaultDrawColumnCell(Rect, DataCol, Column,[]);
end;
end;
아래 이벤트로 해보세요
OnDrawColumnCell 또는 OnDrawDataCell에다 해도 되며
고쳐쓰시면 됩니다.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with TDBGrid(Sender) do begin
if DataCol=1 then begin //원하는 필드 우측정렬
canvas.TextRect(Rect, Rect.Right - canvas.TextWidth(Fields[DataCol].AsString) - 3, Rect.Top, Fields[DataCol].AsString)
end
else if DataCol=2 then begin //원하는 필드 중앙
Canvas.TextRect(Rect,(Rect.left+Rect.right) div 2, Rect.Top, Fields[DataCol].AsString);
end
else if DataCol=3 then begin //원하는 필드 폰트바꾸기
Canvas.Font.Color:=clYellow;
DefaultDrawColumnCell(Rect, DataCol, Column,[]);
end;
end;
end;