Шаг 30 - Проект библиотека - Подготовка Ввод/Просмотр других сведений

Сейчас нас будет интересовать кнопка Ввод/Просмотр других сведений. По нажатию, на эту кнопку в Access меняются кнопки.

30_1.gif (2523 b)

По нажатию на кнопку Авторы отроется таблица Авторы. То есть эти кнопки дают нам возможность работать с таблицами, добавлять, удалять и так далее. Но интересно то, что кнопки просто пропадают и появляются новые. Именно этим мы и займемся, то есть реализаций такой возможности в данном шаге. Итак, по нажатию на кнопку Ввод/Просмотр других сведений с диалогового окна должны пропадать кнопки. Создаем функцию ShowButton.

void CBiblioDlg::ShowButton(int iStart, int iFinish, int iShow)
{

}

В параметрах - начало идентификаторов и конец идентификаторов, тип отображения. Почему начало и конец. Давайте посмотрим наш файл с ресурсами Resource.h:

// Group 1>
#define IDC_STATIC_QUIT	1000
#define IDC_BUTTON_BOOK	1001
#define IDC_BUTTON_CITAT	1002
#define IDC_BUTTON_OTHER	1003
#define IDC_BUTTON_REPORT	1004
#define IDC_BUTTON_EDIT	1005
#define IDC_STATIC_BOOK	1006
#define IDC_STATIC_CITAT	1007
#define IDC_STATIC_OTHER	1008
#define IDC_STATIC_REPORT	1009
#define IDC_STATIC_EDITS	1010
// End Group 1

Они идут подряд. Естественно нумерация зависит от того, в какой последовательности производилась вставка, но мы можем и сами перенумеровать при необходимости, просто отредактировав Resource.h. Пишем функцию:

void CBiblioDlg::ShowButton(int iStart, int iFinish, int iShow)
{
	for (int x=iStart;x<=iFinish;x++)
	{
		CWnd *cw=GetDlgItem(x);	// получить окно по идентификатору
		cw->ShowWindow(iShow);	// спрятать элемент управления
	}
}

Вот теперь и напишем реакцию на нажатие кнопки ввод просмотр других сведений.

void CBiblioDlg::OnButtonOther() 
{
	ShowButton(IDC_STATIC_QUIT,IDC_STATIC_EDITS,SW_HIDE);
	ShowButton(IDOK,IDOK,SW_HIDE);	
}

void CBiblioDlg::OnStaticOther() 
{
	OnButtonOther();
}

Нажимая на кнопку все должно пропадать. Но у нас должны появляться другие кнопки. Их нужно поместить на диалоговую панель, только пока установить Visible в FALSE и при запуске диалога их будет не видно.

30_2.gif (4930 b)

Тут же сделаем события реакции.

void CBiblioDlg::OnButtonAuthorform() 
{
	// TODO: Add your control notification handler code here
}

void CBiblioDlg::OnButtonContens() 
{
	// TODO: Add your control notification handler code here
}

void CBiblioDlg::OnButtonExitother() 
{
	// TODO: Add your control notification handler code here
}

Разместим статические надписи.

30_3.gif (4692 b)

Естественно к этим элементам нужна реакция на щелчок которая будет аналогична нажатию на кнопки.

void CBiblioDlg::OnStaticExitform() 
{
	OnButtonExitother();
}

void CBiblioDlg::OnStaticContectForm() 
{
	OnButtonContens();
}

void CBiblioDlg::OnStaticAuthorform() 
{
	OnButtonAuthorform();
}

Теперь по нажатию, но кнопку нужно не только прятать элементы но и показывать невидимые. Вот они в ресурсах.

#define IDC_BUTTON_AUTHORFORM	1012
#define IDC_BUTTON_CONTENS		1013
#define IDC_BUTTON_EXITOTHER	1014
#define IDC_STATIC_AUTHORFORM	1015
#define IDC_STATIC_CONTECT_FORM	1016
#define IDC_STATIC_EXITFORM		1017

А вот новые код.

void CBiblioDlg::OnButtonOther() 
{
	ShowButton(IDC_STATIC_QUIT,IDC_STATIC_EDITS,SW_HIDE);
	ShowButton(IDOK,IDOK,SW_HIDE);	
	ShowButton(IDC_BUTTON_AUTHORFORM,IDC_STATIC_EXITFORM,SW_SHOW);
}

А по нажатию на кнопку выхода в главную форму все наоборот.

void CBiblioDlg::OnButtonExitother() 
{
	ShowButton(IDC_STATIC_QUIT,IDC_STATIC_EDITS,SW_SHOW);
	ShowButton(IDOK,IDOK,SW_SHOW);	
	ShowButton(IDC_BUTTON_AUTHORFORM,IDC_STATIC_EXITFORM,SW_HIDE);
}

Вот так это будет работать.

30_4.gif (17926 b)


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 06.08.2001