'vb控制項隨窗體大小而變化
'當窗體大小改變時,如何動態的改變控制項的大小是許多vb程式設計師頭痛的
'事。有的人設定窗體resizable但卻不改變控制項的大小;有的人則根據控制項的
'絕對位置與視窗大小相加減的辦法來重新定位控制項與改變大小,這種辦法比
'較繁瑣,且不可重用;當然也有人則限定視窗乾脆不讓改變。有沒有一種簡
'便易行的辦法?答案是肯定的,下面給出乙個一勞永逸的辦法,源程式如下:
option explicit
private formoldwidth as long
'儲存窗體的原始寬度
private formoldheight as long
'儲存窗體的原始高度
'在呼叫resizeform前先呼叫本函式
public sub resizeinit(formname as form)
dim obj as control
formoldwidth = formname.scalewidth
formoldheight = formname.scaleheight
on error resume next
for each obj in formname
obj.tag = obj.left & " " & obj.top & " " & obj.width & " " & obj.height & " "
next obj
on error goto 0
end sub
'按比例改變表單內各元件的大小,
'在呼叫resizeform前先呼叫resizeinit函式
public sub resizeform(formname as form)
dim pos(4) as double
dim i as long, temppos as long, startpos as long
dim obj as control
dim scalex as double, scaley as double
scalex = formname.scalewidth / formoldwidth
'儲存窗體寬度縮放比例
scaley = formname.scaleheight / formoldheight
'儲存窗體高度縮放比例
on error resume next
for each obj in formname
startpos = 1
for i = 0 to 4
'讀取控制項的原始位置與大小
temppos = instr(startpos, obj.tag, " ", vbtextcompare)
if temppos > 0 then
pos(i) = mid(obj.tag, startpos, temppos - startpos)
startpos = temppos + 1
else
pos(i) = 0
end if
'根據控制項的原始位置及窗體改變大小
'的比例對控制項重新定位與改變大小
obj.move pos(0) * scalex, pos(1) * scaley, pos(2) * scalex, pos(3) * scaley
next i
next obj
on error goto 0
end sub
private sub form_load()
call resizeinit(me) '在程式裝入時必須加入
end sub
private sub form_resize()
call resizeform(me) '確保窗體改變時控制項隨之改變
end sub
'----本例中給出了二個函式:resizeinit和resizeform,在呼叫resizeform之前
'必須先呼叫resizeinit。你可以將本程式拷到窗體**段裡,然後在窗體裡加
'入任意控制項即可進行測試。
如何讓控制項隨窗體的大小變化而變化
根據 窗體的新的大小調整控制項 的 大小 新的x 新的y 控制項 private void setcontrols float newx,float newy,control cons 獲取控制項的tag屬性值,並分割後儲存字串陣列 float a convert.tosingle mytag 0 ...
VB控制項隨窗體大小改變而改變 控制項自適應窗體大小
大家在設計程式的是 經常碰到的情況是 設計時介面很wonderful 實際執行時也不錯 可是一旦當使用者改變的窗體大小 一下子就不和諧了 那麼現在就給一段 讓窗體內的控制項隨窗體縮放的百分比進行縮放 資料取自網路 非原創 只是略加整理好了 所以就不說什麼了 copy到from裡即可 option e...
對話方塊控制項大小隨視窗的大小變化而變化
我們經常會發現當我們將視窗最大化時,裡面的控制項並沒有進行改變,接下來我就介紹一下此問題的解決辦法,我們其實一般的都會把視窗的最大化按鈕失效,是視窗不能進行最大化操作,但是有時候我們還是需要對視窗進行最大化操作的,下面我們可以通過新增wm size訊息來解決此問題。1 在xxdlg.h中新增 afx...