首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从右到左TListView

从右到左TListView
EN

Stack Overflow用户
提问于 2009-10-15 16:31:26
回答 2查看 1.1K关注 0票数 3

我正在编写一个tlistview,让它从右到左显示它的列(以便正确显示希伯来语文本)。我在窗体的create方法中使用了以下代码,其中'lv‘是listview

代码语言:javascript
复制
 SetWindowLong (lv.Handle, GWL_EXSTYLE,
                GetWindowLong(lv.Handle, GWL_EXSTYLE)  or
                WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);

 lv.invalidate;   

虽然这段代码使列表视图中的行正确显示,但标题行从左到右显示!列不匹配,并且每列的标题都是错误的。

有人知道如何让标题行从右向左显示吗?

我使用的是Delphi 7,并不是说这应该会有很大的不同。

TIA,No‘’am

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-15 11:33:46

下面是设置标题和行的完整代码:

代码语言:javascript
复制
procedure TForm1.FormCreate(Sender: TObject);
const
  LVM_FIRST = $1000;      // ListView messages
  LVM_GETHEADER = LVM_FIRST + 31;
var
  header: thandle;
begin
  header:= SendMessage (lv.Handle, LVM_GETHEADER, 0, 0);
  SetWindowLong (header, GWL_EXSTYLE,
                 GetWindowLong (header, GWL_EXSTYLE)  or
                 WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);

  SetWindowLong (lv.Handle, GWL_EXSTYLE,
                 GetWindowLong (lv.Handle, GWL_EXSTYLE)  or
                 WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);
  lv.invalidate;   // get the list view to display right to left
end;
票数 6
EN

Stack Overflow用户

发布于 2009-10-15 11:28:29

我希望这个示例对你有用:

代码语言:javascript
复制
var
  aCol: TListColumn;
  tmp: TListView;
  i: integer;
begin
  tmp := TListView.Create(Self);
  LV.Columns.BeginUpdate;
  try
    for i := LV.Columns.Count-1 downto 0 do
    begin
      aCol := tmp.Columns.Add;
      aCol.Width := LV.Columns[i].Width;
      aCol.Caption := LV.Columns[i].Caption;
    end;
    LV.Columns := tmp.Columns;
  finally
    LV.Columns.EndUpdate;
    tmp.Free;
  end;
end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1571051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档