TStringGrid的文字問題 |
答題得分者是:wivern
|
kenbcb
中階會員 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
|
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
|
feeling
一般會員 發表:1 回覆:4 積分:1 註冊:2003-06-07 發送簡訊給我 |
|
kenbcb
中階會員 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
|
jason_cyl329
高階會員 發表:123 回覆:155 積分:105 註冊:2003-05-26 發送簡訊給我 |
|
wivern
初階會員 發表:31 回覆:63 積分:28 註冊:2002-07-31 發送簡訊給我 |
|
wivern
初階會員 發表:31 回覆:63 積分:28 註冊:2002-07-31 發送簡訊給我 |
我的作法是,
在StringGrid的OnDrawCell Event中
先得到那一欄的欄寬,
再把要秀出的字串切成數段,存成TempStr,每段的長度不能大於欄寬,這可以用Canvas->TextWidth(String);來做判斷,
用迴圈把string取子字串,一次增加一個字元,當發現子字串大於欄寬時就插入一個'\n',最後每段文字之中都會以'\n'區隔,
再判斷字串共有幾行文字,改變欄高以便讓multiline的文字可以秀出來,
StringGrid->RowHeights[ARow]=linecount*Result1->DefaultRowHeight;再用 DrawText(StringGrid1->Canvas->Handle, TempStr.c_str(),TempStr.Length(), &Rect,DT_LEFT);這會讓文字multiline display並靠左排列, 如果要置中的話,就用 DrawText(StringGrid1->Canvas->Handle, TempStr.c_str(),TempStr.Length(), &Rect,DT_CENTER);還有,如果那段文字只有一行的話,想要左右置中且上下置中, 可以用 DrawText(StringGrid1->Canvas->Handle, TempStr.c_str(),TempStr.Length(), &Rect,DT_CENTER | DT_VCENTER| DT_SINGLELINE);DT_CENTER是左右置中,DT_VCENTER是上下置中,而且上下置中只有在有DT_SINGLELINE 也就是只有一行時才有用~ 給你做個參考囉! 發表人 - wivern 於 2003/10/27 18:52:36 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |