如何在新增新專案或新FORM時,可以預設該FORM的大小呢? |
答題得分者是:阿子
|
SKYSTAR
中階會員 發表:76 回覆:198 積分:64 註冊:2002-06-10 發送簡訊給我 |
|
SKYSTAR
中階會員 發表:76 回覆:198 積分:64 註冊:2002-06-10 發送簡訊給我 |
|
lili
一般會員 發表:2 回覆:1 積分:0 註冊:2003-02-03 發送簡訊給我 |
|
SKYSTAR
中階會員 發表:76 回覆:198 積分:64 註冊:2002-06-10 發送簡訊給我 |
引言: 可以在注册表里定义主键值或者是在INI文件中写入窗体得大小。即TREGISTRY或TREGISTRYINI类得方法。您好: 謝謝您的回答!! 可是我要的是功能是....在設計時期所新增視窗的大小及位置.... 如: 當新增一個新專案時,不是會由Delphi自動產生一個視窗嗎? 而我就是想 要當產生這一個視窗時,可以由我來決定其位置及大小...因為我發現目前都是 870*640 (註:我是使用1280*1024的解析度).... 就像上面說的870*640....我想要一開始時,就是800*600...而不是事後再來設 定...當然啦...除了用繼承的方法之外!! Thanks!! |
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
DELPHI中自適應表單的實現
我 們 知 道, 屏 幕 分 辨 率 的 設 置 影 響 著 表 單 布 局, 假 設 你 的 機 器 上 屏 幕 分 辨 率 是800*600, 而 最 終 要 分 發 應 用 的 機 器 分 辨 率 為640*480, 或1024*768, 這 樣 你 原 先 設 計 的 表 單 在 新 機 器 上 勢 必 會 走 樣。 這 時 你 一 定 希 望 表 單 能 自 己 適 應 不 同 的 分 辨 率, 下 面 就 有 兩 種 方 法 可 供 你 參 考。 一、 根 據 新 的 分 辨 率 自 動 重 畫 表 單 及 控 件
先 在 表 單 單 元 的Interface 部 分 定 義 兩 個 常 量, 表 示 設 計 時 的 屏 幕 的 寬 度 和 高 度( 以 像 素 為 單 位)。 在 表 單 的Create 事 件 中 先 判 斷 當 前 分 辨 率 是 否 與 設 計 分 辨 率 相 同, 如 果 不 同, 調 用 表 單 的SCALE 過 程 重 新 能 調 整 表 單 中 控 件 的 寬 度 和 高 度。 Const
Orignwidth=800;
Orignheight=600; procedure TForm1.FormCreate(Sender: TObject);
begin
scaled:=true;
if (screen.width<>orignwidth) then
begin
height:=longint(height)*longint
(screen.height) div orignheight;
width:=longint(width)*longint
(screen.width) div orignwidth;
scaleby(screen.width , orignwidth);
end;
end;
SCALE 過 程 在 調 整 控 件 寬 度 和 高 度 的 同 時, 也 自 動 調 整 控 件 字 體 的 大 小, 以 適 應 新 的 分 辨 率, 但 美 中 不 足 的 是 它 並 不 改 變 控 件 的 頂 點 坐 標 位 置, 也 就 是 說, 該 過 程 不 改 變 控 件 之 間 的 相 對 位 置 關 系。 要 想 調 整 控 件 之 間 的 選 隊 相 對 位 置, 還 需 要 自 己 編 程 實 現, 有 興 趣 的 讀 者 可 試 一 試。 二、 將 機 器 分 辨 率 更 改 為 設 計 時 的 分 辨 率
這 種 方 法 不 改 變 表 單 本 身, 而 是 將 屏 幕 分 辨 率 更 改 為 與 表 單 設 計 時 用 到 的 分 辨 率 相 同。 它 需 要 用 到WINDOWS API 函 數EnumDisplaySettings 和ChangeDisplaySettings, 前 者 取 當 前 顯 示 模 式 信 息, 後 者 則 更 改 顯 示 設 置, 具 體 參 數 的 含 義 請 參 見 DELPHI 幫 助。 設 計 時 寬 度 常 量 和 高 度 常 量 的 定 義 如 方 法 一。 procedure TForm1.FormCreate(Sender: TObject);
var
devmode:tDevicemode;
begin
if screen.width<>orignwidth then
begin
if EnumDisplaySettings(nil,0,devmode) then
begin
devmode.dmfields:=dm_pelswidth OR dm_pelsheight ;
devmode.dmpelswidth:=orignwidth; {寬度}
devmode.dmpelsheight:=orignheight;{高度}
ChangeDisplaySettings(devmode,0); {更改設置}
end;
end;
end;
以 上 兩 種 方 法 在WINDOWS 95+DELPHI 3.0 環 境 下 均 已 通 過, 二 者 相 比, 前 者 是 主 動 適 應, 後 者 則 是 被 動 適 應。
|
SKYSTAR
中階會員 發表:76 回覆:198 積分:64 註冊:2002-06-10 發送簡訊給我 |
|
阿子
站務副站長 發表:120 回覆:230 積分:201 註冊:2002-03-18 發送簡訊給我 |
SKYSTAR兄
DELPHI新增FORM時的字型之文章這個方法在Delphi5以前是可以使用的,但在Delphi6開始就無法使用了,而目前依你要的方式,可以使用屬性編輯器的觀念來完成,就是個一個FORM 的屬性編輯器,來設定你的預設值,可以逹到你説的
(1)須在設計模式中
(2)不使用繼承方式
你可以參考OpaqueSoftware(www.opaquesoftware.com) 公司所出品的Experts工具 WithStyle 即可逹到你要的功能。 從思考取勝一切~q
------
從思考取勝一切~q |
SKYSTAR
中階會員 發表:76 回覆:198 積分:64 註冊:2002-06-10 發送簡訊給我 |
引言: SKYSTAR兄 DELPHI新增FORM時的字型之文章這個方法在Delphi5以前是可以使用的,但在Delphi6開始就無法使用了,而目前依你要的方式,可以使用屬性編輯器的觀念來完成,就是個一個FORM 的屬性編輯器,來設定你的預設值,可以逹到你説的 (1)須在設計模式中 (2)不使用繼承方式 你可以參考OpaqueSoftware(www.opaquesoftware.com) 公司所出品的Experts工具 WithStyle 即可逹到你要的功能。 從思考取勝一切~q太感謝...阿子...大大!!< > 連上了該網站...也看了說明...似乎就是我所要的功能....(正在下載中...) 再次感謝!!< > |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |