Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Базы данных и MFC

725
08 июня 2006 года
UnErase
190 / / 08.06.2006
Что-то копался везде, но так и не нашел пример с использованием метода AddNew() класса CRecordset.
Может кто-нибудь работал с ним и расскажет как использовать этот метод? Сами данные у меня получается из базы вытаскивать, но добавлять что-то не получается, просто не знаю как использовать этот метод, у него нет ни одного параметра. Что делать?

И второй вопрос: как написать на MFC, чтобы в текстовое поле записывалось значение? Не как метод называется, а конкретно как в коде изменять свойства объекта, который находится на форме, например если это текстовое поле. Потому что имя самого текстового поля на форме называется IDC_EDIT1, а в коде не могу понять как обращаться к его свойствам и изменять их! Именно на MFC.

Пожалуйста помогите мне с этим разобраться!
534
09 июня 2006 года
HarryAxe
448 / / 19.01.2006
[QUOTE=UnErase]Что-то копался везде, но так и не нашел пример с использованием метода AddNew() класса CRecordset.
Может кто-нибудь работал с ним и расскажет как использовать этот метод? Сами данные у меня получается из базы вытаскивать, но добавлять что-то не получается, просто не знаю как использовать этот метод, у него нет ни одного параметра. Что делать?

И второй вопрос: как написать на MFC, чтобы в текстовое поле записывалось значение? Не как метод называется, а конкретно как в коде изменять свойства объекта, который находится на форме, например если это текстовое поле. Потому что имя самого текстового поля на форме называется IDC_EDIT1, а в коде не могу понять как обращаться к его свойствам и изменять их! Именно на MFC.

Пожалуйста помогите мне с этим разобраться![/QUOTE]
Создаём с помощью колдуна (wizzard'a) класс, унаследованный от CRecordset, вызываем AddNew(), меняем необходимые нам поля (то бишь переменные-члены унаследованного класса), затем вызываем метод Update() для завершения добавления записи.
Изменить свойства элемента управления можно несколькими способами:
 
Код:
CEdit * pEdit = reinterpret_cast<CEdit *> GetDlgItem(IDC_EDIT1);

А можно создать колдуном переменную для элемента управления. Правой кнопкой на элементе управления, "add variable..." Можно создать control-переменную (к примеру, тот же CEdit), а можно обращаться по значению (Value), к примеру для того же EDIT можно использовать CString, int, double, DWORD и т. п.
725
15 июня 2006 года
UnErase
190 / / 08.06.2006
А каким методом класса CRecordset можно присвоить значения полям, после вызова AddNew();
Или какому массиву полей этого класса, надо присвоить значения которые я хочу добавить, в качестве значений полей в таблице?
534
16 июня 2006 года
HarryAxe
448 / / 19.01.2006
[QUOTE=UnErase]А каким методом класса CRecordset можно присвоить значения полям, после вызова AddNew();
Или какому массиву полей этого класса, надо присвоить значения которые я хочу добавить, в качестве значений полей в таблице?[/QUOTE]
Всё гораздо проще и приятней, чем ты ожидаешь. После создания класса wizzard автоматически генерит приватные переменные, имена которых совпатают с именами соответствующих полей, только предваряются префиксом m_ (смотрим в соответствующем .h файле сгенерированного класса). Для изменения этих значений ничего вызывать не надо, меняем их как обычно. К примеру
 
Код:
set.AddNew();
set.m_MyRecordID = 1;
set.m_Name = L"New record";
set.Update();

По умолчанию для строковых полей колдун создаёт переменные типа CStringW (то есть, строки в формате Unicode), однако ничто не мешает изменить их тип на CString или CStringA в .h файле, конверсия будет происходить автоматически.
725
16 июня 2006 года
UnErase
190 / / 08.06.2006
Все сработало, спасибо!

Когда я это сделал у меня появился еще один вопрос.
Я делаю форму с кнопками, чтобы по щелчку на них шла прокрутка записей, и отображалась в текстовых полях - это у меня получилось, но мне захотелось делать кнопку Disabled = false или true.

В режиме редактирования формы, в окошке properties, такое свойство есть, а вот в самом коде в списке свойств и методов класса CButton я что-то не нашел его. Может подскажешь какую-нибудь литературу, в которой описывается как получать доступ к свойствам различных объектов и изменять их. Ведь даже у кнопки на самом деле много различных свойств: ширина, высота, расположение на форме, различные визуальные свойста и т.д., но как к ним получить доступ, чтобы изменять их значения?

Заранее благодарен!
9.4K
16 июня 2006 года
Savoy
47 / / 04.04.2006
[QUOTE=UnErase]


Я делаю форму с кнопками, чтобы по щелчку на них шла прокрутка записей, и отображалась в текстовых полях - это у меня получилось, но мне захотелось делать кнопку Disabled = false или true.

В режиме редактирования формы, в окошке properties, такое свойство есть, а вот в самом коде в списке свойств и методов класса CButton я что-то не нашел его. Может подскажешь какую-нибудь литературу, в которой описывается как получать доступ к свойствам различных объектов и изменять их. Ведь даже у кнопки на самом деле много различных свойств: ширина, высота, расположение на форме, различные визуальные свойста и т.д., но как к ним получить доступ, чтобы изменять их значения?

Заранее благодарен![/QUOTE]

Можно создать переменную любого объекта через Add Variable(кнопки, эдитбокса, листбокса) типа Сontrol и потом через неё управлять свойствами этого объекта, это через визард, а можно вручную как HarryAxe писал:
CButton* m_pBut = (CButton*)GetDlgItem(IDC_BUTTON1);

ну и потом управлять свойствами, например так:
m_pBut->EnableWindow(false);
534
17 июня 2006 года
HarryAxe
448 / / 19.01.2006
[QUOTE=UnErase]Может подскажешь какую-нибудь литературу, в которой описывается как получать доступ к свойствам различных объектов и изменять их. Ведь даже у кнопки на самом деле много различных свойств: ширина, высота, расположение на форме, различные визуальные свойста и т.д., но как к ним получить доступ, чтобы изменять их значения?

Заранее благодарен![/QUOTE] MFC - достаточно тонкая оболочка над WinAPI, и принципы программирования под Windows она практически не изменяет. Например, для того, чтобы узнать положение и размер элемента управления или окна на экране, существует WinAPI функция GetWindowRect(HWND hwnd, RECT * lpRect). Аналогично в MFC:
 
Код:
CEdit * pEdit = (CEDit *) GetDlgItem(IDC_EDIt1);

CRect rect;
pEdit->GetWindowRect(&rect);
Просто API функции в MFC инкапсулированы в классы-врапперы тех объектов, для работы с которыми они предназначены.
Из литературы посоветовал бы русскую редакцию книги Д. Круглински, С. Уингоу и Дж Шефферда "Программирование на MS VC++ 6.0". Там всё расписано от и до, начиная с простых приложений, основанных на архитектуре "документ/вид", и заканчивая программированием под сети и интернет, работой с базами данных и т. п. Огромная часть книги посвящена COM, автоматизации и OLE, описаны библиотеки наподобие ATL и ещё много полезного. За исключением добавления возможности писать в managed code и включение WTL в базовую поставку Студии, VC++ от шестой версии до восьмой не претерпевал каких-либо существенных изменений.
725
19 июня 2006 года
UnErase
190 / / 08.06.2006
Благодарю за информацию...
И правда хорошая книга, по всему Интернету про неё говорят, что она просто отличная.
Хотел на Ozon.ру посмотреть - продается она там или нет, что-то не увидел.

Кто-нибудь знает в каком Интернет магазине можно купить книгу Д. Круглински, С. Уингоу и Дж Шефферда "Программирование на MS VC++ 6.0"?
534
20 июня 2006 года
HarryAxe
448 / / 19.01.2006
[QUOTE=UnErase]Благодарю за информацию...
И правда хорошая книга, по всему Интернету про неё говорят, что она просто отличная.
Хотел на Ozon.ру посмотреть - продается она там или нет, что-то не увидел.

Кто-нибудь знает в каком Интернет магазине можно купить книгу Д. Круглински, С. Уингоу и Дж Шефферда "Программирование на MS VC++ 6.0"?[/QUOTE]
www.piter.com - сайт издателя
www.books.ru - .Net
www.books.ru - версия 6
yafanat.ru
29K
28 мая 2007 года
Шэры
1 / / 28.05.2007
Можно ли эту книгу выкачать откуда нибудь?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог