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

TFontDialog如何沒有color的屬性設定

尚未結案
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-15 21:22:29 IP:220.138.xxx.xxx 未訂閱
我想要擁有TFontDialog的style,size,fontname等屬性設定的功能,但是我不要color的屬性設定(因為要輸出的設備只有單色),有沒有方法可以disable這個選項,或者用其他什麼方法我可以自已完成TFontDialog without color
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-16 09:54:33 IP:61.63.xxx.xxx 未訂閱
引言: 我想要擁有TFontDialog的style,size,fontname等屬性設定的功能,但是我不要color的屬性設定(因為要輸出的設備只有單色),有沒有方法可以disable這個選項,或者用其他什麼方法我可以自已完成TFontDialog without color
markov你好: 真對你的問題我覺得有三個作法: <> > 這裏我用第 >! < class="code"> In Unit.cpp ~~~ TForm1 *Form1; BOOL CALLBACK EnumChindWnd(HWND hwnd,LPARAM lparam); //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { HWND hwnd=NULL; while (hwnd==NULL) hwnd=FontDialog1->Handle; EnumChildWindows(hwnd,(WNDENUMPROC)EnumChindWnd,0); Timer1->Enabled=false; } //--------------------------------------------------------------------------- BOOL CALLBACK EnumChindWnd(HWND hwnd,LPARAM lparam) { char ClassName[128]; char TextName[128]; ZeroMemory(ClassName,128); ZeroMemory(TextName,128); GetClassName(hwnd,ClassName,128); GetWindowText(hwnd,TextName,128); if (AnsiString(TextName)=="色彩(&C):") ShowWindow(hwnd,SW_HIDE); if (AnsiString(ClassName)=="ComboBox") { char ItemText[128]; ZeroMemory(ItemText,128); SendMessage(hwnd,CB_GETLBTEXT,0,(LPARAM)ItemText); if (AnsiString(ItemText)=="黑色") ShowWindow(hwnd,SW_HIDE); } return true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Timer1->Enabled=true; FontDialog1->Execute(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Timer1->Enabled=false; Timer1->Interval=10; } //--------------------------------------------------------------------------- 使用結果如下: color相關的東東已經被hide掉了,如果不想hide的話,只要show的時候把Timer關掉即可!That's all! 發表人 -
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-16 12:18:14 IP:61.220.xxx.xxx 未訂閱
真是太厲害了! 我想順便請教一下,我要k那些書才會有寫這些api or callback function的資料 看msdn頗辛苦
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-16 13:28:35 IP:61.63.xxx.xxx 未訂閱
引言: 真是太厲害了! 我想順便請教一下,我要k那些書才會有寫這些api or callback function的資料 看msdn頗辛苦 < face="Verdana, Arial, Helvetica"> 嗯,這狗嘛……同之前我在其它文章的意見,針對 >! 書也是有的啦!我有在看的是一家叫<><>>出的,之前沒看過這一家,書是我從公司圖書館幹來的!書名是 >!
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-16 14:55:37 IP:61.220.xxx.xxx 未訂閱
我也知道要看msdn, 但是看起來頗辛苦, 正如m8815010兄所說的過程通常不是很美好, 所以我才會希望有一本有系統的介紹,而且最好都有例子介紹的書 帶領我快速的提昇功力, 其實我自已也找了很久,就是沒有! 不過還是我謝謝m8815010兄的指點!
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-16 15:01:52 IP:61.220.xxx.xxx 未訂閱
不好意思 再問一個問題,我要如何攔TFontDialog的訊息 是使用WndProc嗎?
tqpzxy
一般會員


發表:13
回覆:22
積分:7
註冊:2003-11-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-18 18:24:25 IP:203.187.xxx.xxx 未訂閱
引言: 我想要擁有TFontDialog的style,size,fontname等屬性設定的功能,但是我不要color的屬性設定(因為要輸出的設備只有單色),有沒有方法可以disable這個選項,或者用其他什麼方法我可以自已完成TFontDialog without color
CHOOSEFONT cf;
ZeroMemory(&cf, sizeof(CHOOSEFONT));
cf.lStructSize = sizeof(CHOOSEFONT);
cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS;   // 更多選項請見說明檔
if (ChooseFont(&cf)) {
   [由 cf 讀取使用者的決定]
}
tqpzxy
一般會員


發表:13
回覆:22
積分:7
註冊:2003-11-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-18 19:12:31 IP:203.187.xxx.xxx 未訂閱
引言: 不好意思 再問一個問題,我要如何攔TFontDialog的訊息 是使用WndProc嗎?
攔截的方法有很多種 1. 使用 SetWindowLong 及 CallWindowProc (這兩個是 API 函數) 2. 繼承元件後編寫新的 Dispatch (Dispatch 為 VCL 元件的成員函數) 3. 利用函數指標 4. 還沒想到 ^^
系統時間:2024-06-26 20:45:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!