如何把字体中的内容显示在combobx下拉框中 |
尚未結案
|
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi zzmbeyond01, 不知這是不是你要的效果: http://delphi.ktop.com.tw/topic.php?topic_id=42363 ----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
|
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
不難啊!交給 Grid 畫就可以了。
procedure TForm1.FormCreate(Sender: TObject); begin ComboBox1.Items := Screen.Fonts; ComboBox1.Sorted := True; StringGrid1.RowCount := 0; end; procedure TForm1.ComboBox1Change(Sender: TObject); var ACol,ARow,ACode :Integer; begin StringGrid1.Font.Name := ComboBox1.Items[ComboBox1.ItemIndex]; StringGrid1.RowCount := 32; For ARow:= 0 to 31 do For ACol:=0 to 7 do begin ACode := Succ(ACol)*Succ(AROW); if ACode<255 then StringGrid1.Cells[ACol,ARow] := CHR(ACode) else Exit; end; end;我是列出所有 ASCII 碼。由於有些 Code 是不顯示的。 建議可以自訂 字型表 如 FontTable = '!#$%^&*())012345789 ..' 如您的圖一般。 就這樣吧! |
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
wameng大大:
我现在把字体符号添加到combobox供用户选择,但是有这么一个问题,希望对每个符号都添加上名称,怎么画布出来?
procedure TForm1.Button1Click(Sender: TObject); var i: integer; ACode: Integer; begin combobox1.Font.Name := '仿宋'; for i := 32 to 255 do begin ACode := i; if i = 33 then //尝试在 Add(CHR(ACode) ' 第一个字符'); 但是好像不行耶,出来的都不知道是什么符号 Combobox1.Items.Add(CHR(ACode) ); if i = 34 then Combobox1.Items.Add(CHR(ACode) ); end; end; procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin with combobox1 do begin canvas.FillRect(rect); if Index = 0 then //这么也没有画出来 canvas.TextOut(rect.Left 10, rect.Top 2, ' hello'); if index = 1 then canvas.TextOut(rect.Left 10, rect.Top 2, ' sfe'); end; end; |
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
|
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
大大:
关键我用
//combobx style已经 設為 csOwnerDrawFixed procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin with combobox1 do begin canvas.FillRect(rect); if Index = 0 then //这么也没有画出来hello耶,怎么显示的都是方块?? canvas.TextOut(rect.Left 10, rect.Top 2, Combobox1.Items[combobox1.itemindex] ' hello'); if index = 1 then canvas.TextOut(rect.Left 10, rect.Top 2, Combobox1.Items[combobox1.itemindex] ' sfe'); 。。。 end; end; 方块的原因是因为我自己创建的字体符号库(combobox1.canvas.font.name:='myfont')中没有后面添加的字符串吧。 怎么加进去,我再想想發表人 - zzmbeyond01 於 2004/11/09 16:44:42 |
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
procedure TForm1.ComboBox1Change(Sender: TObject); var I :Integer; begin ComboBox2.Items.Clear; For I:=33 to 254 do ComboBox2.Items.Add(inttostr(I)); end; procedure TForm1.ComboBox2DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin With Combobox2 do begin Canvas.FillRect(Rect); if (Index>-1) and (Index |
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
|
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |