ListView. Количество полных отображаемых элементов списка.
От: Космос Украина  
Дата: 31.03.06 13:03
Оценка:
Есть острая необходимость изменить свойство VisibleRowCount у ListView. Обясняю для чего:
Есть ListView у которого клиентская область сдвинута вниз — таким образом она стала меньше. Проблема в том, что количество отображаемых элементов он считает так как если бы я ничего не делал с клиентской областью и получаем что несколько элементов отображаются как бы ниже клиентской области и увидеть их нельзя, однако курсором по ним можно гулять и они реагируют на события. Покопавшись пришел к неутешительному выводу, что значение VisibleRowCount осталось неизменным. Посоветуйте как побороть проблему и показать скрывающиеся элементы списка.
Вот пример:

type
  TMyListView = class(TListView)
   procedure WMNCCalcSize(var msg: TWMNCCalcSize); message WM_NCCalcSize;
  end;

procedure TmyListView.WMNCCalcSize(var msg: TWMNCCalcSize);
begin
  // Выделение не клиентской области под заголовок
  if msg.CalcValidRects then
    with msg.CalcSize_Params^.rgrc[0] do
      top := top + 20;
  inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  vl: TMyListView;
  i : longint;
begin
  vl := TMyListView.Create(Self);
  vl.Parent := Self;
  with vl do
  begin
    Left := 16;
    Top := 8;
    RowSelect := True;
    Width := 401;
    Height := 233;
    ViewStyle := vsReport;
  end;
  with vl.Columns.Add do
    Caption := 'Проба';
  for i := 0 to 1255 do
  begin
    with vl.Items.Add do
      Caption := IntToStr(i);
  end;
end;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.