2013-05-15 4 views
1

우리는 devexpress로 Delphi 2006에서 작업하고 있습니다.delphi cxgrid는 문자를 제한합니다.

우리는 cxGrid를 가지고 있습니다. 숫자 열의 값 입력을 0에서 999 사이의 정수로 제한하려고합니다. 속성 유형을 SpinEdit으로 설정하면 초기 값은 항상 0으로되어 원하지 않습니다.

그래서 열 null에 속성 값을두고 열의 데이터 바인딩에 대한 데이터 형식을 Smallint로 설정했습니다. 그것은 대부분은 작동하지만 'e'와 '.' '+'및 '-'는 여전히 예외를 발생시키는 열에 입력 할 수 있습니다.

'e'와 '.'을 제외하는 간단한 방법이 있습니다. '+'와 '-'가 열에 입력되지 않았습니까?

답변

0

초기 0 값은 UseNullString을 true로 설정하여 방지 할 수 있습니다.

원치 않는 문자의 입력은

procedure TForm1.ViewEditKeyPress(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; 
    AEdit: TcxCustomEdit; var Key: Char); 
begin 
    if AItem = TheColumnWithSpinEdit then 
    if (not (Key in ['0'..'9',#8])) then Key := #0; 
end; 
+0

감사 bummi에 의해 처리 할 수 ​​있습니다. UseNullString 속성은 우리의 cxgridDBColumn에 존재하지 않지만 ViewEditKeyPress 코드를 내 뷰에 구현했으며 AItem = TheColumnWithSpinEdit의 유효성을 검사하지는 않지만 매력을 발휘하므로 AItem.Caption = TheColumnWithSpinEdit.Caption으로 변경했습니다. 나는 또한 TcxGridDBColumn으로 AItem을 캐스팅 해본 적이 없다. 다시 한번 감사드립니다. – jmskippy