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

多國語言如何讓VCL位置不變動?

尚未結案
pireer
初階會員


發表:73
回覆:80
積分:30
註冊:2004-12-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-19 16:32:22 IP:61.220.xxx.xxx 未訂閱
請問一下.版面上很多有關多國語言的主題大部份都是用INI方式. 但由於中文英文以及其他語言長度不同.當執行軟體時VCL位置應該會因為文字的長短而改變或被文字覆蓋.除非一開始設定時就以最長文字去擺設VCL. 聽過一種方法是同樣的FORM做三個(假設三種語言繁中.簡中.英文).這樣就不會有這問題. 除了上述INI及FORM做三個的兩種方法之外.前輩們有其他更好的方法嗎? 主要問題在當變換其他語言導致VCL位置錯誤問題.... 謝謝
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-20 13:51:39 IP:61.230.xxx.xxx 未訂閱
pireer 您好:    以下是我個人的經驗與看法:    透過外部文字檔進行多語操作界面變更的方式,本身就存在著一定的問題,因為這是 "開放" 的型態,如果某個作品是非常受歡迎的,那麼作者更是很難去規範眾多使用者的不同環境與想法,因此想要解決這些問題就必須要自己訂定遊戲規則,讓其他人來遵循。    程式的版面設計可多角度來考量,有字樣顯示功能的物件不一定要啟用自動調整大小 (AytoSize) 的功能,而為了版面的整齊、美觀,可以將某些元件的字樣對齊方向屬性 (Alignment) 設為向右方對齊 (taRightJustify),例如: 姓名:__________ 行動電話:________________ 為了避免不同語系環境中,會出現一些不可預期的怪現象,語系設定檔可以考慮將語系代碼 (Charset)、使用字型名稱 (Font Name)、字型大小(Font SIze)....等屬性開放出來供使用者設定,使用者可以自行調整參數,以便取得最佳的顯示效果。 設計者本身的思維也要做些調整,通常顯示於版面上的功能或欄位標示字樣,本來就應該要精簡,以免版面過於雜亂,如果簡短字樣無法表達出項目或欄位的作用要義,那就透過 Hint、Statusbar、Label、Help 等方式來加強說明,所以設計程式者無需企求 Caption 顯示的字樣一定要很長。 訂定好遊戲規則之後,使用者就應該要在現有的條件之下去設定各個字樣,如果訊息字樣過長,無法完整的顯示出來,那麼使用者就應該要設法自行縮減字樣長度,如果某個項目能容納的顯示字數確實過少,無論如何精簡字樣都無法滿足所需,設計者可以在收到使用者的反應之後,做些測試及評估,然後酌情在後續版本做個補強或調整。 以上個人拙見請參考,另外若是您有那些特殊的狀況會讓元件的位置超出預期而做出變動,不妨將狀況描述出來,讓大家針對特定問題來提供意見。 7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/10/20 13:59:02
pireer
初階會員


發表:73
回覆:80
積分:30
註冊:2004-12-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-20 15:30:29 IP:61.220.xxx.xxx 未訂閱
RedSnow兄    看了您的解析.讓我在design時.又清楚了許多. 不過目前讓我困擾的問題.如下圖 在繁體中文狀態時.Label元件的大小位置與內容都設定剛好. 但依切換到英文時.由於英文字大部份會比中文長.就會出現文字長度大小不符合設計時的想法.這是在使用外部文字檔進行多語操作界面變更的方式時.會出現的問題. 只要換語言.在design時設定VCL文字的長度一定會超出或小於原先語言. 導致畫面格式變亂..除非在design時.設定VCL文字就以最長的語言去設定. 不過會出現下圖問題. 原先英文長度比較長.變成中文後.Label內的字縮短很多.文字不會看不到. 但Label與旁邊的Edit距離變遠.感覺就不是那麼的好.如果遇到更長的英文.那差距更大.但這是解決切換語言導致文字長度被覆蓋的方法之一. 或是如果第一樓說的.依照語言不同.建立專屬的FORM. 也就是說一個FORM需要建立3個(以繁體.簡體.英文三種來說). 這樣也可以解決這問題.不過一個FORM要依照語言數量.來建立. 也蠻費工的.. 除上述兩種方法.還有更好的方法嗎? 請前輩指點...謝謝
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-20 18:21:29 IP:59.115.xxx.xxx 未訂閱
pireer 您好:    以您前一篇貼圖的例子來講,正好適合使用我前一篇第二段所提到的 "向右對齊" 的方式,在那種狀況下,將 Label 元件的 AutoSize 設為 true、Alignment 屬性設為 taRightJustify,在視覺感受上來講就比較舒服多了。    如果字樣的精簡並不影響其代表的意義或提示效果,應該也不會有您所描述的問題,例如 "Select Language:" 改成 "Language:",而 "Input your name:" 改成 "Your name:" 或是 "Name:",這樣子並不會很難識別或理解吧?    另外您也可以將 "請選擇語言" 的字樣,改成置放於 ListBox 的上方,這樣子也比較不會受到字樣長短的影響,總之;良好的版面編排設計可以避免掉一些不必要的困擾。    至於是使用那一種方式來切換使用語系,我個人覺得並不是很重要,重要的是您必須要確定您的 "規格" 與 "限制",然後再來考慮使用何者方式較合適?如果您想要開放供各種語系環境來使用,那麼做成開放式的環境會比較方便,如果您就是限制成三種語系的環境,那麼使用三組 .dfm 檔案來處理也行,但是維護上會很不方便,如何個不方便?您試過就知道了。      7 天天敲鍵盤 v 時時按滑鼠 8
pireer
初階會員


發表:73
回覆:80
積分:30
註冊:2004-12-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-20 20:33:14 IP:61.230.xxx.xxx 未訂閱
RedSnow兄 感謝您的指導.讓我對此觀念上又懂了許多. 所謂山不轉路轉.路不轉人轉.方法一定有.只看怎麼想. 這邊有您的指導.相信許多人都能受益良多....謝謝
系統時間:2024-04-28 16:29:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!