3

私はヘブライ語環境でプログラミングしているので、TTabControl の上部にあるタブを右から左に表示したいと考えています。BiDiMode プロパティはタブに影響を与えるのではなく、コントロール内に含まれるテキストに影響を与えます。

次のコードを試しました

SetWindowLong (tc.Handle, GWL_EXSTYLE,
               GetWindowLong(tc.Handle, GWL_EXSTYLE)  or
               WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);

これにより、タブが正しく表示されますが、ttabcontrol 内に保持されているコントロールが表示されなくなります。そのため、その使用は多少制限されます。

何か案は?ところで、私は Delphi 7 を使用しています。

ティア、ノアム

4

4 に答える 4

2

これは私のコードではありません。私が見つけたものですが、うまくいくようです。

procedure TForm1.FormCreate(Sender: TObject);
const
  LVM_FIRST = $1000;
  LVM_GETHEADER = LVM_FIRST + 31;
var
  header: thandle;
begin
  header:= SendMessage (TabControl1.Handle, LVM_GETHEADER, 0, 0);
  SetWindowLong (header, GWL_EXSTYLE,
                 GetWindowLong (header, GWL_EXSTYLE)  or
                 WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);

  SetWindowLong (TabControl1.Handle, GWL_EXSTYLE,
                 GetWindowLong (lv.Handle, GWL_EXSTYLE)  or
                 WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);
  lv.invalidate;  
end;
于 2011-02-11T07:17:26.977 に答える
1

D2007 でコードを試してみましたが、windows7 で正常に動作しています。

ただし、Raize コントロールを使用することもできます。それらの PageControl と TabControl は、コードなしで RightToLeft から表示できます。

于 2009-12-11T15:07:02.907 に答える
0

理想的ではありませんが、何もないよりはましな解決策を見つけました。私は TabAlign = tbRight を使用しており、所有者がタブを描画して、テキストが画面に水平に表示されるようにしています。現時点でのタブ コントロールのスクリーン ショットへのリンクは次のとおりです

コントロールの上部にタブがあり、コントロールの左ではなく右に配置されている回答に感謝します。

于 2009-12-12T07:44:38.903 に答える