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

製作Delphi的豎排標簽

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-30 09:28:37 IP:61.221.xxx.xxx 未訂閱
此為轉貼資料 製作Delphi的豎排標簽 大家知道用Deiphi開發應用程式時標簽是必不可少的,但是Deiphi 提供的Label構件只支援橫排方式的標簽,而不支援豎排方式標簽。怎?辦? 編寫一段簡單的函數就可以把標簽從橫排變成豎排。因?中文字元集是用兩個位元組表示一個字元的,所以應在字串的每兩個位元組之間加入回車換行符。這個函數的參數是一字串,返回值是在中文字元之間添加了回車換行符的一個新的字串。 下面就舉例說明:我們以豎排方式顯示一首詩。 新建一工程。 首先在implementation部分定義一個字串陣列常量poemary,該陣列的每一個成員順序存放了詩中的一句。 const poemary: array[0..6] of string = ('遊子吟', '慈母手中線', '遊子身上衣', '臨行密密縫', '意恐遲遲歸', '誰言寸草心', '報得三春暉'); 隨後,在implementation部分加入字串轉換函數,代碼如下: function convertstring(source:string):string; var i,j:integer; a,b:array[0..50] of char; begin StrPCopy(a, source) ; j:=0; i:=0; while (a[j] < > #0) do begin b[i]:=a[j]; if (j mod 2=1)and(j> 0) then begin Inc(i); b[i]:=#13; end; Inc(j); Inc(i); end; b[i-1]:=#0; result:= strpas(b); end; 最後添加Form1的OnCreate事件。注意:要在uses子句中添加單元名稱stdctrls。 procedure TForm1.FormCreate(Sender: TObject); var labary:array[0..6] of Tlabel; i:integer; begin for i:=0 to 6 do begin labary[i]:=Tlabel.Create(self); labary[i].parent:=self; labary[i].caption:=convertstring(poemary[i]); labary[i].top:=(form1.Height-labary[i].height) div 2; labary[i].left:=10+i*33; end; end; 運行結果如圖所示,此程式在Windows 95,Delphi3.0環境中運行通過。
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-30 10:15:52 IP:210.202.xxx.xxx 未訂閱
引言: 此為轉貼資料 製作Delphi的豎排標簽 大家知道用Deiphi開發應用程式時標簽是必不可少的,但是Deiphi 提供的Label構件只支援橫排方式的標簽,而不支援豎排方式標簽。怎?辦?
我提供另一方法(不用寫程式) : 在 IDE 的 Form 編輯狀態中按 [Alt] [F12] 找到要改的 TLabel(其他元件也行), 在 Caption = '1'#13'2'#13'3'#13'4'#13'5'#13'6'#13'7'#13'8'#13'9' 再按一次 [Alt] [F12] 回到 Form 編輯狀態, 您會看到 1...9 直排顯示 重點是在要折行的字後加 #13 就可以了. 發表人 - danny 於 2002/10/30 10:18:14
------
將問題盡快結案也是一種禮貌!
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-30 19:38:14 IP:61.221.xxx.xxx 未訂閱
danny大大提供的方法還不錯 哈哈 討論之下將越來越有多種方式 達到結果 謝謝 danny大大提供的方便方法 不知還有人可以提供其他方法嗎?
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
huwk
資深會員


發表:26
回覆:340
積分:323
註冊:2002-04-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-31 01:11:01 IP:210.85.xxx.xxx 未訂閱
@@~~ 1.將label autosize 設成 false   wordwrap設成ture 2.將label寬度調成只容納下一個字.. 3.將字與字中間按space bar空格...   如 "大家好" 改成 "大 家 好"...      "hi" 改成 "h i"   即得....     
引言: danny大大提供的方法還不錯 哈哈 討論之下將越來越有多種方式 達到結果 謝謝 danny大大提供的方便方法 不知還有人可以提供其他方法嗎?
------
熊的學習 http://huwk.blogspot.com
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-31 08:06:45 IP:192.168.xxx.xxx 未訂閱
引言: @@~~ 1.將label autosize 設成 false wordwrap設成ture 2.將label寬度調成只容納下一個字.. 3.將字與字中間按space bar空格... 如 "大家好" 改成 "大 家 好"... "hi" 改成 "h i" 即得....
類似此法,輸入 字體 選為 "@細明體" (有@號的字體) 不但豎直還會轉90度,如: 大 家 好 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
系統時間:2024-05-09 3:56:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!