내 목표는 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() 단계에서 중단 넣어
이 스킵되어 : 여기
조금 데모 (델파이 XE7) 인 그리고 ClampValue는 0 인 값 "Min"을받습니다. 함수에 전달 된 값에 문제가있는 것 같습니다.TProgressColumn을 사용할 때 특별한 것이 있습니까? TLinkGridToDataSourceColumn에서 CustomFormat, CustomParse를 사용해야합니까?
버그가 있습니까?
업데이트 : "nompa"덕분에 수수께끼가 풀 렸습니다!
은 사실 "asInteger"는 TField 객체 클래스 즉의 잘 알려진 특성 :
someDataSet.fieldByName('myFieldName').asInteger
CustomFormat 속성에서 당신이 self.asInteger 속성을 포함한 많은 것들에 대한 액세스 권한을 얻을 수 있습니다. 여기 더 많은 정보 :
- Using Custom Format and Parse Expressions in LiveBindings
- Using binding expressions in the CustomFormat property of a TLinkPropertyToField component
- Formatting your Fields
- How to treat an Integer field as a Boolean?
G-R-E-A-T !!! 작동 원리 :) AsInteger가 무엇인지 짐작하려면 시간이 좀 걸렸습니다. (: –