delphi7 中stringgrid的不可编辑区域怎么才能在右边
1个回答
展开全部
将最左边的不可编辑列移到最右边,不太容易。但可以“曲线救国”:
1、将FixedCols设置为0,这样最左边的不可编辑列就看不到了。
2、在StringGrid的OnDrawCell事件中,添加如下代码:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if Acol=4 then //假定最右边一列是第5列
begin
StringGrid1.Canvas.Brush.Color:=clBtnFace;
StringGrid1.Canvas.FillRect(Rect);
end;
end;
使得最右边一列变成灰色。
3、在StringGrid的OnSelectCell事件中,添加如下代码:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if ACol=5 then
StringGrid1.Options:=StringGrid1.Options-[goEditing]
else
StringGrid1.Options:=StringGrid1.Options+[goEditing]
end;
使得当单击鼠标,进入第5列时,这一列的单元格变成不可编辑。
---------------------------------------------------------
这也算不是办法的办法吧?
1、将FixedCols设置为0,这样最左边的不可编辑列就看不到了。
2、在StringGrid的OnDrawCell事件中,添加如下代码:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if Acol=4 then //假定最右边一列是第5列
begin
StringGrid1.Canvas.Brush.Color:=clBtnFace;
StringGrid1.Canvas.FillRect(Rect);
end;
end;
使得最右边一列变成灰色。
3、在StringGrid的OnSelectCell事件中,添加如下代码:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if ACol=5 then
StringGrid1.Options:=StringGrid1.Options-[goEditing]
else
StringGrid1.Options:=StringGrid1.Options+[goEditing]
end;
使得当单击鼠标,进入第5列时,这一列的单元格变成不可编辑。
---------------------------------------------------------
这也算不是办法的办法吧?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询