Voglio disegnare un'immagine all'interno di una casella combinata (lato destro) in Delphi/Win32.Inserimento di un'immagine all'interno di una casella combinata (lato destro) in Delphi/Win32
La casella combinata ha lo stile csDropDown. Questo non funziona con csOwnerDrawFixed o csOwnerDrawVariable.
La casella combinata deve essere modificabile in modo simile alla barra degli indirizzi del browser.
Esiste una soluzione Win32 senza creare un componente Delphi aggiuntivo?
Ho provato quanto segue, ma non funziona. Posso farlo con 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;
La casella combinata ha lo stile ** csDropDown **. Questo non funziona con csOwnerDrawFixed o csOwnerDrawVariable. La casella combinata dovrebbe essere modificabile in modo simile alla barra degli indirizzi del browser. Aggiungerò queste informazioni alla mia domanda, mi spiace dimenticarle. – Codr