StringGrid中每此点击cell时,当前cell的颜色会改变,如何使其保留原来的颜色不变呢?

dxhh99 2004-12-25 07:48:56
StringGrid中每此点击cell时,当前cell的颜色会改变,如何使其保留原来的颜色不变呢?
...全文
231 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwgygz 2004-12-27
  • 打赏
  • 举报
回复
设置StringGrid的Options-->goDrawFocusSelect=False
qinfarmer 2004-12-27
  • 打赏
  • 举报
回复
TStringGrid的OnExit的事件中这样写:

procedure TForm1.StringGrid1Exit(Sender: TObject);
var
Rect: TGridRect;
begin
Rect.Left := -1;
Rect.Top := -1;
Rect.Bottom := -1;
Rect.Right := -1;
StringGrid1.Selection := Rect;
end;

刚刚又测试一遍,这个方法可以的。楼主试了吗?
ssq237712 2004-12-26
  • 打赏
  • 举报
回复
原来的每个CELL都是不同颜色的,当某个CELL变成焦点的时候,要保留原来的颜色不变。所以不能设定焦点CELL的颜色为固定的一种颜色。


你重绘了的?检查你重绘时的代码,得到焦点时状态判断:gdFocused in state,不区分是否获得焦点就是了。OnDrawCell事件
XuDunYu 2004-12-26
  • 打赏
  • 举报
回复
procedure TFrmMain.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
if gdFocused in state then exit;
end;
dxhh99 2004-12-26
  • 打赏
  • 举报
回复
原来的每个CELL都是不同颜色的,当某个CELL变成焦点的时候,要保留原来的颜色不变。所以不能设定焦点CELL的颜色为固定的一种颜色。
qinfarmer 2004-12-26
  • 打赏
  • 举报
回复
TStringGrid的OnExit的事件中这样写:

procedure TForm1.StringGrid1Exit(Sender: TObject);
var
Rect: TGridRect;
begin
Rect.Left := -1;
Rect.Top := -1;
Rect.Bottom := -1;
Rect.Right := -1;
StringGrid1.Selection := Rect;
end;
dxhh99 2004-12-26
  • 打赏
  • 举报
回复
kuki84(天道酬勤):
你的方法不行啊???
chinaliu123 2004-12-26
  • 打赏
  • 举报
回复
procedure TMainFrame.StringGrid5DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
with Rect, StringGrid1.Canvas do
begin
if State = [gdSelected] then
begin
Brush.Color:=CLMoneyGreen;
FillRect(Rect);
Font.Color:=clBlack;
end;
TextRect(Rect,Left+2,Top+2,StringGrid1.Cells[ACol,ARow]);
end;
end;
去试试吧、别忘了结帐!
huangguiyi 2004-12-26
  • 打赏
  • 举报
回复
http://www.xue68.com 上面搜到过类似信息
zzlazio 2004-12-26
  • 打赏
  • 举报
回复
procedure TClientForm.DBGrid3DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
case adodm.DSClientFamily.DataSet.RecNo mod 2 = 0 of
//如果是奇数行显示的颜色是clAqua,偶数行显示时clwhite
True: DbGrid3.Canvas.Brush.Color := clwhite;

False: DbGrid3.Canvas.Brush.Color :=claqua;

end;
if ((State = [gdSelected]) or (State = [gdSelected, gdFocused])) then

if not DbGrid1.SelectedRows.CurrentRowSelected then
// 当某单元格记录被选中的时候,该格的颜色变成clRed
DbGrid3.Canvas.Brush.Color := clRed;

DbGrid3.Canvas.Pen.Mode := pmMask;

DbGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
dxhh99 2004-12-26
  • 打赏
  • 举报
回复
上面方法都不行。
kuki84 2004-12-26
  • 打赏
  • 举报
回复
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
stringgrid1.Color:=clwhite;
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧