2009-10-15 3 views
3

Я программирую tlistview, чтобы отображать его столбцы справа налево (чтобы правильно отображать текст на иврите). Я использую следующий код в создании методы формы, где «лев» является ListViewСправа налево TListView

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

lv.invalidate; 

Хотя этот код делает линии на дисплее правильно списка следует, строки заголовка отображается слева направо! Столбцы не совпадают, и заголовок для каждого столбца неверен.

У кого-нибудь есть идея, как получить строку заголовка для отображения справа налево?

Я использую Delphi 7, а не то, что это должно иметь большое значение.

ТИА, No'am

ответ

5

Вот полный код, чтобы установить заголовок и строки:

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; 
+0

После выполнения вышеуказанного кода, щелчок правой кнопкой мыши (всплывающее меню) не будет работать! Есть идеи? – mtoloo

0

Я надеюсь, что это sample'll быть полезным для вас:

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

Это не то, что я искал. Я только что нашел ответ - см. Ниже. –

Смежные вопросы