在 Delphi 中编码,将 OnKeyPress 事件处理程序附加到 TStringGrid:
OnKeyPress 事件在用户正在输入的网格单元实际使用已按下的键更新其值之前触发。这显然是一个问题,当我想知道此时该单元格的内容是什么时,例如在用户修改它时。
如果您不考虑每个细节,“黑客”解决方案很简单:只需从单元格中获取值,并且由于 OnKeyPress 事件带有一个Key参数,将该值附加到末尾 - 现在您有了当前值细胞!
错误的。如果用户选择了单元格中的所有文本(即:“foo”)并且他们现在正在输入“b”,该怎么办。由于他们选择了文本,它将被删除并替换为字母“b”。但是,单元格的值在 OnKeyPress 中仍会显示为“foo”,而Key的值将是 'b',因此上述逻辑会导致应用程序得出该单元格现在包含“foob”的结论,我们知道这一点不是真的。
所以。 有谁知道如何解决这个问题?有没有办法让 OnKeyPress在网格内容更新后做出反应,或者在处理程序开始时强制更新?我在这里拼命避免使用 OnKeyUp 事件,因此除此之外的任何建议将不胜感激。