| 
	 
	
		|  Автор | Сообщение |   
		| Mr.Zakk Wylde Crazy Guitarist
 
   | 
			
				
			  
				| 
 |  
				| В общем ситуация такова - нужно создать базу данных такого типа на MFC 
 
   
 Сначала показалось не трудно, но затем столкнулся с рядом сложностей:
 1) Как сделать ListControl из EditBox'ов, т.е. чтобы заносимые данные можно было редактировать прямо в списке?
 2) Как добавлять элементы в конец списка? Т.е. чтобы они появлялись один за другим - 0,1,2 и т.д. А то у меня появляются так - 0, затем элемент сам сдвигается на позицию 1, а вместо него появляется новый с позицией 0 и т.д.
 Понимаю что здесь нужен цикл для какого-то увеличивающегося I, но что-то я адски туплю и ничего не выходит(
 3) Как считать данные из ListControl'a чтобы он заносил их в файл, а потом загружать их обратно с помощью диалога?
 
 Вот пока основные вопросы, возникшие у меня по ходу выполнения работы.
 Заранее спасибо!
 
 P.S. Советы по поводу MSDN, Google и прочее не нужны. Если бы я там нашел что хотел, сюда бы не обращался.
 |  |   
		|  |  |   
		|  |   
		| Mr.Zakk Wylde Crazy Guitarist
 
   | 
			
				
			  
				| 
 |  
				| Блин блинский!...Это потеря потерь...( |  |   
		|  |  |   
		|  |   
		| dipp Эксперт
 
   | 
			
				
			  
				| 
 |  
				| Если не принципиально создавать свой обработчик для редактирования данных в ячейках, то можно использовать готовый компонент. 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
 
   | 
			
				
			  
				| 
 |  
				| Вот пожалуйста. 
 
 
	  | Код: |  
	  | void 123Dlg::OnBnClickedButton1()
{
 UpdateData(true);
 int i=0;
 LIST.InsertItem(i,(EDIT));// вставляю строку и новое значение ячейки фамилии
 LIST.SetItemText(i, i+1,(EDITBOX));// значение ячейки имени
 i++;
 UpdateData(false);
 
 }
 |  
 Не пашет.
 Цикл нужен.
 |  |   
		|  |  |   
		|  |   
		| dipp Эксперт
 
   | 
			
				
			  
				| 
 |  
				| А теперь правильный ответ: 
 
 
	  | Код: |  
	  | 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");
 //и так далее
 }
 
 |  Результат
 
  |  |   
		|  |  |   
		|  |  
		|  |  
   
	| 
 
 
 Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 Вы не можете вкладывать файлы
 Вы можете скачивать файлы
 
 |  |