|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.08.2009, 12:07 | #1 |
Пользователь
Регистрация: 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 ----какой код? Спасибо. |
21.08.2009, 13:35 | #2 |
Пользователь
Регистрация: 13.04.2009
Сообщений: 44
|
вы не думайте что мне нужен большой код, мне нужно знать только одно:
- как проверять условие активности события(других объектов формы) из разных процедур(событий)(других объектов формы) программы, .т.е. как записать правильно код типа: if (если событие скажем DBGrid_fixCellClick произошло) then ?? |
21.08.2009, 13:41 | #3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
21.08.2009, 13:57 | #4 | |
Пользователь
Регистрация: 13.04.2009
Сообщений: 44
|
Цитата:
Ну скажем для примера: Найти в списке страниц грида1(где просто номера), те страницы, в котрых встречается скажем слово Delphi(которое есть на гриде3)...(под номерами страниц подразумеваются скажем список слов). -Нажимаем на грид3 - загружаются данные страниц в которых есть это слово в отдельный ADOQuery - и уже потом в грде1, нужно по этому действию выделить строки с номером страниц() Вот аналогия моей задачи)) Как вот мне в DBGrid1DrawColumnCell определить что было DBGridCellClick? |
|
22.08.2009, 10:09 | #5 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
из справки( 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.
программа — запись алгоритма на языке понятном транслятору
|
23.08.2009, 21:59 | #6 |
Пользователь
Регистрация: 13.04.2009
Сообщений: 44
|
type TGridDrawState = set of (gdSelected, gdFocused, gdFixed);
А для чего мне состояние TGridDrawState? Уважаемые опытные программисты, подскажите начинающему испытателю, как определить что произошло на форме определенное событие? Просьба написать код?: можно ли в событии DBGrid1DrawColumnCell определить выполнялось или нет событие DBGridCellClick? |
24.08.2009, 19:54 | #7 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
если мы кликнули по какой-то ячейке 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. |
25.08.2009, 05:01 | #8 |
Регистрация: 09.11.2008
Сообщений: 5
|
поставь переменную на DBGridCellClick, а потом проверяй изменилась она или нет.
|
25.08.2009, 12:20 | #9 |
Пользователь
Регистрация: 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 работает? это нужно для статуса, ведь когда нажимаешь на грид особо не определишь что идет процесс...и все не отвиснет пока не загрузятся данные... Спасибо. |
25.08.2009, 12:40 | #10 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Цвет шрифта таблицы 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 |