Форум: "Начинающим";
Текущий архив: 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