當網格失去焦點到另一個非模態窗體時,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