關於解析度問題

請問如何讓表單開啟時能隨不同解析度開啟全螢幕
小弟感激不盡
tungta
寄給你說明與範例
感謝tungta的幫忙
                                     謝謝
ardan
可以也寄一份給我嗎?
我也有這方面的困擾
謝謝
tungta
範例已寄出
ardan
多謝
感謝tungta大哥
執行之後發現仍並不會依據不同的解係度作調整
例如用800*600作表單 用1024*768開啟原本的欄位等等仍然是800*600的位置好像不會隨解析度的不同作調整ㄟ
還是有其他問題呢??
tungta
我自己不需要所以沒用過,但說明中不是有提到螢幕解析度由大變小(1024*768→800*600)會自動調整,由小變大(800*600→1024*768)就要關閉資料庫再打開才可以,不知你有這樣做了嗎?
感謝tungta的回覆
我想您誤會我的意思了我說的是會隨解析度的不同版面配置(相關欄位)及視窗大小也會隨解析度的不同而作調整
而不是指視窗大小的調整不知這樣的說明您懂了嗎?
不好意思沒說明清楚
史努比
這個API只是用來取得目前螢幕解析度用的...
並不能照你所述完成你的要求,改變表單大小,修改控制項位置!
如果你一定要改,有兩個方式可以完成你的要求
一、為每一個表單建立各種不同解析度的表單....等到程式中出現開啟表單的指令時,先利用api取得螢幕解析度後,再決定要那一張顯示出來!
二、在每一張表單的form_load事件寫程式碼,動態改變表單上控制項的長、寬、文字大小、x位置、y位置!這個寫起來比較費功,但是總比你每張表單都做三次好!利用
dim ctl as control 
for each ctl in me.controls
ctl.hight = ctl.hight * (目前解析度的高 / 原本最適解析度的高'600')
ctl.width = ctl.width * (目前解析度的寬 / 原本最適解析度的寬'800')
ctl.font.size = ctl.font.size * int(目前解析度的高 / 原本最適解析度的高 * 目前解析度的寬 / 原本最適解析度的寬)
ctl.top = ctl.top - ctl.top * (目前解析度的高 / 原本最適解析度的高)
ctl.left = ctl.left - ctl.left * (目前解析度的寬 / 原本最適解析度的寬)
next 
這樣先試試看...沒試過我不確定能不能成功!有問題再PO上來吧!!!
感謝史努比大哥的幫忙經過實際執行後果然發現問題入下
Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Me.Controls
ctl.hight = ctl.hight * (768 / 600) '目前解析度的高 / 原本最適解析度的高
ctl.Width = ctl.Width * (1024 / 800) '目前解析度的寬 / 原本最適解析度的寬
ctl.Font.Size = ctl.Font.Size * Int(768 / 600 * 1024 / 800)
ctl.Top = ctl.Top - ctl.Top * (768 / 600)
ctl.Left = ctl.Left - ctl.Left * (1024 / 800)
Next
End Sub
出現下列錯誤訊息:
執行階段錯誤438
執行物件不支援此屬性或方法
麻煩大哥了
   謝謝
史努比
我打錯字了!!!
應該是"height"不是"hight"!!!
還有ctl.font.size應該改成ctl.FontSize(我當成vb來用了...sorry!)
程式開始運算各控制項屬性前應先加上一句"docmd.maxmize"讓表單自動最大化

這樣設計程式應該會出現控制項文字大小太大或太小的問題...你可以手動修改字型大小的運算式!另外要注意...有些控制項不支援fontsize屬性,比如:子表單控制項(sub form),所以當程式在設定控制項字型大小時,你一定要讓程式自己能夠把這類控制項剔除(跳過不設定它的字型大小),不然就會出現你剛剛貼上來的錯誤「該物件不支援此屬性或方法」
不好意思史努比 大哥還是有問題ㄟ
ctl.FontSize = ctl.FontSize * Int(768 / 600 * 1024 / 800)
執行到這裡就出現錯誤訊息了如下
執行階段錯誤'438
物件不支援此屬性或方法
再次麻煩您了
謝謝
史努比
前面有提到了...很多控制項(如:子表單...)是沒有FontSize這個屬性的!
你要先檢查有那些控制項是不支援FontSize這個屬性的
這些控制項的名稱是什麼,先把它都用筆記下來
Private Sub XCXForm_Load()
'On Error Resume Next  '加上這一行,可以去除無法支援FontSize屬性的控制項產生的錯誤,但是那一個控制項出錯,你就不知道了!
Dim Ctl As Control
For Each Ctl In Me.Controls
...
...
...
'在你設定字型大小之前,先用一個IF來檢查目前正在設定的控制項名稱為何
If Not Ctl.Name = "XXX" or "OOO" or "ABC" or..... Then 'XXX,OOO,ABC是不支援設定字型大小的控制項名稱
Ctl.Fontsize = int(Ctl.Fontsize * (1024/800 * 768/600))  '這裡修改一下我原來的程式....
End If
If 新解析度長/最適解析度長 > 1 then
Ctl.Top = Ctl.Top + (Ctl.Top * (768/600) - Ctl.Top)
else
Ctl.Top = Ctl.Top - (Ctl.Top - Ctl.Top * (768/600))
end if
If 新解析度寬/最適解析度寬 > 1 then
Ctl.Left = Ctl.Left + (Ctl.Left * (1024/800) - Ctl.Left)
else
Ctl.Left = Ctl.Left - (Ctl.Left - Ctl.Left * (1024/800))
end if     '昨天想了一下,控制項位置的程式也要改一改!

Next
新生兒
太棒了史努比 大哥
終於可以了感謝您大大的幫忙
謝謝啦 ^^
新生兒
 SORRY 經過更盡一步的測試欄位嚴重的移位
是否有方法解決呢?
把欄位更明確的定位
史努比
各欄位的移位問題本來我也滿頭痛的,可是你只要回頭想一想,螢幕解析度大小改變後,表單的最大化後的大小也會和原來在最適解析度最大化的大小有著一定的比例關係!如果能夠利用這個關係來改變控制項在表單上的放置位置,應該就是這個問題的解答!你可以講講你的想法是什麼,再PO上來大家一起來討論程式碼該怎麼寫!因為畢竟我連你的表單長什麼樣子都沒看過!不是嗎?
tungta
建議你用另一個方式:下面1.2.兩個程式是史努比兄提供的
1.把下面這段程式碼加到你的起始表單的form_load裡就可以把所有的工具列,功能表列全部關閉!關到一個都不剩!
For Each cbs In CommandBars
If Not (cbs.name = "報表列印") Then '如果不是使用者自訂的功能表就關閉
   cbs.Enabled = False
End If
Next

2.若要再回復原本的工具列,就做一個按鈕執行下列的程式就什麼都開了,但是連你不要用到的工具列也打開了....
For Each cbs In CommandBars
   cbs.Enabled = True
Next

3.自訂一個工具列“報表列印”,在自訂工具列的選項中“報表列印”不要打勾
4.所有表單都設計按鈕來做要執行的動作,不要使用預設工具列
5.在所有報表加入下列程式
Private Sub Report_Close()
1001 DoCmd.ShowToolbar "報表列印", acToolbarNo '關閉自訂工具列
End Sub

Private Sub Report_Open(Cancel As Integer)
1001 DoCmd.ShowToolbar "報表列印", acToolbarYes '顯示自訂工具列
1002 DoCmd.Maximize '最大化
End Sub

6.再將“工具>啟動”對話方塊中的“顯示狀態列”打勾取消
7.這樣只有在呼叫報表後才會出現“報表列印”工具列,表單都不會有工具列,若每個表單都配合設定最大化開啟與將電腦的工作列設定自動隱藏,就完全可以達到你要的開啟全螢幕的功能,不用再費神處理解析度的問題
8.以上提供給你做參考
tungta
在這兒也請問各位學長----
1.如下程式是關閉表單的”按下右鍵快顯功能表列”:
Private Sub 細部_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
1001 If Button = 2 Then '若按下右鍵
1002    Me.ShortcutMenu = False '關閉快顯功能表列
1003 End If
End Sub

2.滑鼠放在自訂工具列按下右鍵還會出現快顯功能表列,請問如何將之關閉?
史努比大哥害您費神了說真的原本我是依據800*600的解析度來設計表單的但是在別台電腦使用該解析度為1024*768才發現此問題的因為在800*600下是滿版的設計但是在1024*768會發現空白的地方粉多而且字體也比較小所以想說請教各位是否有可以控制此問題的vba好來解決此解析度的問題好讓不管是在800*600或是1024*768的解析度下都能與在設計當時的解析度下版面是一樣的或許是access無法達到這個要求吧
我是有想到或許將所有欄位大小給予適當定義的話或許跑位的清況可能會改善一點吧
至於Maximize 好像只能將其開到最大但無法依據解析度來作改變ㄟ....這點我是過了@@
史努比
我從一開始就知道你的問題的所在,所以我的程式碼都是為了相同的問題去設計的,並不費神,因為我也想寫出一個讓ACCESS和.net一樣的模組動態鎖定表單上控制項的大小!
SORRY史努比大哥我並不是這個意思只是我的程度太差所以.....
但是我想是不是可以先讓程式偵測使用者電腦的解析度再來判定需開啟何種表單模組或許會比較快(僅供參考)
小佳
可以寄一份範例給我嗎~謝謝
sisi@ms17.url.com.tw
tungta
範例已寄出
Vincent
可以寄一份範例給我嗎~謝謝
chihbao@yahoo.com.tw
tungta
範例已寄出
Vincent
謝謝您,已收到!
小老頭
Dear Tung Ta,
是否也可以向你取得此範例參考.
supingwa@hotmail.com
tungta
範例已寄出
文隆
可以寄範例給我嗎
ing.chou@msa.hinet.net
tungta
範例已寄出
michael
大師您好
也可以寄範例給我參考嗎?謝謝.
ming77@ms3.hinet.net
tungta
範例已寄出
kimi
大師您好
也可以寄範例給小弟我參考嗎?謝謝您喔!
kimi147@gmail.com
tungta
範例已寄出
田仔
可以也寄一份給我嗎?
我也有這方面的困擾
謝謝
田仔
可以也寄一份給我嗎?
我也有這方面的困擾
謝謝 !
tn710375@pchome.com.tw
tungta
範例已寄出
ANDT
懇請寄一個範例給我 andy8@macau.ctm.net
8168
大師太厲害了,
我也想要一份範例,不知是否可以也寄個範例給我?
麻煩你了,謝謝!
mi8168@yahoo.com.tw
ANDT
懇請寄一個範例給我 andy8@macau.ctm.net
tungta
範例已寄出
ANDT
非常多謝您
kevin
謝謝大大 麻煩也寄一份給我
tung.soung@msa.hinet.net (請不要壓縮)
感激不盡
tungta
範例已寄出
kevin
麻煩您,也寄一份範例給我,感謝感謝
kevinlai01@pchome.com.tw
tungta
範例已寄出
tony
麻煩您,也寄一份範例給我,感謝感謝
tony_account@yahoo.com.tw
tungta
範例已寄出
Frances
麻煩也寄一份範例給我好嗎?!
謝謝~
yfh116@gmail.com
tungta
範例已寄出
小美
麻煩也寄一份範例給我好嗎?
iori63tw@yahoo.com.tw
tungta
範例已寄出
ANDT
2007已有此功能了
kevin
大大
我也要範例
謝謝您
messiah0102@gmail.com
tungta
範例已寄出
Tungta 您好
可以跟你要範例嗎? 謝謝你喔!
gto1208@hotmail.com
tungta
範例已寄出
andy
Tungta 您好
可以跟你要範例嗎? 謝謝
hsiehchian@gmail.com
tungta
範例已寄出
小尤
可以寄一份範例給我嗎??謝謝!!
ANDT
是否可寄一份給我嗎? andy8@macau.ctm.net
tungta
範例已寄出
tungta
To:ANDT
範例寄不出去
請檢查e-mail是否正確
ANDT
andy8@macau.ctm.net
ski@mi.com.mo
tungta
範例已寄出
kevin
大大 我這個問題很嚴重
可否寄一份範例小弟呢
hergenstw@gmail.com
tungta
範例已寄出
吳餅鬆
tungta大哥,我目前也有這方面的問題
是否可以寄範例給我
吳餅鬆
u9724018@ccms.nkfust.edu.tw
tungta
範例已寄出
ammo
tungta:
我目前也遇到這方面的問題...
像是:要如何讓ACCESS一開啟,就自動把表單載入並全螢幕顯示
我是使用 ACCESS 2010
是否可請tungta將寄範例給我學習
謝謝~
ammo
補上 E-MAIL:ammo0904@gmail.com
tungta
範例已寄出
超人
小弟使用不同電腦也是遇到此問題~~
請tungta大大寄範例給我學習,感恩!謝謝~

mail: superjen@ms25.hinet.net

tungta
範例已寄出
kinyo
小弟也正好有此問題
可否也可寄一份給我呢?
kinyo1978@yahoo.com.tw
謝謝
tungta
範例已寄出
林君育
可以也寄一份給我嗎?感謝 !
grd640@gmail.com
超人
NB和桌機的畫面大小不同....
可以也寄一份給我嗎?感謝 !
suprajen@gmail.com
123木頭人
您好
可以也寄一份範例給我嗎?感謝 !
marco503737@gmail.com
吳偉正
請問前輩範本還在嘛!?
如果方便我想想索取一份。
edwu.safety@gmail.com

麻煩前輩 拜託拜託!!
woeijyh
您好
可以也寄一份範例給我嗎?感謝 !
yangwoeijyh@gmail.com
回到頂部