У меня 2 вопроса:
1. Кака в TBGrid изменить цвет записи в зависимости от содержания определённого поля?
2. Если есть поле bool как в TBGrid показать его в виде CheckBox ?
Помогите разобраться с DBGrid
Модератор: Злобный
-
- Юзер
- Сообщения: 50
- Зарегистрирован: Пн фев 02, 2004 22:39
- Контактная информация:
-
- Юзер
- Сообщения: 92
- Зарегистрирован: Вт авг 20, 2002 17:12
- Откуда: кишинёв
- Контактная информация:
1.
begin
if Table1.FieldByName('Population').AsFloat < 10000000 then
DBGrid1.Canvas.Font.Color := clRed;
dbGrid1.DefaultDrawDataCell(Rect,Field,State);
end;
2.
Вот основные шаги чтобы сделать это:
Создавайте и рисуйте TComboBox (CB) при получении ввода ячейки необходимой колонки табличной сетки
Получайте текущее значение поля (если имеется) и помещайте его в CB
После всех манипуляций, поместите новое значение обратно в поле
Избавляемся от CB
begin
if Table1.FieldByName('Population').AsFloat < 10000000 then
DBGrid1.Canvas.Font.Color := clRed;
dbGrid1.DefaultDrawDataCell(Rect,Field,State);
end;
2.
Вот основные шаги чтобы сделать это:
Создавайте и рисуйте TComboBox (CB) при получении ввода ячейки необходимой колонки табличной сетки
Получайте текущее значение поля (если имеется) и помещайте его в CB
После всех манипуляций, поместите новое значение обратно в поле
Избавляемся от CB
-
- Юзер
- Сообщения: 50
- Зарегистрирован: Пн фев 02, 2004 22:39
- Контактная информация:
-
- Юзер
- Сообщения: 92
- Зарегистрирован: Вт авг 20, 2002 17:12
- Откуда: кишинёв
- Контактная информация:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
holdColor: TColor;
begin
holdColor := DBGrid1.Canvas.Brush.Color; {сохраняем оригинальный цвет}
if Column.FieldName = 'EmpNo' then {"раскрашиваем" ячейки только для поля EmpNo}
if (Column.Field.AsInteger mod 2 <> 0) then
begin
DBGrid1.Canvas.Brush.Color := clGreen;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
DBGrid1.Canvas.Brush.Color := holdColor;
end;
end;
var
holdColor: TColor;
begin
holdColor := DBGrid1.Canvas.Brush.Color; {сохраняем оригинальный цвет}
if Column.FieldName = 'EmpNo' then {"раскрашиваем" ячейки только для поля EmpNo}
if (Column.Field.AsInteger mod 2 <> 0) then
begin
DBGrid1.Canvas.Brush.Color := clGreen;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
DBGrid1.Canvas.Brush.Color := holdColor;
end;
end;
-
- Юзер
- Сообщения: 50
- Зарегистрирован: Пн фев 02, 2004 22:39
- Контактная информация: