Delphi TTabControl:从右到左显示选项卡
我在希伯来语环境中编程,因此我希望TTabControl顶部的选项卡从右向左显示。BiDiMode属性不影响选项卡,而是影响控件中包含的文本 我尝试了以下代码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); 这样可以正确显示选项卡,但会阻
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的名称。