adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
База данных на MFC
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ
Автор Сообщение
Mr.Zakk Wylde
Crazy Guitarist
СообщениеДобавлено: Сб 11-04-09 : 01-09    Заголовок сообщения: База данных на MFC Ответить с цитатой

В общем ситуация такова - нужно создать базу данных такого типа на MFC



Сначала показалось не трудно, но затем столкнулся с рядом сложностей:
1) Как сделать ListControl из EditBox'ов, т.е. чтобы заносимые данные можно было редактировать прямо в списке?
2) Как добавлять элементы в конец списка? Т.е. чтобы они появлялись один за другим - 0,1,2 и т.д. А то у меня появляются так - 0, затем элемент сам сдвигается на позицию 1, а вместо него появляется новый с позицией 0 и т.д.
Понимаю что здесь нужен цикл для какого-то увеличивающегося I, но что-то я адски туплю и ничего не выходит(
3) Как считать данные из ListControl'a чтобы он заносил их в файл, а потом загружать их обратно с помощью диалога?

Вот пока основные вопросы, возникшие у меня по ходу выполнения работы.
Заранее спасибо!

P.S. Советы по поводу MSDN, Google и прочее не нужны. Если бы я там нашел что хотел, сюда бы не обращался.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Mr.Zakk Wylde
Crazy Guitarist
СообщениеДобавлено: Сб 11-04-09 : 14-56    Заголовок сообщения: Ответить с цитатой

Блин блинский!...Это потеря потерь...(
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
dipp
Эксперт
СообщениеДобавлено: Сб 11-04-09 : 18-24    Заголовок сообщения: Ответить с цитатой

Если не принципиально создавать свой обработчик для редактирования данных в ячейках, то можно использовать готовый компонент.
http://www.codeproject.com/KB/list/Extended_List_Control.aspx

Добавление итемов последовательно делается очень просто:
Код:
int i=0;
ListCtrl.AddItem(i, "text");
//добавляем субитемы
ListCtrl.SetItem(i, 1, "name");
ListCtrl.SetItem(i, 2, "group");
//новый итем
i++;
ListCtrl.AddItem(i, "text2");
...


Данные считываются через
Код:
CString GetItemText(
   int nItem,
   int nSubItem
) const;

Записывать и читать можно через sprintf() и sscanf() в цикле.
При сохранении вытаскивать данные из столбиков и сохранять их в виде "%s\t%s\t%s" (разделять через табуляцию), потом sscanf'ом считывать, он все раскидает как надо.

p.s. В МСДНе и Гугле все прекрасно ищется.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Mr.Zakk Wylde
Crazy Guitarist
СообщениеДобавлено: Сб 11-04-09 : 21-55    Заголовок сообщения: Ответить с цитатой

Вот пожалуйста.
Код:
void 123Dlg::OnBnClickedButton1()
{
   UpdateData(true);
   int i=0;
   LIST.InsertItem(i,(EDIT));// вставляю строку и новое значение ячейки фамилии
   LIST.SetItemText(i, i+1,(EDITBOX));// значение ячейки имени
   i++;
   UpdateData(false);
   
}


Не пашет.
Цикл нужен.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
dipp
Эксперт
СообщениеДобавлено: Сб 11-04-09 : 22-15    Заголовок сообщения: Ответить с цитатой

А теперь правильный ответ:
Код:
void ClistctrltestDlg::OnBnClickedButton1()
{
   //выделяем всю строку
   listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);

   listctrl.InsertColumn(0, L"Name",0, 100);
   listctrl.InsertColumn(1, L"Surname",0, 100);
   listctrl.InsertColumn(2, L"Group",0, 100);

   int i=0;
   listctrl.InsertItem(i, L"johny");
   listctrl.SetItemText(i, 1, L"blade");
   listctrl.SetItemText(i, 2, L"pp2-55");

   i++;
   listctrl.InsertItem(i, L"michael");
   listctrl.SetItemText(i, 1, L"stinson");
   listctrl.SetItemText(i, 2, L"pp2-54");

   i++;
   listctrl.InsertItem(i, L"vova");
   listctrl.SetItemText(i, 1, L"putin");
   listctrl.SetItemText(i, 2, L"pp2-51");
   //и так далее
}

Результат
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ Часовой пояс: GMT + 7
Страница 1 из 1

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы