以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于窗口弹出位置 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=117330) |
-- 作者:huangfanzi -- 发布时间:2018/4/10 19:11:00 -- [求助]关于窗口弹出位置 项目中窗口AfterLoad有以下代码: Dim p As point With CurrentTable.Grid p = new point(.Cols(.Col).Left,.Rows(.Row).Bottom) p = .PointToScreen(p) End With e.Form.BaseForm.Location = p 此代码的作用是当双击一条记录中例如“客户”单元格时弹出一个窗口,让用户选择客户,这个窗口会出现在当前双击单格位置的下方,现在有个问题,如果当前操作的记录位于整个屏幕的最下方时,这个弹出的窗口就会显示到屏幕的最下方的可视范围外了,这个窗口又是一个模式窗口,造成用户以为系统死机了,因为不能再操作了 假定窗口的高度是400,如何写代码,可以让代码实现如果当前双击单元格的位置处理屏幕最下方400范围内,则窗口的显示位置的Y坐标就自动调整到 屏幕高度-窗口高度 谢谢老师!
|
-- 作者:有点蓝 -- 发布时间:2018/4/10 20:25:00 -- 试试 Dim p As point With CurrentTable.Grid p = new point(.Cols(.Col).Left,.Rows(.Row).Bottom) p = .PointToScreen(p) End With If p.y + e.Form.BaseForm.Height > ScreenHeight Then p.y = ScreenHeight - e.Form.BaseForm.Height - 20 End If e.Form.BaseForm.Location = p |
-- 作者:huangfanzi -- 发布时间:2018/4/10 21:01:00 -- 可以了,稍微调整了下: Dim p As point With CurrentTable.Grid p = new point(.Cols(.Col).Left,.Rows(.Row).Bottom) p = .PointToScreen(p) End With If p.y + e.Form.BaseForm.Height + 40 > ScreenHeight Then p.y = ScreenHeight - e.Form.BaseForm.Height - 40 End If e.Form.BaseForm.Location = p |