Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизМожно ли по нажатию на Button выделить строку DBGrid а ? Найти похожие ветки
← →
Хэтч (2004-04-05 08:03) [0]Народ, интересует, можно ли по нажатию на Button сделать строку таблицы в DBGrid"е жирным шрифтом, либо подчеркнутым?
← →
ЮЮ © (2004-04-05 08:13) [1]Можно, если в OnDraw... DBGrida исходя только из имеющихся параметров, сможешь узнать, что ты нажимал на Button, когда эта запись была текущей.
Т.е. информацию надо хранить либо в записи DataSeta (но не в таблице БД), дибо в списке "выделенных записей"
← →
Хэтч (2004-04-05 10:17) [2]Не совсем понятно. Можно более подробно разъяснить. Хотелось бы пример. Заранее благодарен.
← →
Anatoly Podgoretsky © (2004-04-05 10:22) [3]пример в OnDrawCell
← →
Vlad © (2004-04-05 10:38) [4]Вот пример.
Объявляем тип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;
← →
ЮЮ © (2004-04-06 03:27) [5]>Хэтч (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;
← →
Хэтч (2004-04-06 09:55) [6]Огромное спасибо ВСЕМ!!!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c