Главная страница
    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.011 c
2-1150804461
resuS
2006-06-20 15:54
2006.07.09
Задача на вычисление выражения записанного в строке


15-1149857861
syte_ser78
2006-06-09 16:57
2006.07.09
Опять об авторском праве


15-1149750520
StriderMan
2006-06-08 11:08
2006.07.09
Уважаемый модератор


15-1149845579
ALEXD31
2006-06-09 13:32
2006.07.09
Обновление Windows 98 до Windows 2000


15-1149791216
Petr V. Abramov
2006-06-08 22:26
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский