to lizhenjia(暴雪):
多谢你的回复,不过,color是用来改变所有的单元格,
我要改变的是正在编辑中的单元格。
多谢你的回复,不过,color是用来改变所有的单元格,
我要改变的是正在编辑中的单元格。
解决方案 »
- 请教下谁有VNC开发的DLL?
- ☆☆☆初次发帖,请多关照☆☆☆关于获取flash播放时间(播放长度)的问题
- 求一个查询SQL语句!查询数据库值得前四位减去一个固定值小于1的条件句!
- dbnavigator refresh的时候提示table 不支持 uniquely indexed?
- Delphi自定义控件
- 请给我的错误信息一个解决方案
- 窗口句柄问题
- delphi中的flash双击全屏问题
- 变量的DEFINE
- 如何查找丢失的Sql server用户名与密码
- 向高手请教,delphi6怎样把主表和细表的数据同时都显示在一个dbgrideh中?
- delphi可以提取网络中另外的机子的日期和时间吗?怎么样实现?
我在select和setedit两个时间中试了都没办法!到底应该怎么做啊?
var
strgrid:Tstringgrid;
begin
strgrid:=sender as tstringgrid;
if (row=strgrid.row) and (strgrid.Focused) then
strgrid.Canvas.Brush.Color := clRed
else
strgrid.Canvas.Brush.Color := clWindow;
strgrid.Canvas.FillRect(Rect);
end;
你好,我试了,还是不能改变当前正在输入的一个cell的背景色。
还有其他的好方法吗?
TGrid = class(TStringGrid)
protected
function CreateEditor: TInplaceEdit; override ;
end ;function TGrid.CreateEditor: TInplaceEdit;
begin
result := inherited CreateEditor ;
Result.Brush.Color := clRed ;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
var
rGrid : TGrid ;
begin
rGrid := TGrid.Create(self) ;
rGrid.Parent := self ;
rGrid.Left := 0 ;
rGrid.Top := 0 ;
rGrid.Visible := True ;
rGrid.Options := rGrid.Options + [goEditing] ;
end;看看效果如何
现象是选中的那一整行颜色为红,
进入编辑后那个单元格的背景还是白色的。
另外,editing肯定是true了,呵呵,
不然怎么输入的呢?to yyfhz(火山) :
你这个代码实现的功能看起来不像是针对我的问题的啊!?
不过我没具体试过,你能说说你的代码到底实现什么功能吗?
procedure Tgoodsin.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
begin with Sender as TStringGrid do
begin
if gdFocused in State then
begin
Canvas.Brush.Color := $1FFFFF1F;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left,Rect.Top,MSGgin.Sg.Cells[ACol,ARow]);
Canvas.DrawFocusRect(Rect);
end;
end; end;
但是,没用啊!
当要进行修改的时候就把它显示在相应的单元格里,你看见的白色的输入框
其实就是那个edit.不幸的是那个edit是个内部变量,从外面很难进行操作。
不过它的创建函数 function CreateEditor: TInplaceEdit 倒是可以重载的。
因此我自己写了一个控件,目的是当它变成编辑状态时显示的字符是红底的。
当然你也可以用其它的方法得到类似的效果,例如在相应的位置上显示一个
红色的Edit控件骗骗用户,不过你还得让那个Edit能随着Grid的滚动而移动,
代码写起来比较罗嗦,还是写一个控件来得方便。
[email protected]
就可以把控件换掉了:)