powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Win 32 Application создать Grid
23 сообщений из 23, страница 1 из 1
Win 32 Application создать Grid
    #39159074
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[spoiler Grid в Win 32 Application]
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
[SIZE=3]Кто-нить пробовал ?[/SIZE]

Итак нам нужны классы для того что бы использовать DBGRID в проекте. Их нужно три класса.
 
Где их взять? При добавлении элемента OCX в проект они автоматически создаются как в шаге "Шаг 362 - DBGrid иVC устанавливаем на диалог". Вам нужно добавить в проект эти файлы. Если вам лень грузите из из проекта на сайте. Кстати там будет и OCX файл на всякий случай. Ну все можно создавать проект. В класс вида включить ссылку на класс GRID.
#endif // _MSC_VER > 1000
#include "msdgridctrl.h"

class CTestViewGridView : public Cview
......
Объявить переменную типа CMsDgridCtrl.
class CTestViewGridView : public CView
{
protected: // create from serialization only
	CTestViewGridView();
	DECLARE_DYNCREATE(CTestViewGridView)

// Attributes
public:
	CTestViewGridDoc* GetDocument();

private:
	CMsDgridCtrl cmg;
// Operations
public:
........
};
В момент создания окна создается и GRID.
////////////////////////////////////
// CTestViewGridView message handlers

int CTestViewGridView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	CRect rc;
	GetClientRect(&rc);
	cmg.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 400, 200), this, 1234);
	cmg.ShowWindow(SW_SHOW); 
	return 0;
}
В момент изменения размеров меняется и GRID:
void CTestViewGridView::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	cmg.MoveWindow(CRect(0,0,cx, cy)); 
}
А вот так выглядит наше приложение.
 


В прошлом шаге мы вставили класс GRID в вид, нам нужно обрабатывать события и AppWizard здесь не помощник будем делать ручками. Объявляем в классе вида что у нас будут извещения.
class CTestViewGridView : public CView
{
protected: // create from serialization only
	CTestViewGridView();
	DECLARE_DYNCREATE(CTestViewGridView)
	DECLARE_EVENTSINK_MAP()
// Attributes
public:
	CTestViewGridDoc* GetDocument();

private:
	CMsDgridCtrl cmg;
// Operations
......
};
Реализуем эту таблицу обработки извещений.
BEGIN_EVENTSINK_MAP(CTestViewGridView, CView)
  	ON_EVENT(CMsDgridCtrl, IDC_DBGRID1, -602 /* KeyDown */, OnKeyDownDbgrid1, VTS_PI2 VTS_I2)
END_EVENTSINK_MAP()
Первый параметр это класс, второй идентификатор элемента, его нужно использовать в Create.
int CTestViewGridView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	CRect rc;
	GetClientRect(&rc);
	cmg.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 400, 200), this, IDC_DBGRID1);
	cmg.ShowWindow(SW_SHOW); 
	return 0;
}
Дальше идет номер метода, откуда его брать. Проше всего сделать как в "Шаг 363 - Обработка событий DBGRID в VC", получить эту строку и перенести в проект класса с видом. Вообщем передрать можно все кстати и описание функции реакции.
class CTestViewGridView : public CView
{
protected: // create from serialization only
	CTestViewGridView();
	DECLARE_DYNCREATE(CTestViewGridView)
	DECLARE_EVENTSINK_MAP()
// Attributes
public:
......
public:
	afx_msg void OnKeyDownDbgrid1(short FAR* KeyCode, short Shift);
	virtual ~CTestViewGridView();
#ifdef _DEBUG
};

Ну и реализовать саму функцию
void CTestViewGridView::OnKeyDownDbgrid1(short FAR* KeyCode, short Shift)
{
	AfxMessageBox("OK");
}
Запускаем и смотрим:
 


[/poiler/]
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159075
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grid в Win 32 Application
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
[SIZE=3]Кто-нить пробовал ?[/SIZE]

Итак нам нужны классы для того что бы использовать DBGRID в проекте. Их нужно три класса.
 
Где их взять? При добавлении элемента OCX в проект они автоматически создаются как в шаге "Шаг 362 - DBGrid иVC устанавливаем на диалог". Вам нужно добавить в проект эти файлы. Если вам лень грузите из из проекта на сайте. Кстати там будет и OCX файл на всякий случай. Ну все можно создавать проект. В класс вида включить ссылку на класс GRID.
#endif // _MSC_VER > 1000
#include "msdgridctrl.h"

class CTestViewGridView : public Cview
......
Объявить переменную типа CMsDgridCtrl.
class CTestViewGridView : public CView
{
protected: // create from serialization only
	CTestViewGridView();
	DECLARE_DYNCREATE(CTestViewGridView)

// Attributes
public:
	CTestViewGridDoc* GetDocument();

private:
	CMsDgridCtrl cmg;
// Operations
public:
........
};
В момент создания окна создается и GRID.
////////////////////////////////////
// CTestViewGridView message handlers

int CTestViewGridView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	CRect rc;
	GetClientRect(&rc);
	cmg.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 400, 200), this, 1234);
	cmg.ShowWindow(SW_SHOW); 
	return 0;
}
В момент изменения размеров меняется и GRID:
void CTestViewGridView::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	cmg.MoveWindow(CRect(0,0,cx, cy)); 
}
А вот так выглядит наше приложение.
 


В прошлом шаге мы вставили класс GRID в вид, нам нужно обрабатывать события и AppWizard здесь не помощник будем делать ручками. Объявляем в классе вида что у нас будут извещения.
class CTestViewGridView : public CView
{
protected: // create from serialization only
	CTestViewGridView();
	DECLARE_DYNCREATE(CTestViewGridView)
	DECLARE_EVENTSINK_MAP()
// Attributes
public:
	CTestViewGridDoc* GetDocument();

private:
	CMsDgridCtrl cmg;
// Operations
......
};
Реализуем эту таблицу обработки извещений.
BEGIN_EVENTSINK_MAP(CTestViewGridView, CView)
  	ON_EVENT(CMsDgridCtrl, IDC_DBGRID1, -602 /* KeyDown */, OnKeyDownDbgrid1, VTS_PI2 VTS_I2)
END_EVENTSINK_MAP()
Первый параметр это класс, второй идентификатор элемента, его нужно использовать в Create.
int CTestViewGridView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	CRect rc;
	GetClientRect(&rc);
	cmg.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 400, 200), this, IDC_DBGRID1);
	cmg.ShowWindow(SW_SHOW); 
	return 0;
}
Дальше идет номер метода, откуда его брать. Проше всего сделать как в "Шаг 363 - Обработка событий DBGRID в VC", получить эту строку и перенести в проект класса с видом. Вообщем передрать можно все кстати и описание функции реакции.
class CTestViewGridView : public CView
{
protected: // create from serialization only
	CTestViewGridView();
	DECLARE_DYNCREATE(CTestViewGridView)
	DECLARE_EVENTSINK_MAP()
// Attributes
public:
......
public:
	afx_msg void OnKeyDownDbgrid1(short FAR* KeyCode, short Shift);
	virtual ~CTestViewGridView();
#ifdef _DEBUG
};

Ну и реализовать саму функцию
void CTestViewGridView::OnKeyDownDbgrid1(short FAR* KeyCode, short Shift)
{
	AfxMessageBox("OK");
}
Запускаем и смотрим:
 


...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159105
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,
если ты хочешь использовать ActiveX control Microsoft DBGrid, то я сразу же не-а советую тебе это делать.

Очень дурацкий.

рекомендую использовать стандартный контрол SysListView32.

Конечно, возможно какое-то применение и DBGrid, но учти, что с такими понятиями как удобство, кастомизация придется сразу распрощаться...
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159141
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛизоблюд,
если ты хочешь использовать ActiveX control Microsoft DBGrid, то я сразу же не-а советую тебе это делать.

Очень дурацкий.

рекомендую использовать стандартный контрол SysListView32.

Конечно, возможно какое-то применение и DBGrid, но учти, что с такими понятиями как удобство, кастомизация придется сразу распрощаться...
Но ведь это список, а мне нужна таблица.
Можно самому создать таблицу ?
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159150
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд Но ведь это список, а мне нужна таблица.
Можно самому создать таблицу ?
Таблица это структура. Сделать не сложно, но хотелось и визуальное представление как FlexGrid
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159167
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдНо ведь это список, а мне нужна таблица.
В режиме "Report" это очень даже таблица.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159212
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдMasterZivЛизоблюд,
если ты хочешь использовать ActiveX control Microsoft DBGrid, то я сразу же не-а советую тебе это делать.

Очень дурацкий.

рекомендую использовать стандартный контрол SysListView32.

Конечно, возможно какое-то применение и DBGrid, но учти, что с такими понятиями как удобство, кастомизация придется сразу распрощаться...
Но ведь это список, а мне нужна таблица.
Можно самому создать таблицу ?


Почитай внимательно документацию.
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159213
Sheraton_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зачем использовать трупные технологии, проще использовать wxWidgets в которой есть wxGrid.
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159226
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sheraton_Зачем использовать трупные технологии, проще использовать wxWidgets в которой есть wxGrid.
Линуксовая абракадабра.
А как насчет QT? стоит заморачиваться ?
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159275
Sheraton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдЛинуксовая абракадабра.
А как насчет QT? стоит заморачиваться ?

При чем тут линукс? Ты можешь всю жизнь пользоваться wxWidgets и даже не знать, что эта библиотека позволяет собирать приложения не только под Win но и под Linux и Mac. wxWidgets удобная и компактная (в сравнении с Qt) библиотека, которая создает быстродействующие интерфейсы. С wxWidgets просто приятно работать вне зависимости от операционной системы. Отличительной особенностью библиотеки wxWidgets является то, что она использует родные виджеты (контролы) из операционной системы (при наличии таковых разумеется). Кто-то считает это недостатком, а кто-то преимуществом, у каждого свои цели. Учитывая, что родного виджета (контрола) Grid для операционных систем нет, то wxWidgets использует свой, т.е. созданный в wxWidgets.

Qt как и wxWidgets и GTK+ имеет свои преимущества и недостатки. Каждый выбирает библиотеку для своих нужд и целей. Но при всех недостатках и достоинствах, Qt гораздо лучше чем MFC, C#, Java и прочей ереси.
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159290
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sheraton Qt как и wxWidgets и GTK+ имеет свои преимущества и недостатки. Каждый выбирает библиотеку для своих нужд и целей. Но при всех недостатках и достоинствах, Qt гораздо лучше чем MFC, C#, Java и прочей ереси.
Пробовал скачивать. Качается только документация.
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159291
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдSheraton Qt как и wxWidgets и GTK+ имеет свои преимущества и недостатки. Каждый выбирает библиотеку для своих нужд и целей. Но при всех недостатках и достоинствах, Qt гораздо лучше чем MFC, C#, Java и прочей ереси.
Пробовал скачивать. Качается только документация.
И еще вопрос насколько эта библиотека стыкуется с win 32 Application.
Если работать с AppWizard[exe], то меня FlexGrid вполне устраивает.
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159292
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдЛизоблюдпропущено...

Пробовал скачивать. Качается только документация.
И еще вопрос насколько эта библиотека стыкуется с win 32 Application.
Если работать с AppWizard[exe], то меня FlexGrid вполне устраивает.
Если переходить с AppWizard[exe] на win 32 Application, то меня интересует только grid. С остальными элементами у меня проблем нет.
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159295
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал разбираться с CGrid в MFC, т.к. примеры либо для win API, либо на сайтах с непонятным доступом.
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159414
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛизоблюд,
если ты хочешь использовать ActiveX control Microsoft DBGrid, то я сразу же не-а советую тебе это делать.

Очень дурацкий.

рекомендую использовать стандартный контрол SysListView32.

Конечно, возможно какое-то применение и DBGrid, но учти, что с такими понятиями как удобство, кастомизация придется сразу распрощаться...
А где посмотреть коду создания и работы ?
То, что я находил, какие-то обрывки кодов.
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159424
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
старенького babygrid может достаточно будет?
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159425
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдSheraton_Зачем использовать трупные технологии, проще использовать wxWidgets в которой есть wxGrid.
Линуксовая абракадабра.
А как насчет QT? стоит заморачиваться ?

Стоит.
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159427
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдНачал разбираться с CGrid в MFC, т.к. примеры либо для win API, либо на сайтах с непонятным доступом.

Нет такого класса в MFC.
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159440
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень много всего на сайте(см.картинку). Но вход по регистрации, а условия пользования какие-то мутные (чота пра финансы).
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159696
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, на codeproject очень много разных вариантов гридов, и извращений с ними.
Хороших я там не помно, да вообще сайт печально знаменит обильным количеством говнокода.

Хотя конечно за все варианты гридов я не могу отвечать (что все плохие), ну и точно даже
плохие варианты могут натолкнуть на мысли для новых реализаций.
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159734
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

Надо отталкиваться от задачи. Что от гриды требуется?

Вообще ListView32 довольно гибкая штука: цвета, виртуальность, привязка к данным. Можно для удобства за пару часов написать свой враппер для работы с.
Вот про кастомную высоту ячеек не помню только...
При желании простая добротная грида делается за неделю :)
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159751
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюд,

Надо отталкиваться от задачи. Что от гриды требуется?

Вообще ListView32 довольно гибкая штука: цвета, виртуальность, привязка к данным. Можно для удобства за пару часов написать свой враппер для работы с.
Вот про кастомную высоту ячеек не помню только...
При желании простая добротная грида делается за неделю :)
Где хоть что-нибудь по ней можно посмотреть ?
...
Рейтинг: 0 / 0
Win 32 Application создать Grid
    #39159799
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

В MSDN,как ни странно...
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Win 32 Application создать Grid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]