Главная страница
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.027 c
4-1078926004
nuflin
2004-03-10 16:40
2004.05.02
Приведите пример с использовнием функции VirtualQueryEx() ///////


11-1065766982
Deimos
2003-10-10 10:23
2004.05.02
Где найти пример модуля для работы с JPEG


4-1078919288
RyDmi
2004-03-10 14:48
2004.05.02
Определение текущего пользователя.


6-1078770485
Soft
2004-03-08 21:28
2004.05.02
Роутинг протокола Netbios или общая область видимости имен Win.


4-1078230208
AloneAli
2004-03-02 15:23
2004.05.02
Мигание в System Tray