JMT*_*ler 1 delphi grid events onkeypress tstringgrid
在Delphi中编码,将OnKeyPress事件处理程序附加到TStringGrid:
OnKeyPress事件在用户键入的网格单元格之前触发,实际上已使用已按下的键更新其值.这显然是一个问题,当我想知道,单元格的内容是什么,在这个时刻,如,当用户修改它.
如果您没有考虑每个细节,那么"被黑客入侵"的解决方案很简单:只需从单元格中获取值,并且由于OnKeyPress事件带有Key参数,所以将该值附加到结尾 - 现在您拥有当前值细胞!
假.如果用户选择了单元格中的所有文本(即:"foo")并且他们现在正在键入"b",该怎么办?由于他们选择了文本,因此将删除并替换为字母"b".但是,单元格的值仍将在OnKeyPress中显示为"foo",Key的值将为"b",因此上述逻辑将导致应用程序得出结论,单元格现在包含"foob",我们知道不是真的.
所以. 有谁知道如何解决这个问题?是否有一种方法可以在网格内容更新后对OnKeyPress做出反应,或者可能是在处理程序开始时强制更新的方法?我在这里拼命避免使用OnKeyUp事件,所以除此之外的任何建议都将非常感激.
如果您希望响应单元格值的更改,为什么不使用OnSetEditText事件?
键盘事件用于响应键盘输入,而不是对该输入的控件响应.控件通常会提供一个或多个附加事件,以允许应用程序响应对某些输入的控件响应 - 在这种情况下,键盘输入会导致单元格值被修改,而不是单元格选择的更改,例如.
顺便说一句,在网格控制对这些事件的响应之前应该发生这些事件是很自然的,这样你可以在它们到达控件之前有效地"过滤"这些事件,例如防止特定的键盘输入影响细胞的价值.
| 归档时间: |
|
| 查看次数: |
2330 次 |
| 最近记录: |