Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
ВнизРисовать в ячейках DBGrid как на канвасе Найти похожие ветки
← →
Relaxxx (2003-07-31 13:07) [0]Здраствуйте мастера!!!
Возможно ли в ячейках ДБГрида рисовать как на канвасе, например чтоб закрасить ячейку в точечку или в полоску. Если можно то не могли б написать маленький примерчик, чтоб посмотреть как это реализуется или дайте ссылочку где про это рассказывается.
← →
Соловьев (2003-07-31 13:11) [1]можно
DrawColumnCell
Sender.Canvas....
И использешь весь надор методов Canvas
← →
Relaxxx (2003-07-31 14:25) [2]а поточнее не подскажите,
я например хочу в каждой ячейке поля Name нарисовать например красный квадратик, я делаю так
If Column.FieldName="Name" then
begin
TDBGrid(Sender).Canvas.Pen.Width:=2;
TDBGrid(Sender).Canvas.Brush.Color:=clRed;
TDBGrid(Sender).Canvas.Rectangle(0,0,10,10);
( Sender) а поточнее не подскажите,
я например хочу в каждой ячейке поля Name нарисовать например красный квадратик, я делаю так
If Column.FieldName="Name" then
begin
TDBGrid(Sender).Canvas.Pen.Width:=2;
TDBGrid(Sender).Canvas.Brush.Color:=clRed;
TDBGrid(Sender).Canvas.Rectangle(0,0,10,10);
end;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
Но у меня закращивается все колонка Name красным а квадратик рисуется в самом верху слева, тоесть в координатах 0,0 всей таблицы, а я хочу непосредственно ячейки которую я рисую.
← →
Соловьев (2003-07-31 15:43) [3]
> TDBGrid(Sender).Canvas.Rectangle(0,0,10,10);
var old_color: TColor;
...
old_color := TDBGrid(Sender).Canvas.Brush.Color;
...
TDBGrid(Sender).Canvas.Rectangle(Rect.Top,Rect.Left,Rect.Top+10,Rect.Left+10);
TDBGrid(Sender).Canvas.Brush.Color:=old_color;
...
← →
Relaxxx (2003-07-31 16:56) [4]Вот я хочу в каждой ячейке поля Name нарисовать зеленый квадратик
If Column.FieldName="Name" then
begin
Old_color:=TDBGrid(Sender).Canvas.Brush.Color;
TDBGrid(Sender).Canvas.Brush.Color:=clGreen;
TDBGrid(Sender).Canvas.Rectangle Rect.Top ,Rect.Left, Rect.Top+10, Rect.Left+10);
TDBGrid(Sender).Canvas.Brush.Color:=Old_color;
( Sender) Вот я хочу в каждой ячейке поля Name нарисовать зеленый квадратик
If Column.FieldName="Name" then
begin
Old_color:=TDBGrid(Sender).Canvas.Brush.Color;
TDBGrid(Sender).Canvas.Brush.Color:=clGreen;
TDBGrid(Sender).Canvas.Rectangle Rect.Top ,Rect.Left, Rect.Top+10, Rect.Left+10);
TDBGrid(Sender).Canvas.Brush.Color:=Old_color;
end;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
А мне просто рисует так что зеленые квадраты все йдут по одной линии но по горизонтали и расположены они на заголовке ДБГрида. Мне вообще непонятно что тогда получается такое Rect (я думал что это координаты ячейки которая в данный момент перерисовывается). Обьясните пожалуйста чем потолковее, заранее спасибо!
← →
stud (2003-07-31 17:02) [5]обрабатывай ondrawdatecell
← →
Соловьев (2003-07-31 17:12) [6]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var olc: TColor;
begin
if Column.FieldName = "DATE" then
begin
with (Sender as TDbGrid).Canvas do
begin
olc := Brush.Color;
Brush.Color:=clRed;
Rectangle(Rect);
( Sender)
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var olc: TColor;
begin
if Column.FieldName = "DATE" then
begin
with (Sender as TDbGrid).Canvas do
begin
olc := Brush.Color;
Brush.Color:=clRed;
Rectangle(Rect);
end;
end;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
(Sender as TDbGrid).Canvas.Brush.Color := olc;
end;
← →
Плохиш (2003-07-31 17:19) [7]тогда уж
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var olc: TColor;
begin
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
if Column.FieldName = "DATE" then
begin
with (Sender as TDbGrid).Canvas do
begin
olc := Brush.Color;
Brush.Color:=clRed;
( Rect)тогда уж
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var olc: TColor;
begin
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
if Column.FieldName = "DATE" then
begin
with (Sender as TDbGrid).Canvas do
begin
olc := Brush.Color;
Brush.Color:=clRed;
Rectangle(Rect);
Brush.Color := olc;
end;
end;
end;
DefaultDrawColumnCell перересовывает ячейку заново
← →
Соловьев (2003-07-31 17:21) [8]
> Плохиш (31.07.03 17:19)
попробуй мой код :)
← →
Relaxxx (2003-07-31 17:23) [9]Спасибки за помощь!!!!!!!!!!!!!!!!
сейчас буду раздираться
Еще раз всем спасиба, все попробую ;-)
← →
Плохиш (2003-07-31 17:23) [10]Вот ещё :-) Я и свой не пробывал ;-)
← →
Соловьев (2003-07-31 17:24) [11]
> Плохиш (31.07.03 17:19
твой не верно будет работать.
← →
Relaxxx (2003-07-31 17:49) [12]СТОП!!!!!!!
рано радуюсь :-(
> Соловьев ©
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var olc: TColor;
begin
if Column.FieldName = "DATE" then
begin
with (Sender as TDbGrid).Canvas do
begin
olc := Brush.Color;
Brush.Color:=clRed;
Rectangle(Rect);
end;
end;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
(Sender as TDbGrid).Canvas.Brush.Color := olc;
end;
Этот код просто закрашивает все ячейки колонки "DATE" в красный цвет,
> Плохиш
впринципе тоже самое
Мне не нужно закрашивать все ячейки колонки "Name" полностью, мне нужно нарисовать в каждой этой ячейки маленький квадратик (примером 10*10).
Я пишу так
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
olc:TColor;
begin
if Column.FieldName = "Name" then
begin
with (Sender as TDbGrid).Canvas do
begin
olc := Brush.Color;
Brush.Color:=clRed;
Rectangle(Rect.Top, Rect.Left,Rect.Top+10, Rect.Left+10);
(Sender as TDbGrid).Canvas.Brush.Color := olc;
( Sender)СТОП!!!!!!!
рано радуюсь :-(
> Соловьев ©
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var olc: TColor;
begin
if Column.FieldName = "DATE" then
begin
with (Sender as TDbGrid).Canvas do
begin
olc := Brush.Color;
Brush.Color:=clRed;
Rectangle(Rect);
end;
end;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
(Sender as TDbGrid).Canvas.Brush.Color := olc;
end;
Этот код просто закрашивает все ячейки колонки "DATE" в красный цвет,
> Плохиш
впринципе тоже самое
Мне не нужно закрашивать все ячейки колонки "Name" полностью, мне нужно нарисовать в каждой этой ячейки маленький квадратик (примером 10*10).
Я пишу так
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
olc:TColor;
begin
if Column.FieldName = "Name" then
begin
with (Sender as TDbGrid).Canvas do
begin
olc := Brush.Color;
Brush.Color:=clRed;
Rectangle(Rect.Top, Rect.Left,Rect.Top+10, Rect.Left+10);
(Sender as TDbGrid).Canvas.Brush.Color := olc;
end;
end;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
Но так не работает
> рисует так что зеленые квадраты все йдут по
> одной линии но по горизонтали и расположены они на заголовке
> ДБГрида
← →
Плохиш (2003-07-31 18:08) [13]Что вы мне мозги компосируете. 17-строку проверте
grdInfo.DefaultDrawColumnCell( Rect, DataCol, Column, State );
with grdInfo.Canvas do
begin
Brush.Color := clBlue;
( Rect.Left, Rect.Top, Rect.Left + 8, Rect.Top + 8 )Что вы мне мозги компосируете. 17-строку проверте
grdInfo.DefaultDrawColumnCell( Rect, DataCol, Column, State );
with grdInfo.Canvas do
begin
Brush.Color := clBlue;
Rectangle( Rect.Left, Rect.Top, Rect.Left + 8, Rect.Top + 8 );
end;
grdInfo.Canvas.Brush.Color := oldColor;
← →
Плохиш (2003-07-31 18:09) [14]PS. Может Screen-Shot прислать?
← →
Плохиш (2003-07-31 18:11) [15]>Relaxxx © (31.07.03 17:49)
Повторяю: Сначало DefaultDrawColumnCell
← →
Соловьев (2003-07-31 18:21) [16]
> Этот код просто закрашивает все ячейки колонки "DATE" в
> красный цвет,
у меня этот код закрашивает и выводит значение поля. если не хочешь выводить , то не надо
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
← →
Relaxxx (2003-07-31 18:35) [17]Все работает, спасибо за помощь
ВОПРОС СНЯТ!!!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.01 c