Вниз
Скачать: CL | DM;

Помогите создать в гриде чекбокс   Найти похожие ветки 

 
Сергей_И   (2004-06-03 13:02) [0]

делаю так
procedure TForm1.FormCreate(Sender: TObject);
begin
  C1:=TCheckBox.Create(Self);
  C.Parent:=StrinGGrid1;
  C1.Width:=StrinGGrid1.ColWidths[0]-1;
  C1.Left:=1;
  C1.Top:=0;
  C1.Checked:=true;
end;
чек бокс нарисовался в нужной ячейке грида, но при нажатии на него ничего не происходит (Checked не меняется) как это исправить?


 
MBo ©   (2004-06-03 14:20) [1]

парентом сделай форму.


 
begin...end ©   (2004-06-03 14:20) [2]

Не проще ли использовать DrawFrameControl ?


 
Сашка   (2004-06-03 14:21) [3]

Не парься. Возьми EhLib Grid - он хороший и бесплатный :)


 
Сашка   (2004-06-03 14:21) [4]

Удалено модератором


 
Clickmaker ©   (2004-06-03 14:21) [5]

На мой взгляд, правильней рисовать самому чекбокс в ячейке в OnDrawCell, DrawFrameControl, DFCS_BUTTON or DFCS_BUTTONCHECK и обрабатывать клик по ячейке


 
Erik1   (2004-06-03 16:06) [6]

Не лучше воспользоватся готовым решением или наследоватся от какогонибудь TCustomControl и вперед с песней.


 
BFG9k   (2004-06-03 19:28) [7]

Просто нарисованный checkBox не будет реагировать на события. Нужен полноценный чекбокс. Обрабатываешь OnDrawCell , там есть Rect - относительно его работаешь. С помощью API функций находишь абсолютные координаты Grid"а , и совмещая их со сторонами Rect"а помещаешь поверх Grid"a чекбокс. Формально он будет независимым , но пользователь этого никогда не узнает.

P.S.: Да , ни в коем случае не делай парентом чекбокса свой грид , иначе он будет перехватывать события от мыши и т д.


 
Vlad ©   (2004-06-03 19:58) [8]

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


 
begin...end ©   (2004-06-04 09:47) [9]


> [7] BFG9k   (03.06.04 19:28)


> нарисованный checkBox не будет реагировать на события


Да, но из всех событий, скорее всего, нужен только клик, так что это легко исправить с помощью TStringGrid.OnMouseDown, возможно, чего-то ещё, и повторного вызова DrawFrameControl.


> Нужен полноценный чекбокс.


А если, например, в таблице 100 строк, и возле каждой нужен CheckBox? Создавать в каждой строке полноценный? ИМХО, не очень рационально.


 
ORMADA ©   (2004-06-04 12:54) [10]

не нравиться EhLib сделай сам!
http://delphi.vitpc.com/asp/viewitem.asp?UrlItem=/helloworld/nogrid.htm
А ваще то нефиг замарачиваться юзай Ehlib а хош оч крутой грид юзай DevExpress ....



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.02 c
14-1086158505
31512
2004-06-02 10:41
2004.06.20
Что лучше для обработки нажатий на пункты меню?


1-1086077035
Leks
2004-06-01 12:03
2004.06.20
Помогите с испльзованием Dll


14-1086437278
ИМХО
2004-06-05 16:07
2004.06.20
"Молчание ягнят"


6-1082619213
Анонимщик
2004-04-22 11:33
2004.06.20
TServerSocket, TClientSocket. Синхронный и асинхронный, блокирующ


6-1082939222
Wiz@rd
2004-04-26 04:27
2004.06.20
SMTP & Outlook




   Наверх