當然這種方法是繞道而行.開發出來的軟件肯定好看不了. 好了,讓我們來引出下面這個很有用,比較專業的model吧. -------------------------------------------------------------------------------- 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
'開發軟件時候,把這個modal裝入程序中.然后加入如下代碼: private sub form_load() call resizeinit(me) '在程序裝入時必須加入 end sub
private sub form_resize() call resizeform(me) '確保窗體改變時控件隨之改變 end sub --------------------------------------------------------------------------------