返回列表 上一主題 發帖

[發問] Userform最大化(且內容比例自動放大?)

[發問] Userform最大化(且內容比例自動放大?)

本帖最後由 PKKO 於 2015-5-13 17:47 編輯

小弟已知Userform 最大化的程式碼,也知道依比率放大的程式碼,但不知道如何自動取得兩者之間的比率,來自動設定放大的倍數...
有人知道zoom的比率要如何求得嗎?

比率的程式碼
UserForm1.Zoom = 125

最大化的程式碼
  1. Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
  2. Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
  3. Private Declare Function SetActiveWindow Lib "user32" (ByVal hwnd As Long) As Long
  4. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
  5. Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  6. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  7. Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
  8. Private Const WS_MAXIMIZEBOX = &H10000
  9. Private Const WS_MINIMIZEBOX = &H20000
  10. Private Const GWL_STYLE = (-16)
  11. Private Const SW_SHOWMAXIMIZED = 3
  12. Private Const SW_SHOWNORMAL = 1
  13. Private Const SW_SHOWMINIMIZED = 2
  14. Private Const WS_THICKFRAME = &H40000
  15. Const SM_CXFULLSCREEN = 16
  16. Const SM_CYFULLSCREEN = 17
  17. Const HWND_TOPMOST = -1
  18. Const SWP_SHOWWINDOW = &H40
  19. Dim hWndForm As Long
  20. Dim IStyle As Long

  21. Private Sub UserForm_Initialize()
  22.   hWndForm = FindWindow("ThunderDFrame", Me.Caption)
  23.   IStyle = GetWindowLong(hWndForm, GWL_STYLE)
  24.   IStyle = IStyle Or WS_THICKFRAME
  25.   IStyle = IStyle Or WS_MINIMIZEBOX
  26.   IStyle = IStyle Or WS_MAXIMIZEBOX
  27.   SetWindowLong hWndForm, GWL_STYLE, IStyle
  28. End Sub

  29. Public Sub myShowMax()
  30.    
  31.     SetActiveWindow hWndForm
  32.     ShowWindow hWndForm, SW_SHOWMAXIMIZED
  33. End Sub
複製代碼
PKKO

回復 2# bobomi

大大好威~

感謝回復,經測試後21"螢幕可正常使用

反倒是筆電的13"螢幕會變成太大,有辦法依照比例自動放大或是縮小嗎?
PKKO

TOP

回復 8# bobomi


    感謝大大的用心! 我測試完再跟您報告 !
PKKO

TOP

本帖最後由 PKKO 於 2015-5-19 19:01 編輯

回復 8# bobomi

javascript:;
    感謝大大,我測試過可以自動放大的userform 超酷的~跟網頁一樣自由奔放,但....放大效果不佳,以您的userfrom來放大之後會發現比例怪怪的
我想原因應該是跟妳說的一樣,zoom只能同時放大,無法只調整任何一邊的關係

至於13"電腦的部分,我測試過妳最後的程式碼,跟之前的一樣呢!會超出邊界(本身原本的大小是不會超過的)

附件是我的USERFORM的大小!

Documents.rar (2.29 KB)

USERFORM2

PKKO

TOP

回復 11# GBKEE


    超版大大,我放入表單內使用,並取代USERFORM的所有程式碼,但無論怎麼點滑鼠都無法反映?
PKKO

TOP

回復 14# GBKEE


    感謝,已了解使用方式!
PKKO

TOP

回復 16# bobomi


    大大,裡面沒有userform = =
PKKO

TOP

回復 8# bobomi


    大大您好,
按照大大您的做法,可以手動拉大比率(大大您已經完成了!),但可否加上一個自動儲存Userform最後的調整狀況,如果沒有記憶,使用者每次都要調整實在辛苦(例如記憶在FormSize這個sheet名稱內),
下次打開始會自動抓取上次調整的大小!
PKKO

TOP

回復 10# GBKEE


    超版大大您好,您的這個方式可以保持表單以及內容比率的完整性,非常實用,也可讓小弟了解到底是如何放大及縮小的
但有沒有辦法可以直接放大
而且放大的比率是以寬或是高,任一邊的極限為極限
避免高已經到極限了,可是寬還沒,導致直接放到最大化之後,高會超過螢幕可視的位置
PKKO

TOP

回復 20# bobomi


    比例上還是會有點奇怪,放到最大時,右邊會有多餘的空間,不過沒關係,已經很感謝妳囉!
PKKO

TOP

        靜思自在 : 真正的愛心,是照顧好自己的這顆心。
返回列表 上一主題