Вниз
Скачать: 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.021 c
4-1077186509
Roman79
2004-02-19 13:28
2004.05.02
как недопустить уничтожение своей программы


3-1081406581
S@shka
2004-04-08 10:43
2004.05.02
Создание БД с таблицей Адрес


14-1081685357
anpsoft
2004-04-11 16:09
2004.05.02
xp и 1гб озу


1-1081936070
Новенький
2004-04-14 13:47
2004.05.02
Enumerated в объявлении объекта.


4-1078404755
mip
2004-03-04 15:52
2004.05.02
Подскажите плз. как закрыть работающий Exe, лучше на примере?




   Наверх