Delphiでコーディングし、OnKeyPressイベントハンドラーをTStringGridにアタッチします。
OnKeyPressイベントは、ユーザーが入力しているグリッドセルが、押されたキーで実際にその値を更新する前に発生します。これは明らかに問題です。ユーザーが変更したときのように、現時点でそのセルの内容が何であるかを知りたい場合です。
「ハッキングされた」ソリューションは、すべての詳細を考慮していない場合は単純です。セルから値を取得し、OnKeyPressイベントにKeyパラメーターが付属しているため、その値を最後に追加します。これで、現在の値が得られます。セルの!
誤り。ユーザーがセル内のすべてのテキスト(つまり、「foo」)を選択し、「b」と入力している場合はどうなりますか。彼らがテキストを選択したので、それは消去され、文字「b」に置き換えられます。ただし、セルの値はOnKeyPressでは「foo」として表示され、Keyの値は「b」になるため、上記のロジックにより、アプリケーションはセルに「foob」が含まれていると結論付けることができます。真実ではない。
それで。 誰かがこの問題を回避する方法を知っていますか?グリッドのコンテンツが更新された後にOnKeyPressを反応させる方法はありますか、それともハンドラーの開始時に強制的に更新する方法はありますか?ここではOnKeyUpイベントの使用を必死に避けているので、それ以外の提案をいただければ幸いです。