当网格失去焦点到另一个非模态窗体时,Delphi XE2中有没有一种方法可以保留StringGrid中InPlaceEditor的高光?当失去焦点时保持InPlaceEditor高亮
我现在的StringGrid选项有:
如果没有,我希望利用下面的代码失去焦点后保存当前小区的一大亮点,但我有一些麻烦与它离开当它们不再是当前单元格时,单元格会突出显示。
我是否需要在下面的代码中添加一个“else”以将颜色更改回原始的非选定单元格?任何警告?
procedure TForm1.sgMultiDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
if (ACol = sgMulti.Col) and (ARow = sgMulti.Row) then
begin
sgMulti.Canvas.Brush.Color := clYellow;
sgMulti.Canvas.FillRect(Rect);
sgMulti.Canvas.TextRect(Rect, Rect.Left, Rect.Top, sgMulti.Cells[ACol, ARow]);
if gdFocused in State then
sgMulti.Canvas.DrawFocusRect(Rect); user
end;
end; { sgMultiDrawCell}
编辑:下面的屏幕截图阐明它是如何表现的今天。我想当前单元格,失去焦点的时候,比底部的屏幕捕捉更加清晰
@TLama:我的目标是细胞在失去焦点时仍然以某种方式突出显示。正如你所说,我没有想到,这意味着将InPlaceEditor置于编辑模式。在我看来,使用InPlaceEditor不太可能或者更可取,因为你已经这么做了。也许我应该在没有重点时自己突出显示自己? (如果未聚焦时的突出显示与编辑模式突出显示不同,则可以。) – RobertFrank 2012-08-12 16:33:28
您尝试删除'goAlwaysShowEditor'选项吗? – kludg 2012-08-12 16:42:42
@Serg和TLama:我认为你是对的。删除goAlwaysShowEditor是我想要的,特别是因为goEditing已启用。我想我前段时间可能会设置goAlwaysShowEditor以突出亮点。要突出显示的边界框或颜色有多难? Serg:请将您以前的评论发布为答案。感谢你们两位。 – RobertFrank 2012-08-12 17:53:37