Não tenho mas segue abaixo o trecho de código onde adiciono as cidades pra você usar como exemplo:
// Verifica se o municipio de carregamento já foi adicionado
iIndex := -1;
iCodCid := StrToIntDef(qryCTe.FieldByName('CMUNINI').AsString,0);
for i := 0 to Ide.infMunCarrega.Count - 1 do
begin
if ( Ide.infMunCarrega.Items[i].cMunCarrega = iCodCid ) then
begin
iIndex := i;
Break;
end;
end;
// Se o município ainda não foi adicionado, adiciona
if ( iIndex < 0 ) then
begin
with Ide.infMunCarrega.Add do
begin
cMunCarrega := iCodCid;
xMunCarrega := qryCTe.FieldByName('XMUNINI').AsString;
end;
end;
// Verifica se o municipio de descarregamento já foi adicionado
iIndex := -1;
iCodCid := StrToIntDef(qryCTe.FieldByName('CMUNFIM').AsString,0);
for i := 0 to infDoc.infMunDescarga.Count - 1 do
begin
if ( infDoc.infMunDescarga.Items[i].cMunDescarga = iCodCid ) then
begin
iIndex := i;
Break;
end;
end;
// Se o município ainda não foi adicionado, adiciona
if ( iIndex < 0 ) then
begin
with infDoc.infMunDescarga.Add do
begin
cMunDescarga := iCodCid;
xMunDescarga := qryCTe.FieldByName('XMUNFIM').AsString;
infCTe.Add.chCTe := qryCTe.FieldByName('CTE_CHAVE').AsString;
end;
end
else
begin
// Se o municipio já foi adicionado, adiciona apenas a chave do cte
infDoc.infMunDescarga.Items[iIndex].infCTe.Add.chCTe := qryCTe.FieldByName('CTE_CHAVE').AsString;
end;