discussion
私たちが持っていたものから、あなたが RTL 読み取りを使用していることを知っており、スタイルもコントロール スタイルにJvTreeView
含める必要があることを追加しました。TVS_RTLREADING
したがって、後期コントロール スタイル (使用したもの) でそれを行う方法は次のとおりです。
procedure TForm1.FormShow(Sender: TObject);
begin
SetWindowLong(JvTreeView1.Handle, GWL_STYLE, GetWindowLong(
JvTreeView1.Handle, GWL_STYLE) or TVS_RTLREADING);
SetWindowLong(JvTreeView1.Handle, GWL_EXSTYLE, GetWindowLong(
JvTreeView1.Handle, GWL_EXSTYLE) or WS_EX_LAYOUTRTL or WS_EX_RIGHT);
end;
コントロール通知の問題は、座標マッピングにあります (this answer
なぜ起こるのかを見てください)。ソースの修正として、3094 行目JvComCtrls.pas
のポイント マッピングを次のように置き換えることができます。ScreenToClient
MapWindowPoints(0, Handle, Point, 1);
メソッドのJvComCtrls.pas
ユニットでは、次のCNNotify
ようになります。
3071 procedure TJvTreeView.CNNotify(var Msg: TWMNotify);
.... ...
3091 inherited;
3092 if Windows.GetCursorPos(Point) then
3093 begin
3094 MapWindowPoints(0, Handle, Point, 1);
3095 case Msg.NMHdr.code of
.... ...