How can I change the icon/item size of a TListView in vsIcon ViewStyle?
<p>I need a control which can display thumbnails, for this I thought <code>TListView</code> with the <code>ViewStyle</code> set as <code>vsIcon</code> would be good enough for my purposes, unfortunately I realised that <code>TImageList</code> only supports images up to 256x256 in size. I know there are 3rd party solutions for this but I had hoped to work with the standard <code>TListView</code>.</p>

<p>The images I need to display are approximately 348x480 so I cannot add them to a imagelist and assign it to a listview.</p>

<p>So then I thought maybe I could store my images in a <code>TList</code> and then ownerdraw the listview, it is quite simple really just by using the <code>CustomDrawItem</code> method and working with the <code>Item.DisplayRect</code> to know exactly where to draw to, something like this (quick example):</p>

<pre><code>procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
  ItemRect: TRect;
  IconRect: TRect;
  CaptionRect: TRect;
begin
  DefaultDraw := False;

  ItemRect := Item.DisplayRect(drBounds);
  IconRect := Item.DisplayRect(drIcon);
  CaptionRect := Item.DisplayRect(drLabel);

  with ListView1 do
  begin
    if cdsHot in State then
    begin
      Canvas.Brush.Style := bsSolid;
      Canvas.Brush.Color := clSkyBlue;
      Canvas.FillRect(ItemRect);
    end;

    if cdsSelected in State then
    begin
      Canvas.Brush.Style := bsSolid;
      Canvas.Brush.Color := clBlue;
      Canvas.FillRect(ItemRect);
    end;

    { my picture list is a custom control that holds bitmaps in a TList }
    if MyPictureList1.Items.Count &gt; 0 then
      MyPictureList1.Draw(Canvas, IconRect.Left + 348 div 4, IconRect.Top + 2, Item.ImageIndex);

   // commented out old code drawing from imagelist
   { if LargeImages &lt;&gt; nil then
    begin
      LargeImages.Draw(Canvas, IconRect.Left + LargeImages.Width div 4, 2, Item.ImageIndex);
    end;  }

    // draw text etc
  end;
end;
</code></pre>

<p>The problem is how to change the size of each listview item? Typically setting the imagelist will change the size of the items, but I cannot use an imagelist because of the size limitations.</p>

<p>I had tried <code>ListView_SetIconSpacing(ListView1.Handle, 348, 480);</code> which did not seem to do anything, I also tried inflating the local rects I assigned but no luck there.</p>

<p>Is it possible to manually set the icon/item size of a listview to be greater than 256px and if so, how could I achieve this?</p>