Nó có thể là cơ bản nhưng tôi có một mã thời gian tìm mẫu để thay đổi màu hàng của chuỗi dựa trên giá trị từ cơ sở dữ liệu trong Chú khỉ lửa. Tôi có dữ liệu đến từ một MDB không có vấn đề nhưng cần hàng để có màu sắc nhất định cho ví dụ '1' = đỏ '2' = xanh vv Tôi biết tôi phải truy cập các yếu tố phong cách bằng cách nào đó 'OnApplyStyleLookup'? nhưng ở giai đoạn nào. Tôi đã thấy các câu hỏi về việc thay đổi kiểu chữ và màu sắc vv nhưng tôi đang đào một cái lỗ để bản thân cố gắng tìm đến phần tử 'nền' và áp dụng. Mọi sự trợ giúp sẽ rất được trân trọng. Cheers Richard ... (newbie để Firemonkey)Tô màu ô trên chuỗi dữ liệu màu cháy theo giá trị từ dữ liệu
9
A
Trả lời
4
{OnDrawColumnCell event}
procedure OnDrawColumnCell(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
const Row: Integer; const Value: TValue; const State: TGridDrawStates);
var
RowColor : TBrush;
begin
RowColor := Tbrush.Create(TBrushKind.Solid,TAlphaColors.Alpha);
{you can check for values and then set the color you want}
if Value.ToString = 'red' then
RowColor.Color := TAlphaColors.Red;
Canvas.FillRect(Bounds, 0, 0, [], 1, RowColor);
{ perform default drawing }
TGrid(Sender).DefaultDrawColumnCell(Canvas, Column, Bounds, Row,
Value, State);
end;
0
Đây là mã của tôi với Delphi Berlin mà hoạt động tốt:
var
aRowColor: TBrush;
begin
//it's better to write this line into create
aRowColor := Tbrush.Create(TBrushKind.Solid,TAlphaColors.Alpha);
//-----
grid.DefaultDrawing := False;
if (myTbl.RcrdDataCount > 0) and (Row < myTbl.RcrdDataCount) then begin
if myTbl.RcrdDataItems[Row].State = TStateDeleted then begin
aRowColor.Color := TAlphaColors.Red;
end
else begin
aRowColor.Color := TAlphaColors.Gray;
end;
Canvas.FillRect(Bounds, 0, 0, [], 1, aRowColor);
Column.DefaultDrawCell(Canvas, Bounds, Row, Value, State);
end;
//it's better to write this line into destroy
aRowColor.free;
//-----
end;
Các vấn đề liên quan
- 1. Thay đổi màu của ô dữ liệu datagridview động
- 2. Thay đổi Màu dữ liệu Dòng dữ liệu WPF
- 3. Lấy dữ liệu từ ô trên
- 4. Định dạng màu dữ liệu trường dựa trên điều kiện
- 5. Làm cách nào để đặt màu ô theo giá trị ô trên ooo-calc?
- 6. Gán các giá trị cho ô dữ liệu tham chiếu
- 7. Phân tích thành phần chính trong màu dữ liệu R
- 8. excel vba thay đổi màu biểu đồ thanh cho một điểm dữ liệu dựa trên giá trị điểm
- 9. ggplot2: Thêm hình vuông có màu gradient theo giá trị
- 10. nhận giá trị chuỗi tiếp theo từ cơ sở dữ liệu bằng cách sử dụng hibernate
- 11. Đặt màu cho một điểm dữ liệu riêng lẻ
- 12. Excel: Set màu nền của tế bào để giá trị rgb dữ liệu trong tế bào
- 13. Sắp xếp dữ liệu JSON theo khóa giá trị
- 14. Lọc khung dữ liệu theo giá trị trong cột
- 15. Cách nhóm dữ liệu XML theo nhiều giá trị
- 16. Giá trị trung bình của tập dữ liệu điểm cho một tập dữ liệu lưới
- 17. Đặt màu nền cho hàng dữ liệu trong Adobe Flex
- 18. Làm thế nào để bạn có điều kiện tạo kiểu ô trong lưới dữ liệu Dojo?
- 19. Bắt màu sắc của một loạt dữ liệu từ một bảng xếp hạng flot
- 20. Thay thế giá trị trong khung dữ liệu dựa trên khung dữ liệu khác trong R
- 21. Lô tô dữ liệu khung chứa NaNs
- 22. Vẽ nhiều dòng (chuỗi dữ liệu) với màu duy nhất trong R
- 23. Làm cách nào để tô màu nền theo điều kiện trong ô bảng?
- 24. Cách lấy giá trị từ ô của một khung dữ liệu?
- 25. lấy dữ liệu từ giá trị khóa động trong json
- 26. Giá trị dữ liệu số Html từ mảng trong javascript
- 27. Dự đoán từ ngày trước: dữ liệu giá trị
- 28. Thay đổi màu dữ liệu trường văn bản (Màu nền trước) dựa trên điều kiện trong JasperReports
- 29. Các điểm tô màu trong một ô lô
- 30. cách tính giá trị ngang trên cơ sở dữ liệu?
Để đặt màu bạn cần phải ghi đè lên các phương pháp SetData của các tế bào, nhưng lớp tế bào là cứng mã hóa trong một StringGrid. Bạn sẽ cần phải sử dụng một lưới bình thường với một lớp tế bào tùy chỉnh để làm điều đó. Hãy xem bài viết của tôi tại http://monkeystyler.com/blog/entry/firemonkey-grid-basics-custom-cells-and-columns để biết cách thực hiện điều đó. –
Cảm ơn nhiều Mike. Bài viết của bạn có tài liệu tốt. Tôi làm việc toàn thời gian (không lập trình) vì vậy tôi biết những gì tôi sẽ làm vào cuối tuần này. –