VB控制項隨窗體大小而變化 Resize Form

2021-06-08 16:05:53 字數 2076 閱讀 7783

'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...