destructor TcolorDBCombo.destroy;
begin
FstringList.Free;
inherited;
end;
procedure TcolorDBCombo.FillItems(ADataset:TDataset;AShowField:string;AIndexField:string;ADataField:string);
var ABookMark:TBookMark;
begin
ABookMark:=ADataSet.GetBookMark;
Self.Items.clear;
FstringList.clear;
if ADataSet.Active then
begin
if bShowSpace then
begin
if FAddtionalData then
begin
Self.Items.Add(FSpaceText);
FstringList.Add(''+'|'+'');
end
else
begin
Self.Items.Add(FSpaceText);
FstringList.Add('');
end;
end;
try
ADataSet.First;
while not ADataSet.Eof do
begin
if AIndexField<>'' then
begin
if not bShowID then
begin
Self.Items.Add(ADataSet.FieldByName(AShowField).AsString);
if FAddtionalData then
FstringList.Add(ADataSet.FieldByName(AIndexField).AsString+
'|'+ADataSet.FieldByName(ADataField).AsString)
else
FstringList.Add(ADataSet.FieldByName(AIndexField).AsString);
end
else
begin
Self.Items.Add(ADataSet.FieldByName(AIndexField).AsString +
FSeparator + ADataSet.FieldByName(AShowField).AsString);
if FAddtionalData then
FstringList.Add(ADataSet.FieldByName(AIndexField).AsString+
'|'+ADataSet.FieldByName(ADataField).AsString)
else
FstringList.Add(ADataSet.FieldByName(AIndexField).AsString);
end;
end
else
Self.Items.Add(ADataSet.FieldByName(AShowField).AsString);
ADataSet.Next;
end;
except
MessageBox(Handle,'填写下拉框错误,请检查字段是否存在!','错误',MB_ICONERROR);
end;//try..except
ADataSet.GotoBookMark(ABookMark);
ADataSet.FreeBookmark(ABookMark);
end
else
MessageBox(Handle,Pchar(ADataSet.Name+'没有打开'),'错误',MB_ICONERROR);
Self.ItemIndex:=0;//Display First Item
end;
function TcolorDBCombo.GetCurrentID:string;
var str:string;
begin
if ItemIndex <> -1 then
begin
if FAddtionalData then
begin
str:= FStringList.Strings[ItemIndex];
Result:=copy(str,1,Pos('|',str)-1);
end
else
Result:=FStringList.Strings[ItemIndex];
end
else
Result := '';
end;
function TcolorDBCombo.GetCurrentData:string;
var str:string;
begin
if ItemIndex<>-1 then
begin
if FAddtionalData then
begin
str:= FStringList.Strings[ItemIndex];
Result:=copy(str,Pos('|',str)+1,Length(str)-Pos('|',str));
end
else
Result:=FStringList.Strings[ItemIndex];
end
else
Result:='';
end;
function TcolorDBCombo.GetIndexData(const IndexID:integer):string;
var str:string;
begin
if FAddtionalData and (IndexID<>-1) then
begin
str:=FStringList.Strings[IndexID];
Result:=copy(str,Pos('|',str)+1,Length(str)-Pos('|',str));
end
else
result:='';
end;
procedure TcolorDBCombo.SetKeyValue(sVal: string);
var Index:Integer;
str:string;
begin
if sVal='' then exit;
for Index:=0 to FStringList.Count-1 do begin
if FAddtionalData then begin
str:=FStringList.Strings[Index];
str:=copy(str,Pos('|',str)+1,Length(str)-Pos('|',str));
if str=sVal then begin
self.ItemIndex:=Index;
Exit;
end;
end else begin
str:=FStringList.Strings[Index];
if str=sVal then begin
self.ItemIndex:=Index;
Exit;
end;
end;