Chcę narysować obraz wewnątrz combobox (prawą krawędź) w Delphi/Win32.Umieszczanie obrazu wewnątrz combobox (prawy brzeg) w Delphi/Win32
Zestaw combobox ma styl csDropDown. To nie działa z kodem csOwnerDrawFixed lub csOwnerDrawVariable.
Comobox powinien być edytowalny podobnie do paska adresu przeglądarki.
Czy istnieje rozwiązanie Win32 bez tworzenia dodatkowego składnika Delphi?
Próbowałem następujące, ale to nie działa. Czy mogę to zrobić z Delphi 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;
Combobox ma styl ** csDropDown **. To nie działa z csOwnerDrawFixed lub csOwnerDrawVariable. Combobox powinien być edytowalny podobnie do paska adresu przeglądarki. Dodam tę informację do mojego pytania, przepraszam, że o tym zapomniałem. – Codr