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

如何用 Parent handle 重新設定 Parent 的底色?

尚未結案
kung
一般會員


發表:4
回覆:8
積分:2
註冊:2003-11-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-25 17:28:09 IP:211.76.xxx.xxx 未訂閱
我用::GetParent API函式取得了一個按鈕元件的Parent handle, 倘若Parent是一個可視的元件(如TPanel、TForm、....等), 我應該如何用 Parent handle 重新設定 Parent 的底色? THANKS~~~~~~!!!
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-08 13:17:31 IP:218.32.xxx.xxx 未訂閱
GetParentComponent 取得Parent元件後再設顏色。    為什麼要繞一大圈設顏色阿 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖
kung
一般會員


發表:4
回覆:8
積分:2
註冊:2003-11-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-08 15:01:56 IP:211.76.xxx.xxx 未訂閱
引言: GetParentComponent 取得Parent元件後再設顏色。 為什麼要繞一大圈設顏色阿 < face="Verdana, Arial, Helvetica"> 謝謝你幫我開了一扇窗,讓我繼續這個topic..thanks... 以下是我原先想做出的功能: 1_ 我在Form1上有一個按鈕(Button1),以及Panel1,Panel2,ToolBar1,ToolBar2, 2_ 然後在Button1的Button1Click event 寫入--新增一個按鈕(bt01),但新按鈕(bt01)隨機在Form1上不同的可視元件建立(如Form1,Panel1,Panel2,ToolBar1,ToolBar2..), 而這按鈕(bt01)的上層元件(Parent)若有Color屬性,按下新按鈕(bt01)時,則重新設定上層元件(Parent)的色彩屬性為紅色。 3_ 而這按鈕(bt01)的OnClick函式,我想用『動態』方式解決Parent的Color屬性設定問題。 其實...若用列舉方式也可以解決,但實在是"太不優雅"了.......< >< > 所以才向各位高手求援.......
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-08 15:58:10 IP:61.218.xxx.xxx 未訂閱
SetBkColor( HDC hdc, // handle of device context COLORREF crColor // background color value );
------
︿︿
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-08 16:28:00 IP:218.32.xxx.xxx 未訂閱
引言: SetBkColor( HDC hdc, // handle of device context COLORREF crColor // background color value );
抱歉, 我試不出來耶... 是哪裡錯了嗎? 煩請cmf 指導, 謝謝 !!
 
        HWND hdParent = ::GetParent(Button1->Handle);
        HDC hdc = GetDC(hdParent);
        SetBkColor(hdc,0xffffff);
數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D
kung
一般會員


發表:4
回覆:8
積分:2
註冊:2003-11-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-08 16:35:20 IP:211.76.xxx.xxx 未訂閱
引言: SetBkColor( HDC hdc, // handle of device context COLORREF crColor // background color value );
cmf, sorry... 小弟用全新的一個Form與Button,測試Form1的底色更改, 但...Form1怎麼沒動靜?< >< > 能否再指點一下? THANKS.......
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
COLORREF cl = RGB(30,10,50);
::SetBkColor( ::GetDC(Handle), cl);
}
//---------------------------------------------------------------------------
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-08 17:53:35 IP:61.218.xxx.xxx 未訂閱
void __fastcall TForm1::Button1Click(TObject *Sender) {     TPanel* P=dynamic_cast(Button1->Parent); P->Color= TColor(RGB(0,0,0)); }
------
︿︿
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-09 12:02:39 IP:218.32.xxx.xxx 未訂閱
引言: void __fastcall TForm1::Button1Click(TObject *Sender) { TPanel* P=dynamic_cast(Button1->Parent); P->Color= TColor(RGB(0,0,0)); }
Parent是一個可視的元件(如TPanel、TForm、....等), 如果是強制轉型的話... 請問要如何知道Parent的type 呢(如TPanel、TForm、....等) ? 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-12-09 12:30:35 IP:61.218.xxx.xxx 未訂閱
我是初學者 若有錯誤 請見諒    bool __fastcall ClassNameIs(const AnsiString string){ return ClassNameIs(ClassType(), string); }    每天省下一包菸的錢 愛心1000元餵飽一名非洲飢餓兒童 http://www.worldvision.org.tw/edm/30hffan/30hf1000.htm   
------
︿︿
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-12-09 13:22:28 IP:218.32.xxx.xxx 未訂閱
引言: 我是初學者 若有錯誤 請見諒 bool __fastcall ClassNameIs(const AnsiString string){ return ClassNameIs(ClassType(), string); }
成了!! cmf兄謙虛了。 感謝cmf的指導。< > (如果 >) 有些漏掉的地方我補起來了。< > < class="code"> void __fastcall TForm1::Button1Click(TObject *Sender) { String str= Button1->Parent->Name; if(Button1->Parent->ClassNameIs("TForm1")) // 這裡用的是TForm延伸Type--TForm1 { TForm* P = dynamic_cast(Button1->Parent); // 這裡可用TForm或TForm1 P->Color= TColor(RGB(0,0,0)); } } 突然發現...好像變成我也在問問題... 希望
kung
一般會員


發表:4
回覆:8
積分:2
註冊:2003-11-04

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-12-09 14:17:08 IP:211.76.xxx.xxx 未訂閱
引言:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        String str= Button1->Parent->Name;
        if(Button1->Parent->ClassNameIs("TForm1")) // 這裡用的是TForm延伸Type--TForm1
        {
            TForm* P = dynamic_cast(Button1->Parent); // 這裡可用TForm或TForm1
            P->Color= TColor(RGB(0,0,0));
        }    }  
先感謝五星上將cmf兄的支援, 雖然後學覺得這個蠻有意思的『動態、強制轉型』,仍有相當大的處理空間, 還是先將此題得分結案吧,得分給實戰功力強、探討問題深入的anpino兄。 BUT...還是請cmf兄、anpino兄與各位前輩繼續指導後學此題..... anpino兄的code,看來仍逃不了"列舉"方式,處理"隨機"的Parent;"列舉"--這是題目最後底限了..... 發表人 - kung 於 2003/12/09 14:20:16
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-12-09 16:26:42 IP:218.32.xxx.xxx 未訂閱
引言: 先感謝五星上將cmf兄的支援, 雖然後學覺得這個蠻有意思的『動態、強制轉型』,仍有相當大的處理空間, 還是先將此題得分結案吧,得分給實戰功力強、探討問題深入的anpino兄。 BUT...還是請cmf兄、anpino兄與各位前輩繼續指導後學此題..... anpino兄的code,看來仍逃不了"列舉"方式,處理"隨機"的Parent;"列舉"--這是題目最後底限了..... 發表人 - kung 於 2003/12/09 14:20:16
呃... 怎麼覺得應...應該是cmf得...得分呢... (心虛ing...) 因為在下只...只是將cmf兄的提示拿來實作而...而已說... 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-12-09 16:56:46 IP:61.218.xxx.xxx 未訂閱
呵呵  我是初學者 以後請各位大大 多多指導 ^_^    每天省下一包菸的錢 愛心1000元餵飽一名非洲飢餓兒童 http://www.worldvision.org.tw/edm/30hffan/30hf1000.htm   
------
︿︿
kung
一般會員


發表:4
回覆:8
積分:2
註冊:2003-11-04

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-12-09 23:34:40 IP:211.76.xxx.xxx 未訂閱
引言: 呵呵 我是初學者 以後請各位大大 多多指導 ^_^
cmf兄,甭客氣了吧...... 這個topic雖已給分....還望您在此topic多多指導..... 想到相關資料時,請回來這兒指導吧....先謝謝啦....< >< > 也衷心希望各位路過大大,給小弟這個
系統時間:2024-05-04 2:10:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!