不知这样行不行: procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; begin if (Message.xPos>DBGrid1.left) and (Message.xPos<=DBGrid1.left+DBGrid1.width)a and (Message.yPos>DBGrid1.top) and (Message.yPos<=DBGrid1.top+DBGrid.Height) then exit else inherited; end;
或者在进入网格事件中加入EXIT
用下面的方法不知道可否在dbgrid.enabled:=false;时触发Enter事件????????? 从而改变编辑框背景色 procedure TForm1.DBGrid1Enter(Sender: TObject); var Vedit:TEdit; begin vEdit:=GetDBGridEdit(TDBGrid(Sender)); if Assigned(vEdit) then vEdit.Color:=clYellow;end;
喔! 前面应该还有两个自定义的函数: function GetDBGridEdit(vDBGrid:TDBGrid):TEdit; var I:Integer; begin Result:=nil; if not Assigned(vDBGrid) then Exit; if not vDBGrid.EditorMode then begin vDBGrid.EditorMode:=True; vDBGrid.EditorMode:=False; end; with vDBGrid do for I:=0 to Pred(ComponentCount) do if Components[I] is TCustomEdit then begin Result:=TEdit(Components[I]); break; end; end; //------------------------------------------------------- function GetDBGridEditText(vDBGrid: TDBGrid):String ; var vEdit :TEdit; begin vEdit:=GetDBGridEdit(vDBGrid); if Assigned(Vedit) then Result:=vEdit.Text else Result:=''; end;
如果是用这种方法有两个方面不行!
1、两边的滚动条都不能用;
2、颜色是灰色的,看起来很不舒服、不清晰。(顺便问一下,有没有办法在enabled是false
时,显示的颜色能不能设置成其它颜色了?)
procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN;
begin
if (Message.xPos>DBGrid1.left) and (Message.xPos<=DBGrid1.left+DBGrid1.width)a and (Message.yPos>DBGrid1.top) and (Message.yPos<=DBGrid1.top+DBGrid.Height) then
exit
else
inherited;
end;
从而改变编辑框背景色
procedure TForm1.DBGrid1Enter(Sender: TObject);
var
Vedit:TEdit;
begin
vEdit:=GetDBGridEdit(TDBGrid(Sender));
if Assigned(vEdit) then vEdit.Color:=clYellow;end;
前面应该还有两个自定义的函数:
function GetDBGridEdit(vDBGrid:TDBGrid):TEdit; var
I:Integer;
begin
Result:=nil;
if not Assigned(vDBGrid) then Exit;
if not vDBGrid.EditorMode then
begin
vDBGrid.EditorMode:=True;
vDBGrid.EditorMode:=False;
end;
with vDBGrid do for I:=0 to Pred(ComponentCount) do
if Components[I] is TCustomEdit then
begin
Result:=TEdit(Components[I]);
break;
end;
end; //-------------------------------------------------------
function GetDBGridEditText(vDBGrid: TDBGrid):String ;
var
vEdit :TEdit;
begin
vEdit:=GetDBGridEdit(vDBGrid);
if Assigned(Vedit) then
Result:=vEdit.Text
else
Result:='';
end;
选中行dgrowselect