필자는 memtables를 사용하여 열거 형을 combobox로 와이어 링합니다 (LiveBinding을 사용). 그러나enumarations에서 memtables를 채우는 방법?
나는 그들을 많이 가지고 그들은 방법 내가 너무 나쁜 (복사/붙여 넣기)를하고있는 중이 예를 들어
, 나는 다음과 같은 열거 있습니다
TEnumResourceType = (trtApp, trtTab, trtSection, trtField, trtCommand, trtOther);
하고 I를 위해를 문자열에 상응 제공하는 함수를 만들어 : 내 memtable을 놓습니다 데이터 모듈에서
function EnumResourceTypeToStr(AEnum: TNaharEnumResourceType): string;
begin
case AEnum of
trtApp : result := 'Aplicação';
trtTab : result := 'Pagina (Tab)';
trtSection : result := 'Secção';
trtField : result := 'Campo';
trtCommand : result := 'Comando';
trtOther : result := 'Outro';
end;
end;
을하고 난 다음 대구로, 나는 테이블의 AFTEROPEN 이벤트를 사용하고 그것을 채울 필요 e :
procedure TDMGlobalSystem.vtResourceTypeAfterOpen(DataSet: TDataSet);
var
enum : TEnumResourceType;
begin
inherited;
for enum := Low(TEnumResourceType) to High(TEnumResourceType) do
DataSet.InsertRecord([EnumResourceTypeToStr(enum), Ord(enum)]);
end;
모두 작동하지만 모든 새 enumaration에 대해이 작업을 수행해야하며 수십 개가 필요합니다. 결국 현재의 memtable을 다른 것으로 변경해야하며 이는 프로세스를 자동화하는 추가 관심사입니다. 현재 memtable이 Android에서 작동하지 않는 경우가 있습니다.
나는이 프로세스를 자동화하거나 generics를 사용하는 방법을 찾고 있는데, DataModule에서는 다음과 같은 것이 필요하다. PopulateEnum (Table, Enum);
가장 좋은 방법은이 memtable로부터 상속 된 구성 요소를 생성하고 어떻게 든 열거 필요한 사항을 정의하고 모든 마법합니다 (enumtostr의 선택 포함)이 발생 될 수
난 당신이 개 쉽게 선택이 말한 것
정수 및 문자열로만 표를 채우시겠습니까? 왜 'TDictionary'을 사용하고 테이블을 채우지 않고 키를 반복하고 그 키의 문자열을 얻는가? –
(거의) 열거 형을 반복하면서이 http : // stackoverflow를 반복하고 싶다면.com/questions/12379032/enum-with-generics –