Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Вниз

DBGrid и выделять строчку   Найти похожие ветки 

 
DimonNew   (2004-12-29 15:07) [0]

Привет, подскажите пож-та. В DBGrid можно ставить опцию OnRowSelet, но при этом нельзя редактировать ячейки. Как можно обойти эту ситуацию? В одной статье видел как выделять ячейку самому в DrawColumnCell:
if  gdSelected in State then
begin
TDBGrid(Sender).Canvas.Brush.Color:=clGreen;
TDBGrid(Sender).Canvas.Font.Color:=clWhite;
end;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);

Но здесь только текущая ячейка, а как всю строчку выделить?


 
msguns ©   (2004-12-29 15:09) [1]

Убери if и будет тебе краситься вся строка


 
DimonNew   (2004-12-29 15:16) [2]

Краситься вся таблица.


 
msguns ©   (2004-12-29 15:21) [3]

Проверяй номер строки через TDBGrid.DataSource.DataSet.RecNo=DataSet.RecNo


 
midavik ©   (2004-12-29 15:30) [4]


type THackDBGrid = class(TDBGrid);
type TForm1 = class(TForm)
...........
...........

procedure TForm1.DBGrid1DrawColumnCell
  (Sender: TObject; const Rect: TRect; DataCol: Integer;
   Column: TColumn; State: TGridDrawState);
begin
 if (THackDBGrid(DBGrid1).DataLink.ActiveRecord + 1 =
     THackDBGrid(DBGrid1).Row)
 or (gdFocused in State) or (gdSelected in State) then
 begin
   DBGrid1.Canvas.Brush.Color := clSkyBlue;
   DBGrid1.Canvas.Font.Style := DBGrid1.Canvas.Font.Style + [fsBold];
   DBGrid1.Canvas.Font.Color := clRed;
 end;
end;


 
DimonNew   (2004-12-29 16:19) [5]

msguns ©
Хорошщая идея, только одно и то же с двух сторон, поэтому вся таблица краситься снова. Вот если бы определить номер строки у выделенной ячейки, только не могу найти, тогда бы сработало:
TDBGrid.DataSource.DataSet.RecNo="номер строки выделенной ячейки"


 
DimonNew   (2004-12-29 17:54) [6]

Спасибо всем, особенно midavik ©, на его основе вот , что заработало:
TDBCracker = class(TCustomDBGrid);
with TDBCracker(Sender) do
   if DataLink.ActiveRecord = Row - 1 then
     begin
       Canvas.Brush.Color:=clGreen;
       Canvas.Font.Color:=clWhite;
     end;
   TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.055 c
3-1103121638
Aser
2004-12-15 17:40
2005.01.16
Подскажите, как мне выполнить множество SQL-запросов?


14-1104244484
stud
2004-12-28 17:34
2005.01.16
1с и как с ней бороться))


1-1104403450
clickmaker
2004-12-30 13:44
2005.01.16
есть ли способ узнать номер колонки в листбоксе,


14-1104003219
e-mike
2004-12-25 22:33
2005.01.16
зависаем..


14-1103862801
Чеширский_Кот
2004-12-24 07:33
2005.01.16
Где именинники?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский