系統字體大小影響程式畫面 |
尚未結案
|
pchw8598
一般會員 發表:43 回覆:63 積分:21 註冊:2003-11-09 發送簡訊給我 |
|
leveon
資深會員 發表:30 回覆:389 積分:303 註冊:2012-02-12 發送簡訊給我 |
在 Application.Initialize 前 修改 TScreen 的PixelsPerInch
就可以保持原先設計的畫面 ===================引 用 pchw8598 文 章=================== 大家好: 原本設計好的程式畫面卻會因為win 7調整文字大小(例如從"小"調成"中(125%)"而造成畫面亂掉, 我爬了文,但都找不到解決的方法,很苦惱,請問是否有哪位大大能知道如何處理這樣的問題? 或是用什麼方式能取得win 7系統文字的大小??? 謝謝. |
pchw8598
一般會員 發表:43 回覆:63 積分:21 註冊:2003-11-09 發送簡訊給我 |
leveon你好:
謝謝你的幫忙. 我嘗試寫: Screen->PixelPerInch=96; 但卻得到PixelPerInch只能讀不能設定的錯誤訊息 ===================引 用 leveon 文 章=================== 在 Application.Initialize 前 修改 TScreen 的PixelsPerInch 就可以保持原先設計的畫面 ===================引 用 pchw8598 文 章=================== 大家好: 原本設計好的程式畫面卻會因為win 7調整文字大小(例如從"小"調成"中(125%)"而造成畫面亂掉, 我爬了文,但都找不到解決的方法,很苦惱,請問是否有哪位大大能知道如何處理這樣的問題? 或是用什麼方式能取得win 7系統文字的大小??? 謝謝. |
leveon
資深會員 發表:30 回覆:389 積分:303 註冊:2012-02-12 發送簡訊給我 |
無法直接修改
要使用RTTI program Project2; uses Forms, TypInfo, Unit2 in 'Unit2.pas' {Form2}; type TClassHelper = class helper for TScreen public procedure mySet(DPI: integer); end; TScreenPlus = class(TScreen) published property PixelsPerInch; end; {$R *.res} { TClassHelper } procedure TClassHelper.mySet(DPI: integer); begin PInteger(Integer(Self) (Integer(GetPropInfo(TScreenPlus, 'PixelsPerInch').GetProc) and $00FFFFFF))^ := DPI; end; begin Screen.mySet(96); Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm2, Form2); Application.Run; end. class helper for 忘了幾版才有 沒測試過 有沒有成功麻煩告知一下 ===================引 用 pchw8598 文 章=================== leveon你好: 謝謝你的幫忙. 我嘗試寫: Screen->PixelPerInch=96; 但卻得到PixelPerInch只能讀不能設定的錯誤訊息 ===================引 用 leveon 文 章=================== 在 Application.Initialize 前 修改 TScreen 的PixelsPerInch 就可以保持原先設計的畫面 ===================引 用 pchw8598 文 章=================== 大家好: 原本設計好的程式畫面卻會因為win 7調整文字大小(例如從"小"調成"中(125%)"而造成畫面亂掉, 我爬了文,但都找不到解決的方法,很苦惱,請問是否有哪位大大能知道如何處理這樣的問題? 或是用什麼方式能取得win 7系統文字的大小??? 謝謝. |
pchw8598
一般會員 發表:43 回覆:63 積分:21 註冊:2003-11-09 發送簡訊給我 |
leveon你好
我剛剛很努力看你的範例程式,但我不懂delphi,只懂BCB, 所以很抱歉的是,看了好久,也去猜了下意思, 但我真的看不懂你貼的程式碼...不好意思讓你費心了...... ===================引 用 leveon 文 章=================== 無法直接修改 要使用RTTI program Project2; uses Forms, TypInfo, Unit2 in 'Unit2.pas' {Form2}; type TClassHelper = class helper for TScreen public procedure mySet(DPI: integer); end; TScreenPlus = class(TScreen) published property PixelsPerInch; end; {$R *.res} { TClassHelper } procedure TClassHelper.mySet(DPI: integer); begin PInteger(Integer(Self) (Integer(GetPropInfo(TScreenPlus, 'PixelsPerInch').GetProc) and $00FFFFFF))^ := DPI; end; begin Screen.mySet(96); Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm2, Form2); Application.Run; end. class helper for 忘了幾版才有 沒測試過 有沒有成功麻煩告知一下 ===================引 用 pchw8598 文 章=================== leveon你好: 謝謝你的幫忙. 我嘗試寫: Screen->PixelPerInch=96; 但卻得到PixelPerInch只能讀不能設定的錯誤訊息 ===================引 用 leveon 文 章=================== 在 Application.Initialize 前 修改 TScreen 的PixelsPerInch 就可以保持原先設計的畫面 ===================引 用 pchw8598 文 章=================== 大家好: 原本設計好的程式畫面卻會因為win 7調整文字大小(例如從"小"調成"中(125%)"而造成畫面亂掉, 我爬了文,但都找不到解決的方法,很苦惱,請問是否有哪位大大能知道如何處理這樣的問題? 或是用什麼方式能取得win 7系統文字的大小??? 謝謝. |
leveon
資深會員 發表:30 回覆:389 積分:303 註冊:2012-02-12 發送簡訊給我 |
不好意思
沒注意到是BCB專區 手邊沒有BCB 改簡單一些 這樣您應該看的懂 program Project2; uses Forms, TypInfo, Unit2 in 'Unit2.pas' {Form2}; type TScreenPlus = class(TScreen) published property PixelsPerInch; procedure mySet(DPI: integer); end; {$R *.res} { TScreenPlus } procedure TScreenPlus.mySet(DPI: integer); begin PInteger(Integer(Self) (Integer(GetPropInfo(TScreenPlus, 'PixelsPerInch').GetProc) and $00FFFFFF))^ := DPI; end; begin TScreenPlus(Screen).mySet(96); Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm2, Form2); Application.Run; end. ===================引 用 pchw8598 文 章=================== leveon你好 我剛剛很努力看你的範例程式,但我不懂delphi,只懂BCB, 所以很抱歉的是,看了好久,也去猜了下意思, 但我真的看不懂你貼的程式碼...不好意思讓你費心了...... ===================引 用 leveon 文 章=================== 無法直接修改 要使用RTTI program Project2; uses Forms, TypInfo, Unit2 in 'Unit2.pas' {Form2}; type TClassHelper = class helper for TScreen public procedure mySet(DPI: integer); end; TScreenPlus = class(TScreen) published property PixelsPerInch; end; {$R *.res} { TClassHelper } procedure TClassHelper.mySet(DPI: integer); begin PInteger(Integer(Self) (Integer(GetPropInfo(TScreenPlus, 'PixelsPerInch').GetProc) and $00FFFFFF))^ := DPI; end; begin Screen.mySet(96); Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm2, Form2); Application.Run; end. class helper for 忘了幾版才有 沒測試過 有沒有成功麻煩告知一下 ===================引 用 pchw8598 文 章=================== leveon你好: 謝謝你的幫忙. 我嘗試寫: Screen->PixelPerInch=96; 但卻得到PixelPerInch只能讀不能設定的錯誤訊息 ===================引 用 leveon 文 章=================== 在 Application.Initialize 前 修改 TScreen 的PixelsPerInch 就可以保持原先設計的畫面 ===================引 用 pchw8598 文 章=================== 大家好: 原本設計好的程式畫面卻會因為win 7調整文字大小(例如從"小"調成"中(125%)"而造成畫面亂掉, 我爬了文,但都找不到解決的方法,很苦惱,請問是否有哪位大大能知道如何處理這樣的問題? 或是用什麼方式能取得win 7系統文字的大小??? 謝謝. |
leveon
資深會員 發表:30 回覆:389 積分:303 註冊:2012-02-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |