Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.09;
Скачать: CL | DM;

Вниз

Цвет строки DBGrid   Найти похожие ветки 

 
Neket   (2006-06-19 09:08) [0]

Подскажите как одним цветом выделить строку, а другим ячейку на этой строке.
Выделение ячейки я делаю следующим образом:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
 holdColor: TColor;
begin
if  (combobox1.Text<>"")and (combobox2.Text<>"") then
begin
holdColor := DBGrid1.Canvas.Brush.Color;
 if Column.FieldName = combobox1.Text then
   if (Column.Field.AsString =combobox2.Text) then
   begin
     DBGrid1.Canvas.Brush.Color := clMoneyGreen;
     DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
     DBGrid1.Canvas.Brush.Color := holdColor;

   end;
end;

Т.е. Выделяеться ячейка которая находиться в столбце с названием из ComboBox1 и содержит Текст из ComboBox2. А мне необходимо чтобы ячейка выделялась одним цветом, а строка в которой находиться эта ячейка другим цветом.


 
ЮЮ ©   (2006-06-19 09:25) [1]

if Column.FieldName = combobox1.Text then
  if (Column.Field.AsString =combobox2.Text) then
  begin
    DBGrid1.Canvas.Brush.Color := clMoneyGreen;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    DBGrid1.Canvas.Brush.Color := holdColor;

  end;

end
else if DBGrid1.DataSet.FieldByName(combobox1.Text).asString = combobox2.Text then
 выделяем ячейку "другим" цветом

ибо у рисуемой  записи в поле combobox1.Text стоит combobox2.Text, причем независимо от того какое поле этой записи мы рисуем в гриде


 
ЮЮ ©   (2006-06-19 09:36) [2]

Сорри,
 DBGrid1.DataSource.DataSet.


 
Neket   (2006-06-19 11:20) [3]

Вы по всей видимости меня не совсем поняли. Вопрос состоит в другом.
Если DefaultDrawColumnCell - выделяет ячейку то как выделить строку.


 
Crazy monkey   (2006-06-19 11:23) [4]

Код не мой! Местные знатоки подсказали.

type
TDBGridCracker = class(TCustomDBGrid);
procedure TForm1.DBGrid...........................................

with TDBGridCracker(Sender) do begin
  if (DataLink.ActiveRecord = Row - 1) then begin
    if gdSelected in State then begin
    Canvas.Brush.Color:= clMaroon;
    Canvas.Font.Color:= clWhite;
    end
    else begin
    Canvas.Brush.Color:= $00E2E2E2;
    Canvas.Font.Color:= clBlack;
  end;
end;
end;
TDBGridCracker(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);


 
Crazy monkey   (2006-06-19 11:24) [5]

Указанный код на событие:

> procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
> const Rect: TRect;
>  DataCol: Integer; Column: TColumn; State: TGridDrawState);
>


 
Crazy monkey   (2006-06-19 11:30) [6]

Кстати вот еще интересный материал! В статье много букв, но в целом крайне зачетный источник:

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=806#04_3


 
Плохиш ©   (2006-06-19 11:41) [7]


> Neket   (19.06.06 09:08)  


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
 myField: TField;
begin
if  (combobox1.Text<>"")and (combobox2.Text<>"") then
begin
myField := Column.Field.DataSet.FieldByName(combobox1.Text);
if myField <> nil then
 if myField.AsString=combobox2.Text then
 begin
   DBGrid1.Canvas.Brush.Color := <StringColor>;
   if Column.FieldName = combobox1.Text then
     DBGrid1.Canvas.Brush.Color := clMoneyGreen;
   DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
 end;
end;


 
Neket   (2006-06-19 11:49) [8]

2 Плохиш: Спасибо огромное очень помог. Neket тебя не забудет.
и ещё раз спасибо!!!!!


 
Neket   (2006-06-19 12:05) [9]

И чтобы не создовать новуюю тему ещё пару вопросиков:
Как сделать экспорт из DBGrid в Excel? Если можно код или хотябы ссылочку где это можно почитать?
И второй:
Как добавить в первую строку (в заголовок) Кнопку?


 
ЮЮ ©   (2006-06-20 02:58) [10]

ЮЮ
if DataSet.FieldByName(combobox1.Text).asString = combobox2.Text then
Автор:
Вы по всей видимости меня не совсем поняли.

Плохиш:
if DataSet.FieldByName(combobox1.Text) .asString = combobox2.Text then
Автор:
2 Плохиш: Спасибо огромное очень помог. Neket тебя не забудет.

Вывод:  Neket, обо мне можешь забыть навсегда


 
Плохиш ©   (2006-06-20 10:57) [11]


> ЮЮ ©   (20.06.06 02:58) [10]
> Плохиш:
> if DataSet.FieldByName(combobox1.Text) .asString = combobox2.
> Text then

Хм, что-то я не заметил в своём коде такой потенциально инициализирующей AV строки. :-)



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

Текущий архив: 2006.07.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
2-1150727209
Нужна помощь
2006-06-19 18:26
2006.07.09
Можно ли в delphi 7 отлаживать dll?


15-1149849028
iamdanil
2006-06-09 14:30
2006.07.09
RS Stereo Image 2006


2-1151055956
И. Павел
2006-06-23 13:45
2006.07.09
Вертикальный текст


3-1146694273
VadimSpb
2006-05-04 02:11
2006.07.09
ORDER BY


4-1143988223
spyrytus
2006-04-02 18:30
2006.07.09
Как запустить программу с грифом SYSTEM