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

Как обработать OnCellClick при dgRowSelect = true   Найти похожие ветки 

← →
Vi0let ©   (2004-01-27 07:17) [0]

Когда обработываешь событие OnCellClick и в Options лежит dgRowSelect полученный Column - всегда первая колонка. Как обработать нажатие на произвольную колонку?


← →
ЮЮ ©   (2004-01-27 07:59) [1]

Убрать dgRowSelect, естественно. А выделение текущей записи цветом сделать в OnDrawColumnCell


← →
Vi0let ©   (2004-01-27 11:07) [2]

Сэнюкью вэри мач


← →
Vi0let ©   (2004-01-30 02:51) [3]

ЮЮ
как определить в OnDrawColumnCell, что ячейка относится к текущей строке
всяко разно перепробовал


← →
ЮЮ ©   (2004-01-30 05:26) [4]

1 Способ.
В обработчике DBGrid.DataSource.DataSet.AfterScroll запоминать значение ключевого поля, например:

procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
DBGrid1.Tag := DataSet.Fields[0].AsInteger;
end;

теперь при отрисовке мы можем узнть рисуем ли мы текущую запись или нет:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
gr: TDBGrid;
begin
gr := TDBGrid(Sender);
if (gr.DataSource.DataSet.Fields[0].asInteger = gr.tag) then begin
// рисуем поля текущей записи
gr.Canvas.Brush.Color := clHighlight;
gr.Canvas.Font.Color := clHighlightText;
end;
gr.DefaultDrawDataCell(Rect, Column.Field, []);
end;


2 способ.
Написать собственного наследника TDBGrid, перекрыв DrawCell и написав его так, как душе угодно


← →
Vi0let ©   (2004-01-30 08:35) [5]

спасибо понял
я пробовал нечто похожее, но у меня при этом почемуто красилось все:
if gr.DataSet["num"] = tblMain["num"]) then ...


← →
ЮЮ ©   (2004-01-30 08:53) [6]

потому что tblMain и gr.DataSource.DataSet - это один и тот же объект. Более того, в OnDraw... Grida текущей записью является именно "рисуемая" запись, а не та, про которую ты думаешь, что она осталась "текущей", правда в этом есть и плюс, можно раскрашивать поле в нужный колер, основываясь на значения других полей текущей записи.
Но именно поэтому "привязаться" к текущей записи надо не в OnDraw, а заранее в OnAfterScroll


← →
Vi0let ©   (2004-01-30 10:40) [7]

ну теперь то, я всё знаю про TDBGrid :)


← →
Gorlum ©   (2004-01-30 11:42) [8]

>Vi0let © (30.01.04 10:40) [7]
Уверен? Тогда почитай:
http://www.delphikingdom.com/asp/viewitem.asp?UrlItem=/helloworld/dbgridcolor.htm



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

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



Память: 0.46 MB
Время: 0.02 c
3-79612
Saddam
2004-01-30 18:47
2004.02.25
BDE Out of memory на 200000+ записи выборки


6-80060
korvin
2003-12-18 16:41
2004.02.25
Избито и тривиально, но ... сокеты


14-80257
VEG
2004-02-04 00:12
2004.02.25
Вопрос об STL в C++Builder 6 и Visual C++ 6


1-79941
Layner
2004-02-09 12:57
2004.02.25
Подскажите плз, как на форме fsMDIForm отображать дочерние


8-80040
Андрей Сенченко
2003-10-21 12:56
2004.02.25
Чтение тэгов MP3




   Наверх