Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/48: Рейтинг темы: голосов - 48, средняя оценка - 4.54
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3

dgRowSelect

18.09.2008, 10:06. Показов 9317. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро!!!

Ребята, помогите, пожалуйста.

Написал такую строку...

DBGrid1->Options->dgMultiSelect=true;

А он мне пишет ошибку, вот какую...

[C++ Error] Unit3.cpp(120): E2288 Pointer to structure required on left side of -> or ->*.

В чём может быть причина и как правильно????????????

Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2008, 10:06
Ответы с готовыми решениями:

для DBGrid1 Options->dgRowSelect что это за опция??? Объясните пожалуйста!!!
для DBGrid1 Options->dgRowSelect что это за опция??? Объясните пожалуйста!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
23.09.2008, 10:11
Студворк — интернет-сервис помощи студентам
ставлю галочку - всю строку выделяет, убираю - одно поле... просто ты не забывай еще и про начальную установку, когда окно только создается... а еще я встречал некоторые виды ДБГридов, где run-time настройки вообще игнорируются (TCRDBGrid например)
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
23.09.2008, 10:15  [ТС]
Не, нупрям мистика какая-то, 2 недели мучаюсь и не могу понять в чём причина.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
23.09.2008, 10:16
объясни ты толком, у тебя такой код, как я привел - не работает? что-то я не понимаю никак...
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
24.09.2008, 09:12  [ТС]
Code
1
2
3
4
5
6
7
8
9
if (CheckBox2->Checked)
 
         {
                DBGrid1->Options=DBGrid1->Options<<dgRowSelect;
       else 
         {
               DBGrid1->Options=DBGrid1->Options>>dgRowSelect;
         }
}
Ошибка в синтаксисе:

[C++ Error] Unit3.cpp(128): E2054 Misplaced else

Помоему здесь и так понятно, что последняя скобка закрывающаяся, она должна стоять перед else. Как у Вас этот код мог вообще работать??????????? Сам не знаю.

Но даже когда я ставлю правильно скобку, то выделяется всё равно колонка, а не вся строка.

Не знаю как оно там у Вас работает....

Даю полностью код из DBGrida........
Code
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
//---------------------------------------------------------------------------
 
#include <vcl.h>
 
#pragma hdrstop
 
#include "Unit3.h"
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm3::DBGrid1DrawColumnCell(TObject *Sender,
      const TRect &Rect, int DataCol, TColumn *Column,
      TGridDrawState State)
{
        int i = DBGrid1->DataSource->DataSet->RecNo;//Присвоение порядкового номера строке.
 
        if (CheckBox1->Checked==true)
{
 
 
                if (i % 2 == 1)//Красим не чётные строки
{
 
                DBGrid1->Canvas->Brush->Color=clSkyBlue;
                DBGrid1->Canvas->Font->Color=clBlack;
                DBGrid1->Canvas->FillRect(Rect);
 
 
 
                        if (Column->Alignment==taCenter)
{
                           DBGrid1->Canvas->TextOut(Rect.Right-18-
                           DBGrid1->Canvas->TextWidth(Column->Field->Text),
                           Rect.Top+2,Column->Field->Text); }
 
                                 else
 
                                 DBGrid1->Canvas->TextOut(Rect.Left+2,Rect.Top+2,Column->Field->Text);
}
 
 
                         if (CheckBox1->Checked==false)
{
                            DBGrid1->Canvas->Brush->Color=clWhite;
                            DBGrid1->Canvas->Font->Color=clBlack;
                            DBGrid1->Canvas->FillRect(Rect);}
 
}
 
//-------------------------------------------------------------------------//
//Выделение конкретной строки
                         if (DBGrid1->DataSource->DataSet->RecNo == 10)
{
                        DBGrid1->Canvas->Brush->Color=clGreen;
                        DBGrid1->Canvas->Font->Color=clWhite;
                        DBGrid1->Canvas->FillRect(Rect);
 
                         if (Column->Alignment==taCenter)
{
                         DBGrid1->Canvas->TextOut(Rect.Left+23-
                         DBGrid1->Canvas->TextWidth(Column->Field->Text),
                         Rect.Top+2,Column->Field->Text);
}
 
                                 else
 
                                        DBGrid1->Canvas->TextOut(Rect.Left+2,Rect.Top+2,Column->Field->Text);
}
 
 
 
 
}
//---------------------------------------------------------------------------
void __fastcall TForm3::CheckBox1Click(TObject *Sender)
 
{
 
 
    if (CheckBox1->State==cbChecked)
 
{
        DBGrid1->DataSource->DataSet->First();
 
           {  { keybd_event(VK_TAB, 0, 0 ,0);
                   keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP,0);}
 
                 {  keybd_event(VK_TAB, 0, 0 ,0);
                      keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP,0);}}}
 
 
 
           else if (CheckBox1->State==cbUnchecked)
 
{
              DBGrid1->DataSource->DataSet->Refresh();
 
              {  { keybd_event(VK_TAB, 0, 0 ,0);
                   keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP,0);}
 
                 {  keybd_event(VK_TAB, 0, 0 ,0);
                      keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP,0);}}}
 
 
            
 
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm3::CheckBox2Click(TObject *Sender)
{
 
  if (CheckBox2->Checked)
 
         {
                DBGrid1->Options=DBGrid1->Options<<dgRowSelect; }
       else
         {
                DBGrid1->Options=DBGrid1->Options>>dgRowSelect; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
      /* if (CheckBox2->State==cbChecked)
 
         {
             DBGrid1->DataSource->DataSet->First();
                DBGrid1->Options=DBGrid1->Options<<dgRowSelect;
         {        keybd_event(VK_TAB, 0, 0 ,0);
                   keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP,0);}}
 
 
       else if (CheckBox2->State==cbUnchecked)
 
         {
             DBGrid1->DataSource->DataSet->Refresh();
               DBGrid1->Options=DBGrid1->Options>>dgRowSelect;
         {       keybd_event(VK_TAB, 0, 0 ,0);
                   keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP,0);}} */
}
//---------------------------------------------------------------------------
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.09.2008, 09:29
Цитата Сообщение от Sasha Посмотреть сообщение
Code
1
2
3
4
5
6
7
8
9
10
 
if (CheckBox2->Checked)
 
         {
                DBGrid1->Options=DBGrid1->Options<<dgRowSelect;
       else 
         {
               DBGrid1->Options=DBGrid1->Options>>dgRowSelect;
         }
}
Ошибка в синтаксисе:

[C++ Error] Unit3.cpp(128): E2054 Misplaced else
закрывающей скобки перед else не хватает...
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
24.09.2008, 09:35  [ТС]
Да, не хватает, это и так понятно.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.09.2008, 09:56
я писал по памяти, а не копировал, вот и забыл ту скобку, я лично в проекте прилдепливал этот код и все отлично работает... не могу понять, почему у тебя не работает... слушай, закоментируй на время код прорисовки... просто чтобы только этот код с выделением остался, как тогда будет работать... что-то у меня подозрения возникают, но пока неясные
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
24.09.2008, 10:53  [ТС]
Ладно, с кем небывает!!!!!!!!!!!! Не вижу разницы в комментариях в выделениях строк цветом потому-что, цвета выделяются в CheckBox1, а dgRowSelect в CheckBox2 работает отдельно. Так вот проблемы в CheckBox2..............
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.09.2008, 10:58
ты не понял, просто закоментируй DBGrid1DrawColumnCell, мне кажется, что из-за постоянных перерисовок у тебя и настройки не переключается
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
24.09.2008, 11:18  [ТС]
Не-не, убирал я все прорисовки, оставлял я только один CheckBox2, ничего не получается - это уже пройденный этап.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.09.2008, 11:44
я в замешательстве, ладно бы и у меня такое не выходило, но ведь работает... там вообще написано, что опции эти работаю в design-time, но ведь свойства от редактирования не закрыты, значит и в run-time должно было
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
25.09.2008, 09:16  [ТС]
Даже я сделал с новым DBGrid, для проверки я добавил там 1 checkbox и вписал туда Ваш код и всё равно выделяется только одна колонка, а не вся строка..................

Ну, прям нонсенс какой-то...............!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
25.09.2008, 09:18
это компонент глючит... у меня есть куча вариантов дбгридов и у каждого есть свои заморочки... но я впервые встречаю такую ситуацию...
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
25.09.2008, 09:21  [ТС]
ЧТО ДЕЛАТЬ???????????? Менять кампилятор?????
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
25.09.2008, 09:24
попробуй переставить билдер, может его попустит...
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
25.09.2008, 09:26  [ТС]
Делал это 3 раза!!!!!!!!!!!
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
25.09.2008, 14:21
ты знаешь, у меня уже моск кипит, в дельфи работает, а вот в билдере я не могу никак повторить вчерашний успех, тоже не устанавливается ничего теперь, слушай, может тебе не сушить мозг, а взять rx компоненты, там есть дбгрид, в котором это все точно работает, в проекте у меня одном я именно его использую...
0
1 / 1 / 0
Регистрация: 03.05.2015
Сообщений: 2
04.02.2019, 02:29
Надо так:
C++
1
DBGrid1->Options = TDBGridOptions(DBGrid1->Options) << dgEditing;
0
Модератор
 Аватар для D1973
9910 / 6447 / 2455
Регистрация: 21.01.2014
Сообщений: 27,370
Записей в блоге: 3
04.02.2019, 03:08
MaksimusCorvus, Вы знаете, я думаю, они за 10 прошедших лет уже разобрались...
Тем более, что это не так делается:
C++
1
DBGrid1->Options = TDBGridOptions() << dgRowSelect;
0
1 / 1 / 0
Регистрация: 03.05.2015
Сообщений: 2
04.02.2019, 23:31
Я видел, что это было давно, случайно столкнулся пока сам делал. Вдруг кто будет читать как я, вот и решил оставить. Не злись. Но по твоему коду, пропадает сетка в DBGrid.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru