# 看不太懂耶！可以再讨论一下吗？

Posted by 小马 on September 24, 1998 at 17:02:36:

In Reply to: Re: 可以这样做。。。 posted by David Wong on September 24, 1998 at 13:40:24:

: 你可以用一个 form standard function 来做，例如叫 FieldValid(lastItem) ，然后在 textbox 的 lostFocus 中呼叫这个函数，并检查 lastItem 是什么，从而进行检查。

当您写在lostfocus事件中，虽然您将资料检查程式段放在另一个subroutine，但当资料检查不过时您一样也是要将focus设在原来之栏位，那不是跟我原来的程式码中text1.setfocus是一样的意思了吗？可否就原来那个简单的程式码搭配您的方法加以改写说明一下呢？看如何才不会造成无穷回圈，而且需能适用有多个textbox喔！而不是只针对两个textbox的情形

: 但最重要的还是如何知道 getFocus 及 lostFocus 是如何触发的，如果不是 user 用 Tab 或其他触发的，就可以不用检查了。如下程式是用来判断 gotFocus 是如何触发的。

: Function gbStdActivateByUser () As Integer
: 'Check whether control is activated by user action
: 'Check the state of Tab, Left mouse button, Numpad 4 and Numpad 6 which change the control focus
: 'If value of GetKeyState() function < 0, that means one of these keys is pressed
: gbStdActivateByUser = (GetKeyState(KEY_TAB) < 0 Or GetKeyState(KEY_LBUTTON) < 0 Or GetKeyState(KEY_NUMPAD4) < 0 Or GetKeyState(KEY_NUMPAD6) < 0)
: End Function

请问一下getkeystate这个函数是API的函数吗？后学所学尚浅望不吝指正，谢谢！

Follow Ups:

- Re: 看不太懂耶！可以再讨论一下吗？ David Wong 13:33:35 9/25/98 (2)
  - 上次回信有个地方您漏看了，是我问题所在 小马 16:31:30 9/25/98 (1)
    - Re: 上次回信有个地方您漏看了，是我问题所在 David Wong 21:12:22 9/27/98 (0)