全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:6904
推到 Plurk!
推到 Facebook!

系統字體大小影響程式畫面

尚未結案
pchw8598
一般會員


發表:43
回覆:63
積分:21
註冊:2003-11-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2014-04-01 23:32:12 IP:112.104.xxx.xxx 訂閱
大家好:
原本設計好的程式畫面卻會因為win 7調整文字大小(例如從"小"調成"中(125%)"而造成畫面亂掉, 我爬了文,但都找不到解決的方法,很苦惱,請問是否有哪位大大能知道如何處理這樣的問題? 或是用什麼方式能取得win 7系統文字的大小??? 謝謝.
leveon
資深會員


發表:30
回覆:389
積分:303
註冊:2012-02-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2014-04-02 15:16:09 IP:61.231.xxx.xxx 訂閱
在 Application.Initialize 前 修改 TScreen 的PixelsPerInch 
就可以保持原先設計的畫面


===================引 用 pchw8598 文 章===================
大家好:
原本設計好的程式畫面卻會因為win 7調整文字大小(例如從"小"調成"中(125%)"而造成畫面亂掉, 我爬了文,但都找不到解決的方法,很苦惱,請問是否有哪位大大能知道如何處理這樣的問題? 或是用什麼方式能取得win 7系統文字的大小??? 謝謝.
pchw8598
一般會員


發表:43
回覆:63
積分:21
註冊:2003-11-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2014-04-02 19:45:00 IP:112.104.xxx.xxx 訂閱
leveon你好:
謝謝你的幫忙. 我嘗試寫:

Screen->PixelPerInch=96;

但卻得到PixelPerInch只能讀不能設定的錯誤訊息


===================引 用 leveon 文 章===================
在 Application.Initialize 前 修改 TScreen 的PixelsPerInch
就可以保持原先設計的畫面


===================引 用 pchw8598 文 章===================
大家好:
原本設計好的程式畫面卻會因為win 7調整文字大小(例如從"小"調成"中(125%)"而造成畫面亂掉, 我爬了文,但都找不到解決的方法,很苦惱,請問是否有哪位大大能知道如何處理這樣的問題? 或是用什麼方式能取得win 7系統文字的大小??? 謝謝.
leveon
資深會員


發表:30
回覆:389
積分:303
註冊:2012-02-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2014-04-02 20:58:23 IP:61.231.xxx.xxx 訂閱
無法直接修改
要使用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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2014-04-02 21:19:44 IP:112.104.xxx.xxx 訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2014-04-02 21:49:32 IP:61.231.xxx.xxx 訂閱
不好意思
沒注意到是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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2014-04-02 22:10:48 IP:61.231.xxx.xxx 訂閱
不然 在設計時期
每個Form的Scaled 設成 false;
應該也是可以
系統時間:2024-04-20 12:50:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!