2011-10-13 10 views
6

में एक combobox (दाएं हाथ के किनारे) के अंदर एक छवि डालकर मैं डेल्फी/Win32 में एक combobox (दाएं हाथ किनारे) के अंदर एक छवि खींचना चाहता हूँ।डेल्फी/Win32

कंबोबॉक्स में शैली csDropDown है। यह csOwnerDrawFixed या csOwnerDrawVariable के साथ काम नहीं करता है।

combobox ब्राउज़र के पता बार के समान संपादन योग्य होना चाहिए।

क्या कोई अतिरिक्त डेल्फी घटक बनाये बिना Win32 समाधान है?

मैंने निम्नलिखित की कोशिश की, लेकिन यह काम नहीं करता है। क्या मैं डेल्फी 7 के साथ ऐसा कर सकता हूं?

TForm1 = class(TForm) 
    ... 
private 
    FChDirComboWndProc: TWndMethod; 
    procedure ChDirComboWndProc(var Message: TMessage); 
    ... 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    FChDirComboWndProc := ChDirComboBox.WindowProc; // save old window proc 
    ChDirComboBox.WindowProc := ChDirComboWndProc; // subclass 
end; 

procedure TForm1.ChDirComboWndProc(var Message: TMessage); 
begin 
    WM_ERASEBKGND: begin // WM_PAINT ? 
     SetBkMode(Message.WParam, TRANSPARENT); 
     SetTextColor(Message.wParam, GetSysColor(COLOR_GRAYTEXT)); 
     FillRect(Message.wParam, Rect(3,3,300,30), GetStockObject(BLACK_BRUSH)); 
     Rectangle(Message.wParam, 15,15, 100, 100); //Test 
     OutputDebugString(PCHar(Format('aa %d %d %d',[Message.WParam, Message.LParam, ChDirComboBox.Handle]))); 
     end; 
    end; 
    FChDirComboWndProc(Message); // process message 
end; 

उत्तर

2

ऐसा करने का तरीका Owner-Drawn Combo Boxes को लागू करना है। एमएसडीएन पर Owner-Drawn Combo Boxes देखें, या डेल्फी नमूना देखें, उदा। Owner Draw - ComboBox

+0

कंबोबॉक्स में शैली ** सीएसड्रॉपडाउन ** है। यह csOwnerDrawFixed या csOwnerDrawVariable के साथ काम नहीं करता है। Combobox ब्राउज़र के पता बार के समान संपादन योग्य होना चाहिए। मैं इस जानकारी को अपने प्रश्न में जोड़ूंगा, भूलने के लिए खेद है। – Codr

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^