![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли по нажатию на Button выделить строку DBGrid'а ? [D7]
Хэтч © (2004-04-05 08:03:00)Народ, интересует, можно ли по нажатию на Button сделать строку таблицы в DBGrid'е жирным шрифтом, либо подчеркнутым?
Хэтч (2004-04-06 09:55:00) [1]Огромное спасибо ВСЕМ!!!
ЮЮ (2004-04-06 03:27:00) [2]>Хэтч (05.04.04 10:17) [2]
Вариант первый: хранить в DataSete
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
// итак, что мы имеем в обработчике, позволяющее понять то,
// что мы рисуем "выделенную" строку?
// Ничего, кроме DataSeta и его текущей записи.
// Cледовательно признак "выделен" должен храниться в записи
// в фиктивном поле, добавленном в запрос
// SELECT 0 as IsSelected, <остальные поля> ,
// исключив его из запросов TUpdateSQL для данного запроса
if TDBGrid(Sender).DataSource.DataSet.Fields[0].AsInteger = 1 then begin
//запись выделена
TDBGrid(Sender).Canvas.Font.Style :=
TDBGrid(Sender).Canvas.Font.Style +[ fsBold, fsUnderLine];
end;
TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ds: TDataSet;
begin
ds := DBGrid1.DataSource.DataSet;
if ds.State = dsBrowse then ds.Edit;
ds.Fields[0].AsInteger := 1 - Fields[0].AsInteger;
ds.Post;
end;
Vlad (2004-04-05 10:38:00) [3]Вот пример.
Объявляем тип
type
THackGrid = class(TDBGrid);
Далее, на событие OnDrawColumnCell пишешь следующее:
with THackGrid(Sender) do
begin
if Row=DataLink.ActiveRecord+1
then Canvas.Font.Style:=Canvas.Font.Style+[fsBold, fsUnderLine];
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
И не забудь свойство DefaultDrawing у грида установить False;
Anatoly Podgoretsky (2004-04-05 10:22:00) [4]пример в OnDrawCell
Хэтч (2004-04-05 10:17:00) [5]Не совсем понятно. Можно более подробно разъяснить. Хотелось бы пример. Заранее благодарен.
ЮЮ (2004-04-05 08:13:00) [6]Можно, если в OnDraw... DBGrida исходя только из имеющихся параметров, сможешь узнать, что ты нажимал на Button, когда эта запись была текущей.
Т.е. информацию надо хранить либо в записи DataSeta (но не в таблице БД), дибо в списке "выделенных записей"