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

Вниз

Снова рисование.   Найти похожие ветки 

 
Alibaba   (2004-06-24 01:05) [0]

Очень много примеров демонстрируют как разрисовывать строки TStringGrid.

У меня получается. :)

Недавно появилась задача:
Необходимо выделять строки TDBGrid различным цветом в зависимости от значения поля.

В случае с TStringGrid - используется событие OnDrawCell.
Что использовать в лучае с TDBGrid?

Пробовал OnDrawDataCell, OnDrawColumnCell.
Неполучается... :(

Подскажите, как решить задачу.

Например, есть SQL-запрос, который возвращает три поля:
Field1, Field2, Field3.

Необходимо, что-бы если Field2 = "Вася", то эта строка (где Field2 = "Вася") была закрашена желтым цветом.


 
ЮЮ ©   (2004-06-24 04:39) [1]

>Пробовал OnDrawDataCell, OnDrawColumnCell.
>Неполучается... :(

Как не получается? Должно получиться. Когда рисуется ячейка именно эта строка DataSet-а является "текущей". Анализируй значение поля Field2 и вперёд!


 
Ozone ©   (2004-06-24 05:10) [2]

>> Неполучается... :(

Как ты пробовал? Код?


 
Alibaba ©   (2004-06-24 12:01) [3]

Для TStringGrid:

var
lstCell: TStringList;

procedure TfrmMain.FillRowSg(
NumRow: Integer;       //Номер строки
cFon,                  //Цвет фона
cShrift: TColor);      //Цвет шрифта
var
ra: array of TRect;
rm: TRect;
i: byte;
begin
//Очищаю список ячеек
lstCell.Clear;
//Устанавливаю длинну массива ra равную количеству колонок таблицы
SetLength(ra,sgEtaps.ColCount);

for i:=0 to sgEtaps.ColCount-1 do
 begin
//Наполняю список ячеек (это будут все ячеек одной строки)
  lstCell.Add(sgEtaps.Cells[i,NumRow]);
//Наполняю массив ra
  ra[i]:=sgEtaps.CellRect(i,NumRow);
 end;

//Формирую область всей строки
rm.Left:=ra[0].Left;
rm.Top:=ra[0].Top;
rm.Right:=ra[sgEtaps.ColCount-1].Right;
rm.Bottom:=ra[sgEtaps.ColCount-1].Bottom;

//Закрашиваю область строки
sgEtaps.Canvas.Brush.Color:=cFon;
sgEtaps.Canvas.FillRect(rm);

//Устанавливаю цвет шрифта для каждой ячейки в строке
sgEtaps.Canvas.Font.Color:=cShrift;
for i:=0 to sgEtaps.ColCount-1 do
 sgEtaps.Canvas.TextOut(ra[i].Left+1,ra[i].Top+2,lstCell[i]);
end;

procedure TfrmMain.sgEtapsDrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
//Если ячейка содержит слово "Вася"
if sgEtaps.Cells[ACol,ARow] = "Вася" then
//Закрашиваю всю строку желтым цветом
 FillRowSg(ARow,clYellow,clBlue);
end;


 
Alibaba ©   (2004-06-24 12:06) [4]

Для TDBGrid:

procedure TfrmMain.grMainDrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
//Здесь я не знаю как обратиться к ячейке с проверкой?
FillRowSg(Col,clTeal,clYellow);
end;


 
Alibaba ©   (2004-06-24 12:09) [5]

grMain: TDBGrid


 
MetalFan ©   (2004-06-24 12:15) [6]

событие OnDrawColumnCell...Occurs when the grid needs to paint a cell.
а ты каждый раз перересовываешь всю строку...

ниче не понимаю!


 
Alibaba ©   (2004-06-24 12:22) [7]

>MetalFan ©   (24.06.04 12:15) [6]

Есть задача:
Если ячейка содержит "Вася" - зарисовать строку желтым цветом.

Как решить эту задачу для TDBGrid?


 
Amoeba ©   (2004-06-24 12:52) [8]

Смотри статьи на тему раскраски TDBGrid в "Королевстве Дельфи" http://www.delphikingdom.com


 
KSergey ©   (2004-06-24 12:53) [9]

> Alibaba ©   (24.06.04 12:22) [7]
> Есть задача:
> Если ячейка содержит "Вася" - зарисовать строку желтым цветом.
>
> Как решить эту задачу для TDBGrid?

Балин... писано про это-переписано...

http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=168
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=806
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=170
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=667


 
Alibaba ©   (2004-06-24 12:57) [10]

Спасибо.
Разобрался.



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

Форум: "Базы";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.034 c
8-1083348956
x3{neon}
2004-04-30 22:15
2004.07.18
Конвертация bmp в ico


1-1088663857
Галинка
2004-07-01 10:37
2004.07.18
Печать из Memo


1-1089202095
Kurt
2004-07-07 16:08
2004.07.18
Ожидание события


1-1089019659
Alek
2004-07-05 13:27
2004.07.18
Таблица в ворде


6-1085298945
PR
2004-05-23 11:55
2004.07.18
Вопрос по сокетам





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