VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

foxpro9 有定錨及自適應視窗大小功能,很好用anchor

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
CPS0204



註冊時間: 2014-08-24
文章: 475


第 1 樓

發表發表於: 星期六 二月 15, 2025 2:14 pm    文章主題: foxpro9 有定錨及自適應視窗大小功能,很好用anchor 引言回覆

問了一下gpt大神,foxpro9 有哪些好用的功能
他說有anchor
隨者form 放大縮小,grid 可以自動適應(anchor=1+2+4+8=15)
其他的請看 gpt 說明:

在 Visual FoxPro 9 (VFP9) 中,Anchor 屬性允許你控制 表單(Form) 上的 控制項(Controls) 在視窗縮放時如何變動位置與大小。這對於 自適應 UI 設計 非常有用。

⚡ 1. ANCHOR 屬性值的計算方式
ANCHOR 屬性是由 位元運算值 (Bitmask) 來控制:

1 = 固定 左 (Anchor to Left)
2 = 固定 上 (Anchor to Top)
4 = 固定 右 (Anchor to Right) → 會影響寬度
8 = 固定 下 (Anchor to Bottom) → 會影響高度
🔹 這些值可以 相加,來實現更複雜的效果:

Anchor 值 效果
3 (1+2) 固定左上角
5 (1+4) 左右延展 (固定高度)
10 (2+ 8 ) 上下延展 (固定寬度)
15 (1+2+ 4+ 8 ) 全螢幕自適應
⚡ 2. 實際範例
假設有一個 表單 (Form),裡面有一個 TextBox1 和 CommandButton1,我們希望:

TextBox1 在 視窗縮放時橫向延展(固定左側和右側)
CommandButton1 固定在 視窗右下角
✍ 設定 ANCHOR 屬性的方法
有兩種方式:(1) 透過屬性窗口,(2) 透過程式碼

(1) 在「屬性視窗」中設定
開啟表單 (Form Designer)
選擇 TextBox1:
在「屬性 (Properties)」窗口中找到 Anchor
設定為 5 (1 + 4),讓 TextBox 左右延展
選擇 CommandButton1:
設定 Anchor = 12 (4 + 8 ),讓按鈕固定在右下角
(2) 用程式碼動態設定
你也可以在 程式碼 中設定 Anchor,通常放在 Init() 事件中:

foxpro
複製
編輯
PROCEDURE Form1.Init
This.TextBox1.Anchor = 5 && 固定左側與右側 (隨視窗縮放變寬)
This.CommandButton1.Anchor = 12 && 固定右下角
ENDPROC
這樣當表單縮放時:

TextBox1 會隨著視窗變寬而變寬
CommandButton1 會一直保持在右下角
⚡ 3. 測試方法
執行表單 (DO FORM)
嘗試 縮放視窗
觀察控制項的大小與位置變化
這樣就可以實現 響應式 UI 了 🎯!

💡 4. ANCHOR 常見應用場景
🔹 擴展式輸入框 (Textbox, Editbox):
Anchor = 5 (1+4 ),讓輸入框可以隨視窗變寬。

🔹 固定按鈕在右下角 (CommandButton):
Anchor = 12 (4+8 ),當視窗變大,按鈕還是保持在右下角。

🔹 表格 (Grid) 的自適應:
Anchor = 15 (1+2+4+8 ),讓 Grid 自動擴展寬度和高度。

✅ 結論
Anchor 讓 VFP9 的表單更具彈性,不需要寫複雜的 Resize 事件。
使用 Anchor 可讓 UI 自適應不同螢幕大小,提高用戶體驗。
可以透過 屬性視窗 或 程式碼 (.Anchor = 值) 設定。
回頂端
檢視會員個人資料 發送私人訊息
foxy



註冊時間: 2007-08-16
文章: 258
來自: 泰國

第 2 樓

發表發表於: 星期一 二月 17, 2025 11:17 am    文章主題: 引言回覆

Anchor 的確不錯, 但有一個缺點,不能按照元件(object)本來的大小比例來放大
在 textbox (anchor=15) 的 click() 裡面輸入下列代碼:
WAIT WINDOW this.height
WAIT WINDOW thisform.height
WAIT WINDOW thisform.height-this.height

在放大form前後, click textbox, 上面的第3行 WAIT WINDOW thisform.height-this.height 都是固定數值, 沒有按照 textbox 和 form 的原來比列對textbox變更高度

_________________
進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + Flutter 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作