Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.16;
Скачать: CL | DM;

Вниз

checkbox в гриде   Найти похожие ветки 

 
denis24   (2004-12-24 16:52) [0]

При отображении данных датасета в событии-отрисовщике рисую сабж.
Он рисуется все нормально как я и хотел пустой.Но изменить его значение не возможно сколько не кликай на нем мышей.
Рисую так
IF CompareText(Column.FieldName ,"check") = 0  then
       begin
      Style := DFCS_BUTTONCHECK;
      DrawFrameControl(TDBGrid(Sender).Canvas.Handle, Rect, DFC_BUTTON, Style);
          end;


 
Stanislav ©   (2004-12-24 16:58) [1]

Используй EhLib там все реализованно !
Если конечно твоя задача не заключается в рисовании Checkbox.


 
REA   (2004-12-24 17:01) [2]

Иногда нужно устанавливать DFCS_CHECKED в Style


 
denis24   (2004-12-24 17:34) [3]

2 fea
А если у меня все чекбоксы должны быть не отмечены?


 
У   (2004-12-24 18:32) [4]

ты MouseDown/MouseUp отрабатываешь?
или как нарисованный чекбокс узнает, что ты по нему
кликнул???


 
denis24   (2004-12-28 16:38) [5]

to У
Ты когда просто Tcheckbox на форму кидаеш тоже onmousedown отрабатываеш?


 
begin...end ©   (2004-12-28 16:40) [6]

> [5] denis24   (28.12.04 16:38)

Хамить не надо. Подсказывают правильно. Нарисованный и настоящий checkbox - далеко не одно и то же. Нарисованный - это просто картинка. Поэтому придётся отслеживать клики над ним и перерисовывать в другом состоянии.


 
denis24   (2004-12-28 16:58) [7]

В примере "Разноцветный грид" расказывалось про эти чекбоксы.
Там про события грида ни слова....
Как отлавливать что кликнули на этом поле?


 
Vlad ©   (2004-12-28 17:04) [8]


> denis24   (28.12.04 16:58) [7]

Разницу между классом TCheckBox и нарисованной картинкой ввиде квадратика с галочкой видишь?
По сабжу:
если хочешь чтоб чекбокс переключался, то imho, самое грамотное решение создать собственный InplaceEditor с чекбоксом (см. реализацию класса TInplaceEdit)
Хотя можно и в гриде событие OnCellClick обрабатывать, но это не есть гуд. (imho)


 
begin...end ©   (2004-12-28 17:10) [9]

> [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:16) [10]


> begin...end ©   (28.12.04 17:10) [9]


> Но не самое быстрое.

а где сказано что нужно быстро? (см. дату создания ветки)

> ...если бы оно там было.

есть сомнения?


 
begin...end ©   (2004-12-28 17:19) [11]

> [10] Vlad ©   (28.12.04 17:16)

> а где сказано что нужно быстро? (см. дату создания ветки)

Я не в этом смысле. А в смысле ресурсоёмкости.

> есть сомнения?

Я не заметил, что у него TDBGrid. Там оно есть. Мои извинения.


 
denis24   (2004-12-29 09:45) [12]

Всем спасибо.Все получилось.
В событии грида oncellclick присваиваю нужные значения полю с галочками и грид перерисовывает все сам.



Страницы: 1 вся ветка

Текущий архив: 2005.01.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
3-1103013844
Garry_c
2004-12-14 11:44
2005.01.16
Русский текст в Delphi при использовании Interbase компонентов


8-1096733091
CyberPank
2004-10-02 20:04
2005.01.16
плагин к Winamp


14-1103909471
olookin
2004-12-24 20:31
2005.01.16
Вырезка из протокола матча Молот - Ак Барс


4-1100444311
Doc-N
2004-11-14 17:58
2005.01.16
Изменение таблици импорта


14-1103968704
Чеширский_Кот
2004-12-25 12:58
2005.01.16
Merry Xmas!