OnGetText如何顯示unicode? |
缺席
|
t27
中階會員 發表:34 回覆:95 積分:90 註冊:2002-06-19 發送簡訊給我 |
使用tntware元件,顯示unicode資料,但是當使用TField.OnGetText(Sender: TField; var Text: String; DisplayText: Boolean);時
確將資料變為?號. 請問要如何將OnGetText(Sender: TField; var Text: String; DisplayText: Boolean);變更為OnGetText(Sender: TField; var Text: wideString; DisplayText: Boolean);? |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
check out below:
http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=88564 |
t27
中階會員 發表:34 回覆:95 積分:90 註冊:2002-06-19 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
t27
中階會員 發表:34 回覆:95 積分:90 註冊:2002-06-19 發送簡訊給我 |
private
procedure GetText(Sender: TField; var Text: String; DisplayText: Boolean); . . . implementation {$R *.DFM} procedure TFrmZSC_1.GetText(Sender: TField; var Text: String; DisplayText: Boolean); var v:variant; begin v := G41Src.DataSet.Lookup('SEQ',PADR(Sender.AsString,Sender.DataSize-1,' '),'PRG_NAME'); if v <> Null then Text := Sender.AsString ' ' Trim(v) else Text := Sender.AsString; end; . . . procedure TFrmZSC_1.FormCreate(Sender: TObject); begin . . (TntDBGrid1.Columns[0].Field).OnGetText := GetText; end; 以上是程式片段,目的是將代碼轉換顯示代碼中文名稱 使用mysql資料庫,字集為UTF8-unicode. 想將var Text: String宣告變為va Text: widestring,但是compile rerror. |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
我寫過WIDESTRING資料庫存取的問題,我覺得問題不在這裡~
(1)Delphi的VCL元件是不支援UNICODE的!所以你取得的資料不管怎麼轉!他都SHOW不出來!改用一些支援UNICODE的DELPHI元件即可如TNTUnicodeControl(現在稱為TMS好像要錢了,用舊版的即可)。 (2)從資料庫存取資料的資料庫方法與元件也要支援UNICODE,如Query之類的物件等等,當然TNT也有支援,快去網路上找找舊版的來用。 ===================引 用 t27 文 章=================== private procedure GetText(Sender: TField; var Text: String; DisplayText: Boolean); . . . implementation {$R *.DFM} procedure TFrmZSC_1.GetText(Sender: TField; var Text: String; DisplayText: Boolean); var v:variant; begin v := G41Src.DataSet.Lookup('SEQ',PADR(Sender.AsString,Sender.DataSize-1,' '),'PRG_NAME'); if v <> Null then Text :=Sender.AsString ' ' Trim(v) else Text := Sender.AsString; end; . . . procedure TFrmZSC_1.FormCreate(Sender: TObject); begin . . (TntDBGrid1.Columns[0].Field).OnGetText := GetText; end; 以上是程式片段,目的是將代碼轉換顯示代碼中文名稱 使用mysql資料庫,字集為UTF8-unicode. 想將var Text: String宣告變為va Text: widestring,但是compile rerror. |
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
t27
中階會員 發表:34 回覆:95 積分:90 註冊:2002-06-19 發送簡訊給我 |
unit ZSC_1;
interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, StdCtrls, Forms, DBCtrls, DB, DBGrids, Grids, ExtCtrls, Buttons, ComCtrls, DBTables, Mask, Dialogs, DBClient, TntForms, TntComCtrls, TntDBGrids, TntButtons, TntExtCtrls, TntDBCtrls, TntDB, TntStdCtrls; type TFrmZSC_1 = class(TTntForm) TntDBGrid1: TTntDBGrid; .. 以上是程式片段. TntDBGrid1已是支援UNICODE的DELPHI元件TNTUnicodeControl之一的TntDBGrid元件 TntDB也引用在DFM |
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
t27
中階會員 發表:34 回覆:95 積分:90 註冊:2002-06-19 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
t27
中階會員 發表:34 回覆:95 積分:90 註冊:2002-06-19 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
你現在用的Delphi 6,7 不就是For Win32 的嗎?!到現在都還沒聽到消息Borland的Compiler有哪一種VCL支援Unicode的,包括Delphi 2007在內!如果你要等,那可能真有的等了~
如果所要寫支援Unicode的程式很急的話,何不就使用上述支援Unicode的Tnt For Unicode VCL?對 VCL 不熟要重新改寫元件的程式碼,不是一件很輕鬆的事情。 ===================引 用 t27 文 章=================== 謝謝回答. 依然無解, OnGetText(Sender: TField; var Text: wideString; DisplayText: Boolean); 仍然無法取代OnGetText(Sender: TField; var Text: String; DisplayText: Boolean); 只好等待delphi for win32 org win64 支援 unicode 自然就解決unicode 的問題吧. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |