Главная страница
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.022 c
3-1080906055
Дмитрий
2004-04-02 15:40
2004.05.02
CONNECT TO FIREBIRD через Инет!!! Хелп!


8-1072283969
Alexis
2003-12-24 19:39
2004.05.02
проигрывать звуковой файл при старте


7-1078411581
Vlad25
2004-03-04 17:46
2004.05.02
WinIO


3-1081419593
ev
2004-04-08 14:19
2004.05.02
Как через SQL запрос найти значения подстроки, без учета регистра


6-1078366060
gogi
2004-03-04 05:07
2004.05.02
Как узнать имя файла аттачмента не загружая письмо ?