Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi TTabControl:从右到左显示选项卡_Delphi_Hebrew - Fatal编程技术网

Delphi TTabControl:从右到左显示选项卡

Delphi TTabControl:从右到左显示选项卡,delphi,hebrew,Delphi,Hebrew,我在希伯来语环境中编程,因此我希望TTabControl顶部的选项卡从右向左显示。BiDiMode属性不影响选项卡,而是影响控件中包含的文本 我尝试了以下代码 SetWindowLong (tc.Handle, GWL_EXSTYLE, GetWindowLong(tc.Handle, GWL_EXSTYLE) or WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT); 这样可以正确显示选项卡,但会阻

我在希伯来语环境中编程,因此我希望TTabControl顶部的选项卡从右向左显示。BiDiMode属性不影响选项卡,而是影响控件中包含的文本

我尝试了以下代码

SetWindowLong (tc.Handle, GWL_EXSTYLE,
               GetWindowLong(tc.Handle, GWL_EXSTYLE)  or
               WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);
这样可以正确显示选项卡,但会阻止ttabcontrol中包含的控件出现,因此其使用受到一定限制

有什么想法吗?顺便说一句,我用的是Delphi7

蒂亚,
不,是的,我用D2007试过代码,它在windows7上运行得很好


但是您可以使用Raize控件,它们的PageControl和TabControl可以从右到左显示,而无需任何代码。

我找到了一个解决方案,虽然不理想,但总比没有好。我使用TabAlign=tbRight,并由所有者绘制选项卡,使其文本在屏幕上显示为水平。这里有一个链接,指向当前选项卡控件的屏幕截图:


我仍然希望得到这样一个答案:选项卡位于控件顶部,但与控件右侧对齐,而不是与左侧对齐。

这不是我的代码。我发现了一些东西,但似乎有用

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;

我使用了下面的代码,工作得很好

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

  SetWindowLong(pgTypes.Handle, GWL_EXSTYLE, GetWindowLong(pgTypes.Handle,
    GWL_EXSTYLE) or WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);
  pgTypes.Invalidate;
end;

pgTypes是Raize控件的TPageControl

+1的名称,还有许多其他组件可以帮助您的程序闪亮。不,Raize将在任何Delphi版本或任何窗口上解决您的问题,它将为您提供更好的界面和更高级的控件。@SAMPro,lv是本例中TabControl的名称。