![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
checkbox в гриде [D6, Win2k]
denis24 © (2004-12-24 16:52:00)При отображении данных датасета в событии-отрисовщике рисую сабж.
Он рисуется все нормально как я и хотел пустой.Но изменить его значение не возможно сколько не кликай на нем мышей.
Рисую так
IF CompareText(Column.FieldName ,'check') = 0 then
begin
Style := DFCS_BUTTONCHECK;
DrawFrameControl(TDBGrid(Sender).Canvas.Handle, Rect, DFC_BUTTON, Style);
end;
denis24 (2004-12-29 09:45:00) [1]Всем спасибо.Все получилось.
В событии грида oncellclick присваиваю нужные значения полю с галочками и грид перерисовывает все сам.
begin...end (2004-12-28 17:19:00) [2]> [10] Vlad © (28.12.04 17:16)
> а где сказано что нужно быстро? (см. дату создания ветки)
Я не в этом смысле. А в смысле ресурсоёмкости.
> есть сомнения?
Я не заметил, что у него TDBGrid. Там оно есть. Мои извинения.
Vlad (2004-12-28 17:16:00) [3]
> begin...end © (28.12.04 17:10) [9]
> Но не самое быстрое.
а где сказано что нужно быстро? (см. дату создания ветки)
> ...если бы оно там было.
есть сомнения?
begin...end (2004-12-28 17:10:00) [4]> [7] denis24 (28.12.04 16:58)
По событию OnMouseDown можно получить координаты мыши (X, Y) в момент, когда произошёл клик. После этого можно с помощью метода MouseToCell получить номера строки и столбца, соответствующие этим координатам. Если кликнули на ячейке в столбце, содержащем checkbox'ы, то перерисовываем соответствующий checkbox.
> [8] Vlad © (28.12.04 17:04)
> самое грамотное решение создать собственный InplaceEditor
> с чекбоксом
Но не самое быстрое.
> Хотя можно и в гриде событие OnCellClick обрабатывать
...если бы оно там было.
Vlad (2004-12-28 17:04:00) [5]
> denis24 (28.12.04 16:58) [7]
Разницу между классом TCheckBox и нарисованной картинкой ввиде квадратика с галочкой видишь?
По сабжу:
если хочешь чтоб чекбокс переключался, то imho, самое грамотное решение создать собственный InplaceEditor с чекбоксом (см. реализацию класса TInplaceEdit)
Хотя можно и в гриде событие OnCellClick обрабатывать, но это не есть гуд. (imho)
denis24 (2004-12-28 16:58:00) [6]В примере "Разноцветный грид" расказывалось про эти чекбоксы.
Там про события грида ни слова....
Как отлавливать что кликнули на этом поле?
begin...end (2004-12-28 16:40:00) [7]> [5] denis24 (28.12.04 16:38)
Хамить не надо. Подсказывают правильно. Нарисованный и настоящий checkbox - далеко не одно и то же. Нарисованный - это просто картинка. Поэтому придётся отслеживать клики над ним и перерисовывать в другом состоянии.
denis24 (2004-12-28 16:38:00) [8]to У
Ты когда просто Tcheckbox на форму кидаеш тоже onmousedown отрабатываеш?
У (2004-12-24 18:32:00) [9]ты MouseDown/MouseUp отрабатываешь?
или как нарисованный чекбокс узнает, что ты по нему
кликнул???
denis24 (2004-12-24 17:34:00) [10]2 fea
А если у меня все чекбоксы должны быть не отмечены?
REA (2004-12-24 17:01:00) [11]Иногда нужно устанавливать DFCS_CHECKED в Style
Stanislav (2004-12-24 16:58:00) [12]Используй EhLib там все реализованно !
Если конечно твоя задача не заключается в рисовании Checkbox.