Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2009, 12:07   #1
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию Цвет строк в DBGrid по событию

Добрый день.

Как это описать?.....есть три грида:
Грид1-основные данные
Грид2-данные загружаются после нажатия на Грид1
Грид3-данные загружаются после нажатия на Грид2

Вопрос - как мне в событии Грид1DrawColumnCell осуществить проверку на событие Грид3CellClick, для того чтобы по полученным параметрам из Грида3, соответственно выделить цветом строки в Гриде1.
Грид2 и Грид3 при начале работы неактивны.

Что пишу, все не то:
procedure TForm1.ГРИД1DrawColumnCell(Sender: TObject; const Rect: TRect; //цвет строк в гриде
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DBGrid_fixCellClick then--вот на это условие ругается!!!
//begin
//if DataSource_infa_otb_1.DataSet.Field ByName('ORDER#').Value=ADOQuery_sve rkafiksof.FieldByName('ORDER#').Val ue then
//DBGrid1.Canvas.Brush.Color:=clSkyBl ue;
//end;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol,Column,State);
end;

Подскажите пожалуйста, как проверять активность события
if событие then ----какой код?

Спасибо.
funball вне форума Ответить с цитированием
Старый 21.08.2009, 13:35   #2
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию

вы не думайте что мне нужен большой код, мне нужно знать только одно:
- как проверять условие активности события(других объектов формы) из разных процедур(событий)(других объектов формы) программы, .т.е. как записать правильно код типа:

if (если событие скажем DBGrid_fixCellClick произошло) then ??
funball вне форума Ответить с цитированием
Старый 21.08.2009, 13:41   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если событие скажем DBGrid_fixCellClick произошло
А зачем? Что ты хочешь? Выделить текущую ячейку по которой кликнули? Так на это есть arow,acol
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.08.2009, 13:57   #4
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А зачем? Что ты хочешь? Выделить текущую ячейку по которой кликнули? Так на это есть arow,acol
Да, верно, выделить, но в Гриде1. Но у меня сложный алогоритм, что-то типа поиска, данных в таблицах в которых найти примиком нелюзя.
Ну скажем для примера: Найти в списке страниц грида1(где просто номера), те страницы, в котрых встречается скажем слово Delphi(которое есть на гриде3)...(под номерами страниц подразумеваются скажем список слов).
-Нажимаем на грид3
- загружаются данные страниц в которых есть это слово в отдельный ADOQuery
- и уже потом в грде1, нужно по этому действию выделить строки с номером страниц()
Вот аналогия моей задачи))

Как вот мне в DBGrid1DrawColumnCell определить что было DBGridCellClick?
funball вне форума Ответить с цитированием
Старый 22.08.2009, 10:09   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

из справки( F1 + TGridDrawState)

TGridDrawState represents information that is useful when rendering the cell of a grid.

Unit

Grids or QGrids

Delphi syntax:

type TGridDrawState = set of (gdSelected, gdFocused, gdFixed);

C++ syntax:

enum Grids__3 { gdSelected, gdFocused, gdFixed };

typedef Set<Grids_3, gdSelected, gdFixed> TGridDrawState;

Description

TGridDrawState represents state information about the cell of a grid that is being rendered. It is a set that includes 0 or more of the following:

Value Meaning

gdSelected The cell is currently selected.
gdFocused The cell has input focus.
gdFixed The cell is in the fixed region of the grid.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 23.08.2009, 21:59   #6
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию

type TGridDrawState = set of (gdSelected, gdFocused, gdFixed);


А для чего мне состояние TGridDrawState?

Уважаемые опытные программисты, подскажите начинающему испытателю, как определить что произошло на форме определенное событие?
Просьба написать код?:
можно ли в событии DBGrid1DrawColumnCell определить выполнялось или нет событие DBGridCellClick?
funball вне форума Ответить с цитированием
Старый 24.08.2009, 19:54   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

если мы кликнули по какой-то ячейке Grid-а то тем самым мы выбрали эту строку(Ячейку) goSelected
перешли к ее редакции goFocused
а может это был заголовок (fofixed)
изменение состояния ячейки потребовало заново нарисовать ее (вызывает твою процедуру)

Occurs when the user releases the mouse in one of the cells of the grid.

Delphi syntax:

property OnCellClick: TDBGridClickEvent;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 24.08.2009 в 19:57.
evg_m вне форума Ответить с цитированием
Старый 25.08.2009, 05:01   #8
Def_mzk
 
Регистрация: 09.11.2008
Сообщений: 5
По умолчанию

поставь переменную на DBGridCellClick, а потом проверяй изменилась она или нет.
Def_mzk вне форума Ответить с цитированием
Старый 25.08.2009, 12:20   #9
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию

Коллеги, проблема решена следующим образом:
-был добавлен CheckBox, для подтверждения проверки таким образом
-при нажатии на грд3 загружаются данные для поиска в дополнительный ADOQuery и в конце поле загрузки просто добавил Button.Click, по которому грузятся данные в Grid1, для обновления цвета строк в нем.
- а вот так в DrawColumnCell:
procedure TForm1.DBGrid1DrawColumnCell(Sender : TObject; const Rect: TRect; //цвет строк в гриде
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if CheckBox.Checked then
begin
if ADOQuery(грида1).FieldByName('ORDER #').Value=ADOQuery(проверочный).Fie ldByName('ORDER#').Value then
DBGrid1.Canvas.Brush.Color:=clSkyBl ue;
end;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol,Column,State);
end;

и все отлично вроде работает

Один вопрос меня еще в этой ситуации беспокоит:
- как определить что ADOQuery работает?
это нужно для статуса, ведь когда нажимаешь на грид особо не определишь что идет процесс...и все не отвиснет пока не загрузятся данные...

Спасибо.
funball вне форума Ответить с цитированием
Старый 25.08.2009, 12:40   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и все не отвиснет пока не загрузятся данные...
Увы по-моему никак. Не предусмотренно в нем такого.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цвет шрифта таблицы DBGrid doniyor Помощь студентам 5 24.03.2010 19:01
Диффиринцирование строк в DBGrid - ? Evgenii БД в Delphi 5 21.07.2009 08:57
Цвет полоски выделения DBGrid Хитрец БД в Delphi 12 19.04.2009 22:58
Нумерация строк в DBGrid artemavd БД в Delphi 8 15.04.2009 20:31
Количество строк DBGrid AndreyF Общие вопросы Delphi 4 02.12.2008 21:32