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

要如何將 元件上 Font->Charset 用變數方式填入

答題得分者是:taishyang
carloyan
一般會員


發表:35
回覆:14
積分:9
註冊:2004-05-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-15 18:20:51 IP:61.56.xxx.xxx 未訂閱
請問要如何將 元件上 Font->Charset 用變數方式填入 例如 AnsiString LanguageStatus; 按下 Button1 時 void __fastcall TForm1::Button11Click(TObject *Sender) { LanguageStatus = "CHINESEBIG5_CHARSET"; } 按下 Button2 時 void __fastcall TForm1::Button11Click(TObject *Sender) { LanguageStatus = "GB2312_CHARSET"; } 在Timer1之中加入 Label1->Font->Charset = LanguageStatus; Run 之後 就告訴我 Cannot Convert AnsiString To Unsigned Char !!! 請問該如何解決 ? 謝謝 !
rollboy
一般會員


發表:8
回覆:16
積分:9
註冊:2005-04-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-15 18:36:27 IP:218.165.xxx.xxx 未訂閱
引言: 請問要如何將 元件上 Font->Charset 用變數方式填入 例如 AnsiString LanguageStatus; 按下 Button1 時 void __fastcall TForm1::Button11Click(TObject *Sender) { LanguageStatus = "CHINESEBIG5_CHARSET"; } 按下 Button2 時 void __fastcall TForm1::Button11Click(TObject *Sender) { LanguageStatus = "GB2312_CHARSET"; } 在Timer1之中加入 Label1->Font->Charset = LanguageStatus; Run 之後 就告訴我 Cannot Convert AnsiString To Unsigned Char !!! 請問該如何解決 ? 謝謝 !
我想你誤會了 ... 像CHINESEBIG5_CHARSET或ANSI_CHARSET這些本身是個變數喔!不是字串 ... 正確方法應該如底下這樣 .. Label1->Font->Charset = CHINESEBIG5_CHARSET; 你在試試看吧 ..
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-15 18:40:35 IP:210.68.xxx.xxx 未訂閱
您好: 試試下面的程式碼
TFontCharset LanguageStatus;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   LanguageStatus = CHINESEBIG5_CHARSET;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Button2Click(TObject *Sender)
{
   LanguageStatus = GB2312_CHARSET;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   Label1->Font->Charset = LanguageStatus;
}
順心
carloyan
一般會員


發表:35
回覆:14
積分:9
註冊:2004-05-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-16 09:36:43 IP:61.56.xxx.xxx 未訂閱
引言: 您好: 試試下面的程式碼
TFontCharset LanguageStatus;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   LanguageStatus = CHINESEBIG5_CHARSET;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Button2Click(TObject *Sender)
{
   LanguageStatus = GB2312_CHARSET;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   Label1->Font->Charset = LanguageStatus;
}
順心 < face="Verdana, Arial, Helvetica"> Taishyang 老兄 ! 您的方法的確可以做到我要的效果 ! 不過有一個 Error Message : "Access violation at address 00432B32 in module 'TestLanguage.exe'. Read of address 00000010." 另我不知該怎麼辦 ??? 我的程式畫面是希望能做到, 當選擇其他語系的文字時, 可以有那個語系的畫面, 不侷限於在那個語系的作業系統之下, 所以才會希望能改變 Font->Charset, 利用變數是沒有辦法的辦法了 ! 希望 rollboy 老兄能諒解 !
zilch
中階會員


發表:5
回覆:87
積分:78
註冊:2002-09-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-16 10:00:37 IP:218.166.xxx.xxx 未訂閱
要寫多語系嗎? 可以參考這篇看看 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34209
carloyan
一般會員


發表:35
回覆:14
積分:9
註冊:2004-05-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-16 10:50:10 IP:61.56.xxx.xxx 未訂閱
引言: Taishyang 老兄 ! 您的方法的確可以做到我要的效果 ! 不過有一個 Error Message : "Access violation at address 00432B32 in module 'TestLanguage.exe'. Read of address 00000010." 另我不知該怎麼辦 ??? 我的程式畫面是希望能做到, 當選擇其他語系的文字時, 可以有那個語系的畫面, 不侷限於在那個語系的作業系統之下, 所以才會希望能改變 Font->Charset, 利用變數是沒有辦法的辦法了 ! 希望 rollboy 老兄能諒解 !
我發現問題了 ! 是我在語法上的錯誤 ! 我在這篇文章找到答案了 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=39292 原本我是用 for (int i = 0; i < ComponentCount; i ) { if ( Components[i]->ClassNameIs("TLabel") ) (dynamic_cast(Components[i]))->Font->Charset = LanguageStatus; } 來搜索我的元件, 現在改為 for (int i = 1; i <= 10; i ) { ((TLabel *)FindComponent("Label" IntToStr(i)))->Font->Charset = LanguageStatus; } 就沒有問題了,Taishyang 老兄 的解答是正確也是我想要的效果 ,難怪會有人這麼愛 Taishyang 老兄 ! 可惜我對女生比較有興趣哩 ! 也謝謝 Zilch 老兄給的建議, 我會好好的詳閱研究, 謝謝囉 !
系統時間:2024-04-28 1:04:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!