線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4388
推到 Plurk!
推到 Facebook!

請問如何讓Label->Caption可以在顯示中文字的情況下換行

 
kingkong
一般會員


發表:2
回覆:0
積分:0
註冊:2006-09-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-07 13:39:46 IP:59.112.xxx.xxx 訂閱

as title

英文的話直接在string裡面加上'\n'就行了,中文的話好像不行,請問一下有什麼方法嗎?

taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-08 18:41:33 IP:59.124.xxx.xxx 未訂閱

我用下面的程式碼可以耶

Label1->Caption = "測\n試\n用";
===================引 用 文 章===================

as title

英文的話直接在string裡面加上'\n'就行了,中文的話好像不行,請問一下有什麼方法嗎?

herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-09-15 23:56:30 IP:211.72.xxx.xxx 未訂閱

Ans: BCB 各版本功能不完全相同, 在string裡面加上'\n' 不一定可讓 TLable->Caption 直排, 至少 Ver 5 及之前都不行.

可設 WordWrap = true, Width = 該 Font 之 2 Byte 之 Width, Height = n 個中文字高即可.

應建議版主, 要求提問者應說明使用的版本, 不同版間, 有些 Function 連參數都不一致, BUG 也不同.

例如: String sxTemp = "123abc"; 有時也會錯, 最好寫成 String sxTemp; sxTemp = "123abc";

另, BCB5, int ixR = 1.4 * 5.0 會得到 6, 但 BCB4 及 BCB6 會得到 7, 故最好都採實數運算, 有需要再轉存 int 變數.

double nxR = 1.4 * 5; int ixR = nxR; 則 ixR 就不會是 6 了.

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-09-16 01:07:51 IP:61.229.xxx.xxx 未訂閱
看到這項注意事項,我就話多想發表一下了。補充一下!
我覺得更好的方式應該可以表達成
String sxTemp("123abc"); //cpp style initial variable,especially when data member more than one
當然這樣的寫法會與
String sxTemp; sxTemp = "123abc";
「通常」是一樣的結果,但根子裡是不一樣的。
第二種的寫法compile是先用default constructor先創出一個String物件。然後再使用String裡的 = operator 複載(overload)來做物件copy。值得注意的是當用 = copy時,左右二邊的型別決定了是否可copy。

第一種則單純依overloading 的constuction的型別媒合而create一次!

問題通常會發生在一個物件它的建構子的所有overloading型別與它自己 = operator 的overloading的型別不全然一樣!
用實例才好說明: 以Variant這個類別來說
它的reference construction overloading裡有 short*, int*.........
它的 = operator 則是 Variant& __fastcall operator =(const Variant& rhs);
也就是說它接等號右邊可以是 Variant&,說明檔裡更指出如下:
If the Variants can be converted to types that make sense for the given operation, the assignment is performed
好了,實驗一下:
Variant vv =cat->get_ActiveConnection(); // wrong! no such constructor match
Variant vv;
vv = cat->get_ActiveConnection(); //using Variant::operator= overload is match,ok!
結論:
1/ ClassType obj = rhs 與 ClassType obj(rhs) 是等價的! 但用cpp style ( ) 在bcb中會在design time 出現有錯誤,但不幅理會。
2/ ClassType objA; objA = rhs ; 這二行就不一定等於上面1說講的一樣。
3/ 我建議使用cpp style 來初始建構,這樣比較不會被 = 號給搞亂了。因為 = 時而是用建構子,時而又是表達二個物件copy。
4/ 是否要分二行陳述則要依情形來看。以剛我講的例子就需要二行。若是一般情形則用一行就可以。而我個人又強力的建議使用cpp的( ) 建構型態!

蕭沖 qs.xiao@gmail.com
http://aftcast.blogspot.com/
生有涯而知無涯,以有涯隨無涯,殆矣



===================引 用 文 章===================

例p: String sxTemp = "123abc"; 有時也會錯, 最好寫成 String sxTemp; sxTemp = "123abc";

------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2024-04-27 14:38:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!