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

Вниз

Можно ли по нажатию на 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.033 c
14-1081249300
Rule
2004-04-06 15:01
2004.05.02
Как вы относитесь к ценам на буржуйские компоненты


3-1081198658
Dionnis
2004-04-06 00:57
2004.05.02
Подключение dbf файлов через ADO с поддержкой SQL


8-1075882706
dub daze
2004-02-04 11:18
2004.05.02
структура wave-файла


1-1081676847
Calabonga
2004-04-11 13:47
2004.05.02
Проблема с Delphi7...вернее со встроенным дебаггером...


3-1081353922
Алексей Комлев
2004-04-07 20:05
2004.05.02
Как получить результат TQuery в виде набора строк?