2014-09-08 6 views
3

내 목표는 LiveBindings를 통해 TClientDataSet에 연결된 여러 열이있는 TGrid를 만드는 것입니다. 열 중 하나는 TProgressColumn 유형입니다.LiveBindings 및 데이터 세트와 함께 사용할 때 TProgressColumn을 만드는 방법

그리드에 데이터가 표시되지만 진행률 표시 줄에 아무 것도 표시되지 않습니다 (예 : 0 % 진행).

TProgressColumn은 ftInteger 유형의 필드에 연결됩니다. 이 필드의 값은 0에서 100 사이입니다.

저는 ftSingle을 사용해 보았지만 운이 없었습니다. TLinkGridToDataSourceBindSourceDB/Columns에서 사용 가능한 ColumnStyle 속성을 통해 TProgressColumn으로 열의 유형을 설정합니다.

이상한 점은 TPrototypeBindSource를 사용하여 값을 생성 할 때 - TProgressColumn이 작동하지만 ftUInteger 값에 대해서만 이상합니다. ftInteger 생성기에서는 실패합니다. I는 Value.IsOrdinal 및 Value.IsType위한 두 가지 조건을 통해 TProgressCell.DrawCell() 단계에서 중단 넣어

TProgressColumn issues

이 스킵되어 : 여기

조금 데모 (델파이 XE7) 인 그리고 ClampValue는 0 인 값 "Min"을받습니다. 함수에 전달 된 값에 문제가있는 것 같습니다.

TProgressColumn을 사용할 때 특별한 것이 있습니까? TLinkGridToDataSourceColumn에서 CustomFormat, CustomParse를 사용해야합니까?

버그가 있습니까?

업데이트 : "nompa"덕분에 수수께끼가 풀 렸습니다!

은 사실 "asInteger"는 TField 객체 클래스 즉의 잘 알려진 특성 :

someDataSet.fieldByName('myFieldName').asInteger 

TProgressColumn - SOLVED!

CustomFormat 속성에서 당신이 self.asInteger 속성을 포함한 많은 것들에 대한 액세스 권한을 얻을 수 있습니다. 여기 더 많은 정보 :

  1. Using Custom Format and Parse Expressions in LiveBindings
  2. Using binding expressions in the CustomFormat property of a TLinkPropertyToField component
  3. Formatting your Fields
  4. How to treat an Integer field as a Boolean?

답변

2

값은 기본적으로 문자열입니다, 문제가되지는 정수 필드입니다. 속성 CustomFormat에서 AsInteger를 작성하십시오. 값은 정수로 취해지고 진행률이 표시됩니다.

+0

G-R-E-A-T !!! 작동 원리 :) AsInteger가 무엇인지 짐작하려면 시간이 좀 걸렸습니다. (: –