Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите разобраться с MFC Grid control  (Прочитано 28375 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Lotor
Гость
« : 09-05-2008 09:08 » 

Здравствуйте! Помогите понять, что я делаю не так. Пишу на MFC. Очень надо вводить табличные данные. Сказали, что для этого существует специальный компонент Grid control. Скачал его от сюда - http://www.codeproject.com/KB/miscctrl/gridctrl.aspx. Как в инструкции добавил в проект нужные файлы:
Цитата
gridctrl.cpp, gridctrl.h
gridcellbase.cpp, gridcellbase.h
gridcell.cpp, gridcell.h
CellRange.h
MemDC.h
InPlaceEdit.cpp, InPlaceEdit.h
GridDropTarget.cpp, GridDropTarget.h
Titletip.cpp, Titletip.h

Потом в редакторе ресурсов поместил на диалог custom control, (Class name=MFCGridCtrl). Компилятор же выдал 3 ошибки.
Цитата
Error 6 error C2065: 'i' : undeclared identifier d:\12345\mfc_gridcontrol\gridctrl_src\gridctrl.cpp 2919
Error 7 error C2065: 'col' : undeclared identifier d:\12345\mfc_gridcontrol\gridctrl_src\gridctrl.cpp 3635
Error 8 error C2065: 'row' : undeclared identifier d:\12345\mfc_gridcontrol\gridctrl_src\gridctrl.cpp 5047

Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 09-05-2008 10:47 » 

Ошибку получил при помещении грида на диалог? А пример компилить можешь?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Lotor
Гость
« Ответ #2 : 09-05-2008 13:58 » 

Да, с примером все ок. А ошибку получаю просто подключив все файлы к проекту. Можно даже не кидать грид на диалог.

Я тут еще нашел статью на Вашем сайте https://club.shelek.ru/viewart.php?id=288 - мне такое замечательно подходит, всё работает, но... Я совсем не понимаю, как мне считать все данных из ячеек в какой-нибудь массив. Потому что потом это все должно отправляться по сети. Может подскажите?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 09-05-2008 15:22 » 

Если срочно, стучись к Лёшке куда только можешь. Он обязательно поможет.

Время ты неудачное выбрал. Праздник всё-таки.

Но насколько я его знаю, он скоро должен появится.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Lotor
Гость
« Ответ #4 : 09-05-2008 15:29 » 

Не очень срочно, в течении мая. Я уже постучался к нему. =) Уже правда научился читать из конкретной ячейки и писать в конкретную ячейку. Но наверняка можно как-нить оптимально сформировать массив всего, что введено...

А по сабжу, так это, оказывается потому, что тот грид писался в 6 студии, а там допускались конструкции, когда объявленная переменная в for распространялась не только на блок цикла.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 09-05-2008 15:45 » 

там допускались конструкции, когда объявленная переменная в for распространялась не только на блок цикла.

А в какой это не так?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 09-05-2008 15:56 » 

Лёшка появился, только его гонют смотреть салют )
Так что чуть позднее. А в асю стукаться щас бесполезно - на форуме обсудим
До связи через пару-тройку (надеюсь) часов ))

(обсуждение грида далее перенесено сюда https://forum.shelek.ru/index.php/topic,15007.0.html)
« Последнее редактирование: 08-03-2009 17:29 от Алексей1153++ » Записан

vialya25
Гость
« Ответ #7 : 25-03-2009 10:45 » 

Здравствуйте. Помогите разобраться.
Пишу на MFC. VC 6.0

Использую MFC Grid Control. C опцией "Use MFC in a Static Library" все работает.
Но в приложении нужно использовать "Use MFC in a Shared DLL". Вот тут то мой грид и перестаёт работать.
Вылетает на DDX_GridControl.

Заранее благодарен.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #8 : 25-03-2009 11:19 » 

Где он перестаёт работать?  У тебя или на целевой системе?

В любом случае проверяй версии MFC библиотек.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
vialya25
Гость
« Ответ #9 : 25-03-2009 12:48 » 

Цитата
Где он перестаёт работать?  У тебя или на целевой системе?

В любом случае проверяй версии MFC библиотек.

Вылетает и у меня и на целевой системе....

окошко такого типа:

Debug   Assertion   Failed!   
  Program:......   
  File:olelink.cpp   
  Line:82 

файл olelink чтоли старый?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #10 : 25-03-2009 13:07 » 

Нет, просто та версия dll, которая берётся при динамической линковке, не совпадает с версией, с которой бинарники компилируются.

Например (ничего конкретного и общего с реальностью - всё придумано).

 В файле olelink.cpp, который был взят для компилирования версии 12345, в строчке 82 стоит ASSERT(FALSE); - например вызов этой ф-ции void ABC() был зарезервирован и её никто не использовал. В новой же версии olelink.cpp в строчке 82 стоит ASSERT(pCtrl!=NULL); и эта версия копмилируется в библиотеку с версией 12346.

В Студии пути настроены на НОВУЮ библиотеку версии 12346 и поэтому, если ты компилишь её статически, всё в порядке. При динамической подгрузке будет взята библиотека, которая находится в system32 и это не обязательно 12346, а скорей всего 12345. Поэтому ты видишь ASSERT.
 
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
vialya25
Гость
« Ответ #11 : 25-03-2009 13:52 » 

Чтобы закрыть вопрос хотелось бы уточнить:

Взял файл olelink из Visual Studio 7. Ничего не поменялось.

Перекомпилировал проект в релизную версию. В релизе работает и в "in a Stalic library"  и в "in a shared Dll".

Цитата
В Студии пути настроены на НОВУЮ библиотеку версии 12346 и поэтому, если ты компилишь её статически, всё в порядке. При динамической подгрузке будет взята библиотека, которая находится в system32 и это не обязательно 12346, а скорей всего 12345. Поэтому ты видишь ASSERT.

Может подскажете как настроить пути в debug в Visual 6 на нужную версию DLL?

А то в релиз работает ..хочется и в дебаге..
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #12 : 25-03-2009 17:05 » 

В Release у тебя работает, потому что ASSERT работает ТОЛЬКО в дебаге. Ага В релизе она у тебя просто не вызывается. Так что проблема не в этом. Тебе надо с твоей прогой поставлять нужную версию библиотеки.

Сделай поиск по диску С: на MFC*.dll выпиши версии каждой dll и выложи здесь с путями к ним. ВСё сразу станет ясно.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
vialya25
Гость
« Ответ #13 : 06-04-2009 11:53 » 

Решил вопрос...

"Проблема " была в mfco42d.dll...поменял на другую версию и всё стало работать...
Благодрен.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #14 : 06-04-2009 12:02 » 

На будущее, всегда делай список используемых твоей прогой dll и их версий, если потом на целевой машине не будет по аналогичной причине не будет работать, всегда можно будет сравнить установленные dll с требуемыми и "легко" устранить неполадку.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Boriska
Помогающий

us
Offline Offline

« Ответ #15 : 01-01-2013 12:56 » new

Народ привет. У меня есть диалог на нем MFC Grid control 2.27. Покапался все активировал, заполняю грид рабоатет. Но вот нужно было обработать клик по ячейке грида ничего лучшего не нашел как внедритьтся в OnBtnClick этого грида дописать туда свои строки которые по переданному в CGridCtrl указателю на мой класс вызыали функции моего класса. Вот теперь мне надо сделать реакцию на перемещение строки по гриду клавишами стрелок это опять лезть в OnKeyDown(.....). кажется я сильно не прав. Может кто подскажет как ловить сообщения в классе диалога куда встроен этот грид?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines