如题
解决方案 »
- Vb5stkit.dll未找到如何解决啊
- 画直线问题(焦急等待中……)
- 自定义控件问题:我如何把我的自定义控件做成一个容器,可以容纳其实控件,就像frame
- 当菜鸟遇到难题——多重分组、合计问题……
- 有关SQL的,错误提示是什么意思嘛,搞不懂!!!求助求助
- 200分求助!!!SQL2000连接问题!!!在线等待!!参与者有分!解答对者我另开贴给分
- 菜鸟问题,请问如何侦测一个字符串中是否有中文?
- 创建ActiveX控件,如何从form访问ActiveX控件上的其它控件?
- 关于winsock控件----up者有分
- 关于vb对word控件的设置
- 关于imagelist的问题
- 为什么老是不能用new来添加Winsock,up有分
Dim t As Integer, dt As Integer
Private Sub Check1_Click()
Form_Resize
End Sub
Private Sub Command1_Click()
If t = 0 Then t = 0: dt = 100: Timer1.Enabled = True
End SubPrivate Sub Form_Activate()
If g(0) = 0 Then '原始值只記錄一次
g(0) = Form1.ScaleWidth: g(1) = Form1.ScaleHeight '一開始表單的大小
ReDim a(Form1.Controls.Count - 1, 5)
j = 0
For Each i In Form1.Controls '記錄每個物件的資料
a(j, 0) = i.Name
On Error Resume Next '避免某些物件沒有指定的屬性而錯誤
a(j, 1) = i.Left: a(j, 2) = i.Top
a(j, 3) = i.Width: a(j, 4) = i.Height
a(j, 5) = i.FontSize
On Error GoTo 0 '取消錯誤處理
j = j + 1
Next i
t = 0: dt = 100: Timer1.Enabled = True
End If
End SubPrivate Sub Form_Resize()
If Form1.WindowState <> 1 And g(0) > 0 And g(1) > 0 Then
'重算物件的新位置
For i = 0 To Form1.Controls.Count - 1
Set b = Controls(a(i, 0))
On Error Resume Next
b.Left = a(i, 1) / g(0) * Form1.ScaleWidth
b.Top = a(i, 2) / g(1) * Form1.ScaleHeight
b.Width = a(i, 3) / g(0) * Form1.ScaleWidth
b.Height = a(i, 4) / g(1) * Form1.ScaleHeight
If Form1.ScaleWidth / g(0) < Form1.ScaleHeight / g(1) Then
b.FontSize = a(i, 5) / g(0) * Form1.ScaleWidth
Else
b.FontSize = a(i, 5) / g(1) * Form1.ScaleHeight
End If
On Error GoTo 0
If TypeOf b Is PictureBox Then
If Check1.Value = 1 Then b.PaintPicture b.Picture, 0, 0, b.ScaleWidth, b.ScaleHeight Else b.Cls
End If
Set b = Nothing
Next i
End If
End Sub
Private Sub Timer1_Timer()
t = t + Sgn(dt)
If t > 15 Then dt = -dt
If Form1.WindowState = 2 Then Form1.WindowState = 0: Timer1.Interval = 100: GoTo kk
If t = 16 Then Form1.WindowState = 2 - Form1.WindowState: Timer1.Interval = 1000: GoTo kk
Form1.Move (Screen.Width - Form1.Width - dt * 3) / 2, (Screen.Height - Form1.Height - dt) / 2
Form1.Move Form1.Left, Form1.Top, Form1.Width + dt * 3, Form1.Height + dt
kk:
If dt < 0 And t < 1 Then t = 0: Timer1.Enabled = False
End Sub對pic進行清除然后重新填充。
在對網各格﹐比如msflexgrid用最原始的辦法﹐比如對比
label1.top=label.top(原始高度)*form1.top(現在高度)/form1.top(原始高度)]
要是你連這個都看不明白偶也冒得話講da........
---- 在 设 计 一 般 应 用 软 件 时, 总 希 望 设 计 的 软 件, 无 论 显 示 器 分 辨 率 设 置 是640X480, 800X600 还 是1024X768, 无 论 显 示 器 设 置 是 在 大 字 体 还 是 小 字 体 软 件 都 能 正 常 运 行, 并 且 有 美 观 一 致 的 界 面。 本 人 在 用VB5.0 设 计《英 语 集 成 训 练 系 统V2.0》时, 亦 遇 到 这 样 的 麻 烦。 下 面 解 释 克 服 这 一 问 题 的 方 法。---- 一: 使 界 面 居 中---- 为 了 使 界 面 元 素 能 在 各 种 显 示 分 辨 率 下 均 有 合 理 的 布 局, 一 种 方 法 就 是 获 取 当 前 显 示 分 辨 率, 然 后 根 据 这 一 分 辨 率 计 算 界 面 各 元 素 的 位 置 和 大 小, 并 进 行 设 置。 这 种 方 法 虽 然 能 解 决 界 面 元 素 布 局 问 题, 但 需 要 知 道 每 个 元 素 的 位 置 和 大 小, 程 序 烦 琐。---- 我 这 里 采 用 的 方 法 是: 首 先 设 计 一 个 具 有 极 大 化, 无 边 界, 无 标 题, 无 控 制 盒 的 窗 体, 然 后 在 其 上 放 置 一 个 容 器 控 件Picture, 在Picture 中 再 放 置 其 它 控 件。 在 窗 体Load 事 件 中 根 据 当 前 的 显 示 分 辨 率 居 中Picture, 从 而 实 现 了 居 中 整 个 界 面。 具 体 代 码 如 下:Private Sub Form_Load()
Call CenterControl(Picture1)
End Sub
Public Sub CenterControl(obj As Object)
Dim cx, cy As Single
cx =(Screen.Width/Screen.
TwipsPerPixelX-obj.Width)/2#
cy =(Screen.Height/Screen.
TwipsPerPixelY-obj.Height)/2#
obj.Left = cx
obj.Top = cy
End Sub---- 二: 使 界 面 适 应 大 字 体 与 小 字 体---- Win95 在 创 建 控 件 时, 会 根 据 当 前 显 示 属 性 为 大 字 体 或 小 字 体 来 作 相 应 调 整。 尽 管 应 用 程 序 传 送 的 参 数( 控 件 位 置 和 尺 寸) 是 一 致 的, 但 实 际 控 件 的 位 置 和 尺 寸 在 这 两 种 情 形 下 并 不 一 样。 如 果 应 用 程 序 仅 仅 考 虑 一 般 小 字 体 的 情 况, 在 大 字 体 下 界 面 则 十 分 难 看 混 乱, 甚 至 无 法 操 作。 为 解 决 这 一 问 题, 首 先 应 了 解 当 前 显 示 器 设 置, 这 可 通 过 系 统 注 册 表 来 获 取。 下 面 的 程 序 采 用 了 另 一 种 方 法: 首 先 在 一 个 映 射 模 式 为Pixel 的 窗 体 中 放 置 一 个 控 件, 在 显 示 属 性 为 小 字 体 的 设 计 环 境 下 首 先 看 一 下 控 件 的 初 始 位 置x,y, 然 后 在 窗 体 的Load 事 件 中 计 算 出X 和Y 方 向 的 放 大 比 例xFac,yFac:Private Sub Form_Load()
xFac = 400# / mmlhwnd.Left
yFac = 400# / mmlhwnd.Top
End Sub---- 其 中,mmllhwnd 为 放 置 在 窗 体 中 的 控 件, 初 始 的 坐 标 为400,400。---- 最 后 在 各 个 需 要 调 整 界 面 的 窗 体Load 事 件 中 调 用 下 列 子 程 序, 调 整 各 控 件 的 位 置 与 大 小:Public Sub CorrectForm(fm As Form)
Dim C As Control
For Each C In fm.Controls
If TypeOf C Is Timer Then
ElseIf TypeOf C Is CommonDialog Then
ElseIf TypeOf C Is Line Then
C.X1 = C.X1 * xFac
C.Y1 = C.Y1 * yFac
C.X2 = C.X2 * xFac
C.Y2 = C.Y2 * yFac
Else
C.Left = C.Left * xFac
C.Top = C.Top * yFac
If TypeOf C Is SSCommand Then
C.Width = C.Width * xFac
C.Height = C.Height * yFac
C.FontSize = C.FontSize * xFac
ElseIf TypeOf C Is CommandButton Then
C.Width = C.Width * xFac
C.Height = C.Height * yFac
C.FontSize = C.FontSize * xFac
ElseIf TypeOf C Is ListBox Then
C.Width = C.Width * xFac
C.Height = C.Height * yFac
C.FontSize = C.FontSize * xFac
ElseIf TypeOf C Is ComboBox Then
C.Width = C.Width * xFac
C.FontSize = C.FontSize * xFac
End If
End If
Next C
End Sub---- 上 述 程 序 中 仅 列 举 了 几 个 典 型 的 控 件, 如 果 窗 体 中 还 有 其 它 类 型 的 控 件, 仿 造 上 述 程 序 加 入 对 这 些 控 件 类 型 的 处 理 即 可。