台灣最大程式設計社群網站
線上人數
919
 
會員總數:243865
討論主題:188351
歡迎您免費加入會員
討論區列表 >> ACCESS >> 關於解析度問題
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
關於解析度問題
價值 : 0 QP  點閱數:11233 回應數:79

樓主


初學者
87 87
818 111
發送站內信

請問如何讓表單開啟時能隨不同解析度開啟全螢幕
小弟感激不盡

本篇文章發表於2004-08-31 17:51
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

tungta
捐贈 VP 給 tungta 檢舉此回應
寄給你說明與範例
本篇文章回覆於2004-09-01 00:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應


檢舉此回應
感謝tungta的幫忙
                                     謝謝
本篇文章回覆於2004-09-01 11:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

ardan
檢舉此回應
可以也寄一份給我嗎?
我也有這方面的困擾
謝謝
本篇文章回覆於2004-09-01 13:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

tungta
捐贈 VP 給 tungta 檢舉此回應
範例已寄出
本篇文章回覆於2004-09-01 15:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

ardan
檢舉此回應
多謝
本篇文章回覆於2004-09-01 15:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應


檢舉此回應
感謝tungta大哥
執行之後發現仍並不會依據不同的解係度作調整
例如用800*600作表單 用1024*768開啟原本的欄位等等仍然是800*600的位置好像不會隨解析度的不同作調整ㄟ
還是有其他問題呢??
本篇文章回覆於2004-09-01 18:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

tungta
捐贈 VP 給 tungta 檢舉此回應
我自己不需要所以沒用過,但說明中不是有提到螢幕解析度由大變小(1024*768→800*600)會自動調整,由小變大(800*600→1024*768)就要關閉資料庫再打開才可以,不知你有這樣做了嗎?
本篇文章回覆於2004-09-01 22:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應


檢舉此回應
感謝tungta的回覆
我想您誤會我的意思了我說的是會隨解析度的不同版面配置(相關欄位)及視窗大小也會隨解析度的不同而作調整
而不是指視窗大小的調整不知這樣的說明您懂了嗎?
不好意思沒說明清楚
本篇文章回覆於2004-09-02 08:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

史努比
檢舉此回應
這個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上來吧!!!
本篇文章回覆於2004-09-02 12:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應


檢舉此回應
感謝史努比大哥的幫忙經過實際執行後果然發現問題入下
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
執行物件不支援此屬性或方法
麻煩大哥了
   謝謝
本篇文章回覆於2004-09-02 14:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

史努比
檢舉此回應
我打錯字了!!!
應該是"height"不是"hight"!!!
還有ctl.font.size應該改成ctl.FontSize(我當成vb來用了...sorry!)
程式開始運算各控制項屬性前應先加上一句"docmd.maxmize"讓表單自動最大化

這樣設計程式應該會出現控制項文字大小太大或太小的問題...你可以手動修改字型大小的運算式!另外要注意...有些控制項不支援fontsize屬性,比如:子表單控制項(sub form),所以當程式在設定控制項字型大小時,你一定要讓程式自己能夠把這類控制項剔除(跳過不設定它的字型大小),不然就會出現你剛剛貼上來的錯誤「該物件不支援此屬性或方法」
本篇文章回覆於2004-09-02 14:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應


檢舉此回應
不好意思史努比 大哥還是有問題ㄟ
ctl.FontSize = ctl.FontSize * Int(768 / 600 * 1024 / 800)
執行到這裡就出現錯誤訊息了如下
執行階段錯誤'438
物件不支援此屬性或方法
再次麻煩您了
謝謝
本篇文章回覆於2004-09-02 15:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

史努比
檢舉此回應
前面有提到了...很多控制項(如:子表單...)是沒有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
本篇文章回覆於2004-09-03 10:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
回應

新生兒
檢舉此回應
太棒了史努比 大哥
終於可以了感謝您大大的幫忙
謝謝啦 ^^
本篇文章回覆於2004-09-03 10:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

新生兒
檢舉此回應
 SORRY 經過更盡一步的測試欄位嚴重的移位
是否有方法解決呢?
把欄位更明確的定位
本篇文章回覆於2004-09-03 12:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.