Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

关于弹出窗口在Windows 桌面上的位置。

李军华  发表于:2015-01-18 11:10:49  
复制

在设置弹出窗体属性时(窗体的【自动居中】,【自动调整】,【适应屏幕】),无论怎么组合,都没法让窗体弹出时位于主窗体的中间,大多数情况下,或紧靠windows 桌面左上角,或弹出时范围超出Windows 桌面大小(还必须移动窗体才能拖出关闭按钮),请问如何解决?

 

Top
煮江品茶 发表于:2015-01-19 09:04:29
用Move移动一下即可

李军华 发表于:2015-01-19 10:26:02
Move 移动我知道,但希望是能自适应不同的客户端屏幕才好啊

随心飞去 发表于:2015-01-19 23:48:43

给一个模块你,然后在窗体中加载。这是一个适应各种电脑屏幕的模块,不过是满屏显示。

Option Compare Database


'loooooo
Type JLtype '记录控件的属性
Tn As String '控件名
T1 As Integer '控件上边距离
L1 As Integer '控件左边距离
W1 As Integer '控件宽度
h1 As Integer '控件高度
End Type


Type CTS '记录窗体的属性
Cn As String '窗体名
OLDW As Integer '窗体原始宽
OLDH As Integer '窗体原始高
TZzz() As JLtype '窗体控件的属性数组
I As Integer '记录窗体控件数组的上标
End Type

Public CC() As CTS '记录窗体的数组(注意窗体太多时可能占用内存)


Public Sub TZLoad(frm As Form)
'--------------------------
On Error GoTo cuowu1
Dim Cw As Long '检查窗体的下标,系统第一次打开时很重要
Cw = UBound(CC)
'----------------------------
On Error GoTo cuowu


Dim N As String
Dim JJ As Integer
Dim PD As Boolean
'在数组中寻找窗体,找不到就增加一个
N = frm.Name
For JJ = LBound(CC) To UBound(CC)
If CC(JJ).Cn = N Then
   PD = True
   Exit For
Else
  PD = False
End If
Next JJ

If PD = False Then
JJ = JJ + 1
ReDim Preserve CC(JJ)
End If
'重新给值,防止发生错误时关闭窗体后能重新加载
CC(JJ).Cn = N
CC(JJ).OLDH = frm.InsideHeight
CC(JJ).OLDW = frm.InsideWidth
CC(JJ).I = 0 '初开始化原来的数据

Dim obj As Control
Dim L As Integer

For Each obj In frm
CC(JJ).I = CC(JJ).I + 1
L = CC(JJ).I
ReDim Preserve CC(JJ).TZzz(L)
CC(JJ).TZzz(L).Tn = obj.Name
CC(JJ).TZzz(L).T1 = obj.Top
CC(JJ).TZzz(L).L1 = obj.Left
CC(JJ).TZzz(L).W1 = obj.Width
CC(JJ).TZzz(L).h1 = obj.Height
Next obj


Exit Sub

cuowu1:
ReDim CC(1)
Resume Next

cuowu:
MsgBox Err.Description
Exit Sub

End Sub


Public Sub TZsize(Frmt As Form)
On Error GoTo cuowu

Dim N As String
Dim x As Double
Dim y As Double
Dim J As Integer
Dim JJ As Integer

N = Frmt.Name

For JJ = LBound(CC) To UBound(CC)
If CC(JJ).Cn = N Then Exit For
Next JJ


Dim obj As Control

y = Frmt.InsideHeight / CC(JJ).OLDH
x = Frmt.InsideWidth / CC(JJ).OLDW

Frmt.Section(acDetail).Height = Frmt.InsideHeight '主体很重要,否则要出错

For J = 1 To CC(JJ).I
Set obj = Frmt(CC(JJ).TZzz(J).Tn)
With obj
.Top = CC(JJ).TZzz(J).T1 * y
.Left = CC(JJ).TZzz(J).L1 * x
.Width = CC(JJ).TZzz(J).W1 * x
.Height = CC(JJ).TZzz(J).h1 * y
End With
Next J

Exit Sub

cuowu:
MsgBox Err.Description
Exit Sub

End Sub

 

主窗体中加载如下:

 

Private Sub Form_Load()
Call TZLoad(Me)
DoCmd.Maximize
End Sub

Private Sub Form_Resize()
Call TZsize(Me)
DoCmd.Maximize
End Sub

 

 

 

 



wyh99999 发表于:2015-01-20 09:32:57
很好用!谢了。

总记录:4篇  页次:1/1 9 1 :