Preenchendo uma caixa de listagem de um segundo conjunto de registros (Acesso a dados MFC)
Por padrão, uma exibição do registro está associada a objeto de um conjunto de registros único, cujos campos são mapeados para os controles de exibição do registro. Às vezes, convém colocar um controle de caixa de listagem ou caixa de combinação na exibição do registro e preenchê-lo com valores de um segundo objeto do conjunto de registros. O usuário pode usar a caixa de listagem para selecionar uma nova categoria de informações a serem exibidas na exibição do registro. Este tópico explica como e quando fazer isso.
Dica
Lembre-se de que o preenchimento de uma caixa de combinação ou caixa de listagem de uma fonte de dados pode ser lenta.Tome precauções contra tentar preencher um controle de um conjunto de registros com um grande número de registros.
O modelo referente a este tópico consiste em um conjunto de registros primário que preenche os controles do formulário, enquanto um conjunto de registros secundário preenche uma caixa de listagem ou combinação. A seleção de uma cadeia de caracteres na caixa de listagem faz com que o programa consulte novamente o conjunto de registros primário com base no que foi selecionado. O procedimento a seguir usa uma caixa de combinação, mas aplica-se igualmente a uma caixa de listagem.
Para preencher uma caixa de combinação ou caixa de listagem de um segundo conjunto de registros
Crie o objeto do conjunto de registros (CRecordset para ODBC, CDaoRecordset para DAO).
Obtenha um ponteiro para o objeto CComboBox para o controle de caixa de combinação.
Esvazie a caixa de combinação de qualquer conteúdo anterior.
Percorra todos os registros no conjunto de registros chamando CComboBox::AddString para cada cadeia de caracteres do registro atual que você deseja adicionar à caixa de combinação.
Inicialize a seleção na caixa de combinação.
void CSectionForm::OnInitialUpdate()
{
// ...
// Fill the combo box with all of the courses
CENROLLDoc* pDoc = GetDocument();
if (!pDoc->m_courseSet.Open())
return;
// ...
m_ctlCourseList.ResetContent();
if (pDoc->m_courseSet.IsOpen())
{
while (!pDoc->m_courseSet.IsEOF() )
{
m_ctlCourseList.AddString(
pDoc->m_courseSet.m_CourseID);
pDoc->m_courseSet.MoveNext();
}
}
m_ctlCourseList.SetCurSel(0);
}
Essa função usa um segundo conjunto de registros m_courseSet, que contém um registro para cada curso oferecido e um controle CComboBox, m_ctlCourseList, que é armazenado na classe de exibição do registro.
A função obtém m_courseSet do documento e o abre. Em seguida, esvazia m_ctlCourseList e rola pelo m_courseSet. Para cada registro, a função chama a função membro AddString da caixa de combinação para adicionar o valor da ID do curso do registro. Por fim, o código define a seleção da caixa de combinação.