2012-04-22 43 views
7

Tôi muốn định dạng các ô cụ thể để buộc hai chữ số thập phân. Dữ liệu đến từ một thủ tục lưu trữ ElevateDB và được nối vào một TDataSource.Cách định dạng cột DBGrid để hiển thị hai vị trí thập phân?

EDIT: SQL Programming Lưu ý:

Tôi đã không chắc chắn nếu điều này chỉ là một vấn đề ElevateDB hay không. Trước khi biết về Fields Editor, tôi đã cố gắng định dạng dữ liệu ở cấp SQL bằng cách sử dụng câu lệnh CAST (NumericField as varchar (10)) bên trong thủ tục được lưu trữ. Bằng cách làm như vậy, nó không hiển thị thuộc tính DisplayFormat bên trong trình chỉnh sửa trường cho trường cụ thể này.

Khi tôi xóa bảng sao kê CAST() từ các thủ tục lưu trữ, các DisplayFormat sở hữu xuất hiện trong Fields biên tập.

+0

Chỉ các trường số thể hiện thuộc tính DisplayFormat - không sử dụng cho trường trong trường chuỗi. –

Trả lời

9

Bạn có thể định dạng cột DBGrid bằng cách định dạng các trường bên dưới. Nếu không được thực hiện, hãy tạo các trường tĩnh trong tập dữ liệu của bạn và sau đó đặt thuộc tính DisplayFormat của trường đang được đề cập đến 0.00 và bạn đã hoàn tất.

+0

Làm cách nào để tạo "Trường tĩnh"? Làm thế nào để bạn thiết lập DisplayFormat? –

+0

Sử dụng [trình chỉnh sửa trường] (http://docwiki.embarcadero.com/RADStudio/en/Fields_Editor) để tạo các trường tĩnh (còn gọi là liên tục). Mỗi trường có một thuộc tính DisplayName. –

+0

Tôi "Nhấp chuột phải" và tìm thấy "Trình chỉnh sửa trường". Tuy nhiên ... không có DisplayFormat. Tôi rất thất vọng với Delphi ngay bây giờ tôi có thể khạc nhổ. –

7

tôi sử dụng cùng một phương pháp như Uwe đã trả lời, trong mã sau khi mở các tập dữ liệu chỉ cần thêm dòng mã này để định dạng cột certian:

TFloatField(MyDs.FieldByName('Cost')).DisplayFormat := '0.00'; 
2

Bạn có thể định dạng lĩnh vực này bằng cách sử dụng sự kiện DrawDataCell.

procedure TFormMain.DBGridCompareDrawDataCell(Sender: TObject; 
    const Rect: TRect; Field: TField; State: TGridDrawState); 
begin 
    if Field.Name = 'FIELDNAME' then 
    TFloatField(Field).DisplayFormat := '#,##0.00'; 
end; 
Các vấn đề liên quan