以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助:绑定数据的控件怎么自动锁定了?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=52768)

--  作者:jerzhh
--  发布时间:2014/6/23 0:04:00
--  求助:绑定数据的控件怎么自动锁定了?

老大:帮忙看看我的代码哪里出问题了?

在“查阅与修订”窗口中点击“新增”或“修改”,打开的数据输入窗口中凡是绑定数据的控件都会随着鼠标的点击自动锁定,这是怎么回事?


--  作者:jerzhh
--  发布时间:2014/6/23 6:34:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:截图0.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:截图1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:截图2.jpg
图片点击可在新窗口打开查看

--  作者:jerzhh
--  发布时间:2014/6/23 6:39:00
--  

窗口表事件

 

窗口与控件事件

 

查阅与修订_AfterClose

 

Tables("客户").AllowEdit = True

Tables("客户.人员").AllowEdit = True

Tables("客户.设备").AllowEdit = True

Tables("客户.走访记录").AllowEdit = True

Tables("客户.别名").AllowEdit = True

Tables("客户.其他地址").AllowEdit = True

 

 

查阅与修订_Button_新增_Click

 

Vars("NameLastAttach") = e.Form.Name

Vars("AddNew") = True

Dim CTN As String = CurrentTable.Name

With Tables(CTN)

    .AddNew()

    .AllowEdit = True

    .Current.Locked = False

End With

Select Case CTN

    Case "客户"

        Forms("基本信息").Open()

    Case "客户.人员"

        Forms("人员").Open()

    Case "客户.设备"

        Forms("设备").Open()

    Case "客户.走访记录"

        Forms("走访").Open()

    Case "客户.别名"

        Forms("别名").Open()

    Case "客户.其他地址"

        Forms("另址").Open()

End Select

Tables(CTN).AllowEdit = False

 

 

<!--EndFragment-->
--  作者:jerzhh
--  发布时间:2014/6/23 6:40:00
--  

窗口表事件

 

窗口与控件事件

 

人员_AfterClose

 

Tables("客户.人员").AllowEdit = False

Forms(Vars("NameLastAttach")).Show()

 

人员_AfterLoad

 

e.Form.TootlTipTitle=""

\'----------------------------------------------------------------------

With Tables("客户")

    e.Form.Text = "信息" & IIF(Vars("AddNew"),"录入","修改") & " [" & "重要人员" & "]  " & .Current("客户编号") & "  " & .Current("单位名称")

End With

Tables("客户.人员").AllowEdit = True

Tables("客户.人员").Current.Locked = False

 


--  作者:jerzhh
--  发布时间:2014/6/23 6:41:00
--  

人员_Button_保存_Click

 

\'------------------------------------------------------

With Tables("客户.人员")

    If .Current.IsNull("姓名") Then

        MessageBox.Show("姓名是必填项!")

    Else

        If .Current.IsNull("更新日期") Then

            .Current("更新日期") = Date.Today

        End If

        .Current.Save()     \'保存新纪录

        e.Form.Close()

    End If

End With

 

人员_Button_放弃_Click

 

Dim Result As DialogResult

Dim str_return,str_message As String

str_return =  chr(10) & chr(13)

str_message = "刚刚" & IIF(Vars("AddNew"),"录入","修改") & "的内容确定不要了吗?"

Result = MessageBox.Show(str_message,"",MessageBoxButtons.YesNo,MessageBoxIcon.Question)

If Result = DialogResult.Yes Then

    Tables("客户.人员").Current.Reject()

    e.Form.Close()

End If

 

<!--EndFragment-->
--  作者:blackzhu
--  发布时间:2014/6/23 7:47:00
--  
锁定行
--  作者:jerzhh
--  发布时间:2014/6/23 8:07:00
--  

应该没锁定,因为设定如下:

 

Tables("客户.人员").Current.Locked = False


--  作者:有点甜
--  发布时间:2014/6/23 9:08:00
--  

 呃,你设置表不能编辑,行怎么能编辑?

 

Tables("客户.人员").AllowEdit = False


--  作者:jerzhh
--  发布时间:2014/6/23 9:39:00
--  

我的设定是这样的:

在查阅某个客户的详细资料时不允许编辑,只有打开编辑窗口时才允许编辑。

 

加载编辑窗口时允许编辑

 

人员_AfterLoad

 

……

Tables("客户.人员").AllowEdit = True            \'表解锁

Tables("客户.人员").Current.Locked = False      \'行解锁

 

关闭编辑窗口时再禁止编辑

 

人员_AfterClose

Tables("客户.人员").AllowEdit = False

 

最开始为了省事没有在每个窗口设置上述设定,而是统一在调用编辑窗口前后设置。

 

查阅与修订_Button_新增_Click

 

……

Dim CTN As String = CurrentTable.Name

With Tables(CTN)

    .AddNew()

    .AllowEdit = True

    .Current.Locked = False

End With

Select Case CTN

    Case "客户"

        Forms("基本信息").Open()

    Case "客户.人员"

        Forms("人员").Open()

……

End Select

Tables(CTN).AllowEdit = False

 

后来又分别在每个编辑窗口进行设置,还是不解决问题。

 


--  作者:jerzhh
--  发布时间:2014/6/23 9:43:00
--  

 什么情况下鼠标点到哪里,锁定到哪里?