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

Вниз

Цвет строки 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.01 c
2-1150760795
fantasy
2006-06-20 03:46
2006.07.09
DBChart1


2-1150463813
Oleguslu
2006-06-16 17:16
2006.07.09
Locate


2-1150964235
Кирилл Таран
2006-06-22 12:17
2006.07.09
Как сделать анимацию?


1-1148903038
pirate
2006-05-29 15:43
2006.07.09
Волшебный Richedit


15-1149862062
infom
2006-06-09 18:07
2006.07.09
Вычислить вероятности исходов.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский