Delphi是古董級(jí)編程工具,但比COLBOL年輕,而且至今仍然在不斷推出新版本。Delphi 7從發(fā)行到今天也快20年了,在64位Win10下還能夠穩(wěn)定運(yùn)行,不能不說當(dāng)年Borland公司的工程師真的都是天才。 但是Delphi 7寫的程序,運(yùn)行時(shí)窗體總是和設(shè)計(jì)期不一樣,變形,特別是窗體的邊緣處,丑。這件事情不是新情況,當(dāng)年Windows 2000/XP出現(xiàn)的時(shí)候,Delphi桌面程序在Win98和win2000/XP/2003之間窗體都有一些變化,人們提出各種解決辦法;到win7/8/10時(shí)代,Delphi也只能以兼容方式在這些系統(tǒng)上運(yùn)行,好在我用它只是方便解決一些批量的自動(dòng)化的手邊兒事,對(duì)窗體變形不變形沒有太高的要求。今天恰巧,解決了這個(gè)疑難。 所謂窗體的變形,就象圖中的這個(gè)按鈕,本來按鈕下邊界和窗體下邊界,在設(shè)計(jì)期是有一定的間距的,比較符合規(guī)范。但若以默認(rèn)的設(shè)置,運(yùn)行期就是右側(cè)的樣子,那個(gè)間距消失了,看著比較不舒服。 把窗體的borderstyle設(shè)置成bsSingle(原來默認(rèn)是bsSizeable),再把AutoScroll屬性設(shè)置設(shè)置為False(原來默認(rèn)是True)。編譯,運(yùn)行,邊界間距就正常了。 如果在事件過程里寫 borderstyle:=bsSingle; form1.AutoScroll:=False; 也是可以的,且不必調(diào)用update和Refresh,當(dāng)然窗體會(huì)在事件發(fā)生時(shí)迅速一閃。 這里設(shè)置的關(guān)鍵,實(shí)際應(yīng)該只要boderstyle就可以了,但是有時(shí)候總會(huì)遇到這樣或那樣的問題,一般為保證窗體不變形的幾個(gè)窗體屬性,除borderstyle之外,大略有 Font.Charset= ANSI_CHARSET/或GB2312_CHARSET Scaled= False AutoSize= False AutoScroll= False 順手把以前搞的一個(gè)排考場的東西修改了一下,正常了。 |
|