2012-09-18 6 views
1

일부 필드의 값에 따라 일부 필드의 배경색을 변경하는 cxGrid가 있습니다. 이것은 모두 정상적으로 작동합니다. 그러나 그리드 데이터에서 무엇인가를 지정하면, 내 양식을 다시 닫기 전에 색이 업데이트되지 않습니다.cxGrid의 색상 새로 고침

레코드가 변경되는 경우이 정보를 얻기 위해 호출해야하는 절차는 무엇입니까?

+1

공급 업체에 문의 했습니까? http://www.devexpress.com/Support/Center/ –

+0

.UpdateXXX 또는 .InvalidateXXX와 같은 절차가 많이 있습니다. –

+1

색상 변경을 위해 어떤 이벤트를 사용하고 있습니까? 행이나 항목에 대한 OnGetContentStyle은 일반적으로 트릭을 수행합니다. –

답변

2

행을 전환하면 내 경험에 업데이트됩니다. 하지만 TClientDataSet과 함께 DB 모드로 사용했습니다.

  • TcxGrid.ActiveView :

    • 같은

      확인 방법은 TcxControl.InvalidateRect

    • TcxControl.InvalidateRgn
    • TcxControl.InvalidateWithChildren

    또한 노드를 무효화 할 수 있습니다. Invalidat 이자형;

  • TcxGrid.ViewData.Records [0] .Invalidate;
  • TcxGridViewData.Rows [0] .Invalidate
  • TcxCustomGridTableController.FocusedRecord.Invalidate;

    이벤트 TcxCustomGridTableViewStyles.OnGetContentStyle

  • TcxCustomGridTableItem.OnCustomDrawCell

    같은 내부 파라미터들 사이 또는 (그 무효화 방법으로) 해당 상품을 노출
  • AReco rd : TcxCustomGridRecord;
  • ViewInfo -> TcxGridTableCellViewInfo.GridRecord 즉

- "무효"단어의 CXTL 장치와 GREP을 열고 모든 일치를 확인합니다.

+2

OP가 cxList가 아닌 ** cxGrid **에 대해 이야기하고 있습니다. ;-) –

+0

젠장, 내 경험에 도움이되는 파일을 만들 수 없었다 - 나는 잘못된 구성 요소를 보았다 :-) –

1

그리드가 데이터 세트에 첨부되고 데이터 세트의 데이터가 변경되면 OnGetContentStyle 이벤트가 자동으로 호출됩니다. 데이터 세트가 업데이트되었는지 확인하십시오. 편집 양식이 그리드 데이터 세트에 자체를 새로 고치라고 말하지 않는 것 같습니다. 콜백 절차를 사용하거나 Observer Pattern을 구현하면됩니다.

다음 코드는 모눈 열에 대해 OnGetContentStyle 이벤트를 구현하는 방법을 보여줍니다.

procedure TFormWithGrid.cxGrid1DBTableView1LASTNAMEStylesGetContentStyle(
    Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; 
    AItem: TcxCustomGridTableItem; var AStyle: TcxStyle); 
begin 
    if ARecord.Values[cxGrid1DBTableView1FIRSTNAME.Index] = 'test' then 
    begin 
    AStyle := TcxStyle.Create(nil); 
    AStyle.Color := clRed; 
    AStyle.Font.Style := [fsBold]; 
    end; 
end;