Preencher uma caixa de listagem de um segundo conjunto de registros
Por padrão, um modo de exibição do registro está associado um objeto recordset único, cujos campos são mapeados para controles de registro do modo de exibição.Às vezes, convém colocar uma caixa de listagem ou caixa de combinação controlar na exibição do registro e preenchê-lo com valores de um segundo objeto recordset.O usuário pode usar a caixa de listagem para selecionar uma nova categoria de informações a serem exibidas no modo de 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 lento.Tome precauções contra tentando preencher um controle de um conjunto de registros com um grande número de registros. |
O modelo para este tópico consiste em um recordset primário que preenche os controles do formulário, enquanto um conjunto de registros secundário preenche uma caixa de listagem ou caixa de combinação.Selecionar uma seqüência de caracteres na caixa de listagem faz com que seu programa repetir a consulta principal recordset 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
Criar o objeto recordset (CRecordset ODBC, CDaoRecordset para o DAO).
Obter um ponteiro para o CComboBox objeto para o controle de caixa de combinação.
Esvazie a caixa de combinação qualquer conteúdo anterior.
Percorrer todos os registros no conjunto de registros chamando CComboBox::AddString para cada seqüência 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 CComboBox controle, m_ctlCourseList, que é armazenado na classe Exibir registro.
Obtém a função m_courseSet do documento e o abre.Em seguida, ele esvazia m_ctlCourseList e rola m_courseSet.Para cada registro, a função chama a caixa de combinação AddString função de membro para adicionar o valor de identificação do curso do registro.Finalmente, o código define a combinação da seleção da caixa.