我想将用OpenDialog打开的若干个jpg图片在Listview里面显示缩小图,怎么才能实现?最好能给出代码,例如:
if OpenDialog1.execute() then
begin
  //此处对ListView1进行操作
end;是否要用到ImageList呢?但是ImageList不能存储jpg格式的图片,怎么办?
请指教,谢谢!

解决方案 »

  1.   

    ListView1.Canvas.Draw(0, 0, Image1.Picture.Graphic);
      

  2.   

    再请教:怎么将Image中的jpg图片在ListView中缩小显示?
      

  3.   


    procedure TMainForm.ShareListViewClick(Sender: TObject);
    var
      ListIndex, ListCount, i       : integer;
      ListItem                      : TListItem;
      str                           : string;
      FileInfo                      : TSHFileInfo;
      fPtr                          : pFileItem;
    begin  if ShareListView.Selected = nil then exit;
      ListIndex:=PListitem(ShareListView.Selected.Data)^.index;
      ListCount:=PListitem(ShareListView.Selected.Data)^.Count;
      if ListCount <> -1 then
      begin    ClientPageCtrl.ActivePageIndex :=0;    pTabData(ShareTabSheet.Tag).MyDir:= ShareListView.Selected.SubItems[0];
        pTabData(ShareTabSheet.Tag).MyGroup:= ShareListView.Selected.SubItems[1];
        pTabData(ShareTabSheet.Tag).MyRListItem:= ShareListView.Selected;    CurDirName:= ShareListView.Selected.SubItems[0]+'\';
        CurGroupName:=ShareListView.Selected.SubItems[1];
        AddCap(CurGroupName, CurDirName);    for i:=1 to BrowseListView.Items.Count do Dispose(pFileItem(BrowseListView.Items[i-1].Data));
        BrowseListView.Items.Clear;    //FindIcon-----------------------------------------------------------------
        if bSysIcon then
         with BrowseListView do
         begin
            SmallImages:=TImageList.CreateSize(16,16);
            SmallImages.Handle:=ShGetFileInfo('',0,FileInfo, SizeOf(FileInfo),
                                SHGFI_SMALLICON or SHGFI_ICON or SHGFI_SYSICONINDEX );
         end
        else BrowseListView.SmallImages := ImageList1;
        //-------------------------------------------------------------------------    for i:= 1 to ListCount do
        begin
          ListItem:=BrowseListView.Items.Add;
          str := StrListAll.Strings[ListIndex+i-1];      new(fPtr);
          if str[length(str)]='\' then
          begin
            if not bSysIcon then ListItem.ImageIndex := 0
              else ListItem.ImageIndex := GetFileIconIndex(str);
            delete(str,length(str),1);
            fPtr.ftype := IsDir;
          end
          else
          begin
            if not bSysIcon then ListItem.ImageIndex := GetImgIndex(str)
              else ListItem.ImageIndex := GetFileIconIndex(str);
            fPtr.ftype :=IsFile;
          end;
          ListItem.Data := fPtr;
          listitem.Caption := ExtractFileName(str);
        end;  end
      else  //ListCount <> -1 ,old history
      begin
        ClientPageCtrl.ActivePageIndex :=PListitem(ShareListView.Selected.Data)^.index;
        AddCap(pTabData(ClientPageCtrl.ActivePage.tag)^.MyGroup,
          pTabData(ClientPageCtrl.ActivePage.tag)^.MyDir);
      end;  //============================================================
      if(not IsDoPrevNext) then
      begin
        if CurDirItem <> nil
        then PListItem(CurDirItem.Data)^.NextDirItem := ShareListView.Selected;
        PListItem(ShareListView.Selected.Data)^.PrevDirItem := CurDirItem;
        //caption := caption + '$';
        
        ToolBtnBack.Enabled := true;
      end;
      
      CurDirItem := ShareListView.Selected;
      ChangeBtnStatus;
      //============================================================end;
      

  4.   

    procedure TForm1.Btn1Click(Sender: TObject);
    Const
       MyDocDir = 'C:\My Documents';
       PersonDir = '3hSoft';
    Var
       I : Word;
       SubNodeName : array [1..5] of ShortString;
       RootNode, SubNode : TTreeNode;
       P : PString;
    begin
       SubNodeName[1] := '便笺';
       SubNodeName[2] := '发件箱';
       SubNodeName[3] := '联系人';
       SubNodeName[4] := '任务';
       SubNodeName[5] := '日记';
       TV1.Items.Clear;
       TV1.Items.BeginUpdate;
       New(P);
       P^ := MyDocDir + '\' + PersonDir;
       RootNode := TV1.Items.AddObject(Nil, '个人文件夹', P);
       // 此 Node 的图标已对 Images 属性中取第 0 个了。
       For I := 1 to 5 do
          begin
          New(P);
          P^ := MyDocDir + '\' + PersonDir + '\' + SubNodeName[I];
          SubNode := TV1.Items.AddChildObject(RootNode, SubNodeName[I], P);
          // 如果不想使用图标的话请删除以下两行
          SubNode.ImageIndex := I;
          SubNode.SelectedIndex := I;
          end;
       TV1.Items.EndUpdate;
    end;
      

  5.   

    http://blog.csdn.net/jiangsheng/archive/2003/11/20/3796.aspx