Preencher uma caixa de listagem de um segundo conjunto de registros
Por padrão, um modo de exibição do registro está associado a um objeto único conjunto de registros, cujos campos são mapeados para controles o registro do modo de exibição de.Às vezes, convém colocar um lista caixa de combinação ou caixa de listagem controle no modo de exibição do registro e preenchê-lo com valores de um segundo objeto conjunto de registros.O usuário pode usar o lista caixa 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 uma caixa de combinação de preenchimento ou lista caixa a partir de uma fonte de dados pode ser lenta.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 conjunto de registros primário que preenche os controles do formulário, enquanto um conjunto de registros secundário preenche um lista caixa de combinação ou caixa de listagem.Selecionar uma seqüência de caracteres da lista caixa faz com que seu programa repetir a consulta o principal conjunto de registros com base no que foi selecionado.O procedimento a seguir usa uma caixa de combinação, mas se aplica igualmente para um lista caixa.
Para preencher uma caixa de combinação ou caixa de listagem de um segundo conjunto de registros
Criar o objeto de conjunto de registros (CRecordset for ODBC, CDaoRecordset para DAO).
Obter um ponteiro para o CComboBox objeto para o controle de caixa de combinação.
Esvazie a caixa de combinação qualquer Sumário anterior.
Percorrer todos os registros no conjunto de registros, chamada CComboBox::AddString para cada seqüência de caracteres do registro corrente 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 um dos cursos oferecido e um CComboBox controle, m_ctlCourseList, que é armazenada na classe de registro do modo de exibição.
A função obtém m_courseSet do documento e o abre. Esvazia m_ctlCourseList e rola pela m_courseSet. Para cada registro, a função chama AddString função de membro para adicionar o valor de ID do curso do registro. Finalmente, o código define a combinação seleção da caixa de.