在drawgid里,怎么才能使鼠标点一下cell,产生一个红色的椭圆(50分)

  • 主题发起人 主题发起人 mmz_1980
  • 开始时间 开始时间
M

mmz_1980

Unregistered / Unconfirmed
GUEST, unregistred user!
在drawgid里,怎么才能使鼠标点一下cell,产生一个红色的椭圆
 
好像处理一个事件吧.
类似于CellDraw之类的,你再查查看。
 
在哪里产生?

就在cell上面?
 
对是在cell上面产生
 
CellDraw事件中写呀!
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var brush:tbrush;
pen:tpen;
begin
if (drawgrid1.Row=arow)and(drawgrid1.Col =acol) then
begin
brush:=tbrush.Create ;
pen:=tpen.Create ;
brush.Assign(drawgrid1.Canvas.Brush );
pen.Assign(drawgrid1.canvas.pen);
drawgrid1.Canvas.Brush.color:=clred;
drawgrid1.Canvas.pen.color:=clred;
drawgrid1.Canvas.Ellipse(rect);
drawgrid1.Canvas.brush.Assign(brush);
drawgrid1.Canvas.pen.Assign(pen);
pen.free;
brush.free;
end;
end;
 
可以这样:
在 private 中声明
prRect: TRect;
prDraw: Boolean;
后在OnSelectCell中
if (ACol=3) then //在第四列
begin
prRect:=DrawGrid1.CellRect(ACol,ARow);
prDraw:=True;
end else prDraw:=False;
在OnDrawCell中
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var oldColor: TColor;
begin
with DrawGrid1.Canvas do
begin
oldColor:=Brush.Color;
if prDraw then
begin
Brush.Color:=clRed;
Ellipse(prRect);
Brush.Color:=oldColor;
end;
end;
end;
即可.
 
接受答案了,可是小弟倾家荡产才这点钱,就全给你们吧,希望大虾们不要嫌弃,在下给你们磕头了
并再次谢谢你们
 
多人接受答案了。
 
后退
顶部