BiDiMode は、右から左に記述する言語を対象としているため、ニーズには実際には適用できません。
TComboBoxEx でそれを行う方法がわかりませんでしたが、TComboBox を使用するとかなり簡単に行うことができます。
TComboBox を追加し、そのスタイルを csOwnerDrawFixed にします。以下のコードでは、TImageList (既に持っている必要があります) と TComboBox の基本的な名前を想定しています。自分の名前に合わせて変更する必要があります。以下のような OnDrawItem イベントを追加します。(少しタルトにしたいかもしれません)。
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
iImageWidth, iTextWidth, iMargin : integer;
iText : string;
iCanvas : TCanvas;
begin
// draw image at right and text right justify
// assume image index = Item for now.
iCanvas := ComboBox1.Canvas;
// need to check state; Just ignore for now.
iImageWidth := ImageList1.Width;
iMargin := 4; // pixels - can calculate instead
iText := ComboBox1.Items[ Index ];
iTextWidth := iCanvas.TextWidth( iText);
ImageList1.Draw( iCanvas, Rect.Right - iImageWidth - iMargin, Rect.Top, Index );
iCanvas.TextOut( Rect.Right - 2 * iMargin - iTextWidth - iImageWidth, Rect.Top, iText);
end;
私はそれをテストしました、そしてそれはうまくいきます
アップデート
これは、正確に示されているコードで動作している私のイメージです