Delphi 在';重新打字?德尔福xe2
由于正在键入的文本尚未保存,以下代码不起作用:Delphi 在';重新打字?德尔福xe2,delphi,delphi-xe2,Delphi,Delphi Xe2,由于正在键入的文本尚未保存,以下代码不起作用: DBGrid1.Columns [Col]. Field.AsString; 如何在dbgrid中获取文本,而不是直接从数据集获取文本 这样做的目的是我需要控制实时输入的内容 我不应使用: 在邮寄之前。 OnValidate 一旦改变 谢谢 你不能。它使用一个在列进入编辑模式时在内部创建的内置编辑器,然后立即释放。从用户可用性的角度来看,“实时”控制数据输入通常是一个非常糟糕的想法。也许有更好的方法来验证,但你没有提供足够的细节让我提出建议。
DBGrid1.Columns [Col]. Field.AsString;
如何在dbgrid中获取文本,而不是直接从数据集获取文本
这样做的目的是我需要控制实时输入的内容
我不应使用:
在邮寄之前。
OnValidate
一旦改变
谢谢 你不能。它使用一个在列进入编辑模式时在内部创建的内置编辑器,然后立即释放。从用户可用性的角度来看,“实时”控制数据输入通常是一个非常糟糕的想法。也许有更好的方法来验证,但你没有提供足够的细节让我提出建议。事实上,“你不能”并不完全正确。您可以创建自己的
TDBGrid
的子代,并重写它的CreateEditor
,以返回自己的编辑器实现,该实现允许您执行任何您想要的操作,并允许从外部访问它。“您不能”是指“使用标准TDBGrid”,在该字段中应为“您不能,AFAICT,使用标准TDBGrid
”,我已经控制键入的键。。。仅接受“0…”。。9'和','。此字段将接受以逗号分隔的“n”个电话号码。例如:9800450088004009045000,所以我想限制用户何时输入…以避免错误,例如:两个重复的逗号或少于8个字符的电话。明白了吗?控制数据库字段中编辑文本的正确方法是使用TField.EditMask
属性,或使用OnValidate
事件。我“明白了”,但试图在专栏中这样做是行不通的。:-)让用户在字段中输入他们想要的内容,并在适当的时间进行验证。如果是错误的,在他们解决问题之前不要让他们发布他们的更改;我已经在onBeforePost上进行了验证。但是我想要一种更好的方式在输入文本时与用户交互。我在这里再试试。