2016-11-02 2 views
0

DBGrid를 가진 일부 셀을 설정, 내가 읽은 상태로 (이 열과 모든 셀) 일부 셀을 설정해야 만. 내가 field1에서 "No"값이 우리가 필드 Tx에 편집을 가능하게한다있는 경우DBGrid를, 우리는 약간의 열을 설정할 수 있습니다 읽기 전용

dbgrid

당신은 내 이미지를 볼 수 있습니다. 하지만 "Yes"값이있는 경우 Tx 필드를 ReadOnly으로 설정해야합니다.

그렇게 할 수 있습니까?

+1

중복 : http://stackoverflow.com/questions/16042975/set-some-cells-in-tdbgrid-to-editable –

답변

6

예, 가능합니다. 이에 대한 해결책의 핵심은 그리드에 연결된 데이터 세트의 데이터 세트 커서가 TDBGrid가 코딩 된 방식 때문에 그리드의 현재 행에 동기화된다는 사실입니다.

따라서 데이터 세트에 AfterScroll 이벤트를 설정하고 그리드의 ReadOnly 속성을 코드에 설정하면됩니다. 내 경우에는 다음과 같이 잘 작동합니다.

procedure TForm1.CDS1AfterScroll(DataSet: TDataSet); 
begin 
    DBGrid1.Columns[4].ReadOnly := Odd(CDS1.FieldByName('ID').AsInteger); 
end; 

분명히 예/아니오 필드의 내용을 테스트 할 수 있습니다.

열이 읽기 전용인지 여부를 결정하는 데 사용하는 필드 값의 변경에 대해 표가 즉시 반응하게하려면 데이터 집합의 AfterEdit 이벤트에서 동일한 코드를 실행해야합니다.

+0

@ user6751794 :이 질문에 답변이 되었습니까? – MartynA

관련 문제