![]() |
|
![]() ![]() ![]() |
|
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Всем привет! решил я значит разукрасить DBGridEh, но столкнулся со сл. проблемой!
1. Сначала при создании события DBGridEh1GetCellParams, при компиляции появляется ошибка [BCC32 Error] Main_Unit.h(98): E2015 Ambiguity between 'TGridDrawState' and 'Gridseh::TGridDrawState' Full parser context Main_Unit.cpp(6): #include Main_Unit.h Main_Unit.h(44): class TMain_Form Я это дело правлю, но при каждой компиляции выводится сообщение: ![]() Можно ли от него избавиться? 2. В событии DBGridEh1GetCellParams пишу такой код:
Компилирую все это дело и как только должно открыться главное окно, слышен звук как при ошибке, но сообщений не выводится и программа подвисает! Сначала думал, это из-за того, что сначала я руками добавляю нужные мне поля в DBGridEh, и потом делаю коннект к базе, но добавив поле при проектировании и написав запрос для вывода строк, заново откомпилировал, Ничего не изменилось: звук и зависание программы. поправил код, оставил только Background = clGray; Так все прокатило, все строчки у меня закрасились нужным цветом. Отсюда сделал вывод, что ошибка возникает, как только пытаюсь работать с полями... :( Но надо чтобы все заработало! Прошу помощи! Это сообщение отредактировал(а) vikaz - 17.1.2010, 10:33 -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
вторая проблема была успешна решена! Дело оказалось в том что нельзя делать вот так:
т.е. если создается поле, оно должно быть ОБЯЗАТЕЛЬНО связанно с полем в таблице. Иначе...... Осталось по первому вопросу решить, а то уже достало это сообщение!!! ![]() Это сообщение отредактировал(а) vikaz - 17.1.2010, 11:14 -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
_Dimon_ |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 25.6.2007 Где: Украина Репутация: 1 Всего: 1 |
Как правите? Если эта функция будет написана в *.h файле
и в *.cpp файле
то будет все нормально. А почему вы не везде пользуетесь DBGridEh? Я бы заменил все DBGrid на DBGridEh и тогда и проблемы этой не будет... |
||||
|
|||||
vikaz |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
конструктор создает в h и cpp файле сл. код: h
CPP
Я правлю его на: h
CPP
Я везде использую DBGridEh! Интересно, а с чего Вы решили, что я использую и просто и Eh? ![]() -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
||||||||
|
|||||||||
_Dimon_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 25.6.2007 Где: Украина Репутация: 1 Всего: 1 |
||||
|
||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
В Grid выводятся различные значения, часть значений имеет специфичное значение (0 или 1, или еще какие-то, не суть важно), как визуально подменить значение, т.е. как сделать так, чтобы вместо 1 выводилось ОК, вместо 0 - Ошибка?
Добавлено через 1 минуту и 52 секунды зы: в *.h есть: #include "DBGridEh.hpp" #include "GridsEh.hpp" -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Нашел на одном сайте вот такое хитрое решение:
Чтоб работало и компилятор не ругался нужно изменить имя TGridDrawState на любое другое (напр. TGridDrawStateee) в файлах (можно открыть в блокноте и выбрать заменить все) Include\Vcl\grids.hpp Include\Vcl\dbgrids.hpp Source\vcl\grids.pas Source\vcl\dbgrids.pas и все стало работать как часы 8-) Это для старой компоненты! Я же просто нашел все hpp и pas файлы, где есть TGridDrawState и сделал вышеописанную замену - ВРОДЕ ВСЕ РАБОТАЕТ! ![]() -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
vikaz |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Как обработать TField->OnGetText в DBGridEh? (Решён!!!)
Один из способов подменить текст в DBGrid на нужный - использовать событие OnGetText. У Всех источников для работы с БД (Query, Table ...) есть свойство Filelds, который позволяет задавать определенные поля. У каждого такого поля, есть событие OnGetText, который позволяет изменять текст именно в этом поле. для изменения значения пишет сл. код:
После этого кода в поле Status все числовые значения будут заменены на текстовые. Для того, чтобы подменять значения в динамически изменяемых полях, нужно: 1. в *.h файле создать обработчик, а в *.cpp файле его описать (пример): *.h файл
*.cpp файл
2. Связать определенное поле с функцией UniQuery_GetText Тут надо быть аккуратнее, нужно связать поле с UniQuery_GetText только после того, как поле будет создано и данные появятся в DbGrid. Иначе можно словить AV. пример:
Это сообщение отредактировал(а) vikaz - 18.1.2010, 16:08 -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
||||||||||
|
|||||||||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |