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

TStringGrid的文字問題

答題得分者是:wivern
kenbcb
中階會員


發表:171
回覆:129
積分:60
註冊:2003-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-24 10:44:20 IP:61.222.xxx.xxx 未訂閱
請問各位: 當文字超過寬度時,要如何使文字換行,而不是截掉, 我想做成能夠換行並上下置中. 希望各位能夠提供方法.
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-24 14:01:38 IP:211.75.xxx.xxx 未訂閱
自己去Draw這個字串不就好啦
feeling
一般會員


發表:1
回覆:4
積分:1
註冊:2003-06-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-24 18:50:11 IP:159.226.xxx.xxx 未訂閱
1. 自己Draw 2. 用第三方的组件 NULL 發表人 - feeling 於 2003/10/24 18:50:46
------
NULL
kenbcb
中階會員


發表:171
回覆:129
積分:60
註冊:2003-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-25 12:38:37 IP:61.229.xxx.xxx 未訂閱
不好意思~ 我太懂意思也~可以用範例或說清楚點~我是初學者
jason_cyl329
高階會員


發表:123
回覆:155
積分:105
註冊:2003-05-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-27 09:34:17 IP:61.218.xxx.xxx 未訂閱
Canvas->TextWidth(String);//表示String這各字串的寬度 Canvas->TextHeight(String);//表示String這各字串的高度 你可以依據你現有的螢幕位置長寬來作修改,算出你要的起始位置(x,y), Canvas->TextOutA(x,y,String); x,y表示列印的起始座標,用這種方式就可以達到至左至右至中的效果
wivern
初階會員


發表:31
回覆:63
積分:28
註冊:2002-07-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-27 18:39:09 IP:61.219.xxx.xxx 未訂閱
刪除 發表人 - wivern 於 2003/10/27 18:44:32
wivern
初階會員


發表:31
回覆:63
積分:28
註冊:2002-07-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-27 18:42:46 IP:61.219.xxx.xxx 未訂閱
我的作法是, 在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
系統時間:2024-05-17 17:35:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!