Вниз
Скачать: 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 вся ветка

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



Память: 0.46 MB
Время: 0.061 c
14-1081414096
Ivolg
2004-04-08 12:48
2004.05.02
Таймер


14-1081496161
Balkon
2004-04-09 11:36
2004.05.02
Полный Uninstall !


1-1082272910
Андрей Сенченко
2004-04-18 11:21
2004.05.02
Обработчик произвольных строк с разделителями.


1-1082094458
Solik
2004-04-16 09:47
2004.05.02
GUI+Console


3-1080925781
Orvat
2004-04-02 21:09
2004.05.02
Понимаю, что не на тот сайт защел, но...




   Наверх