Image1.Picture.Icon.Handle := ExtractIcon(0, 'e:\seas\as.dll', 0);
怎样把image1获得的图标显示在listview组件内?请大家帮帮忙

解决方案 »

  1.   

    哎呀,我刚才回答了啊
    创建imagelist,将IMAGE的图片存入其中
    设置LISTVIEW的LAGEIMAGES属性
      

  2.   

    interface 
      
      uses 
        Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
        StdCtrls, ExtCtrls; 
      
      type 
        TBitmapListBox = class(TCustomListBox) 
        private 
          FBitmap : TBitmap; 
      
          procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND; 
          procedure WMHScroll(var Message : TWMCommand); message WM_HSCROLL; 
          procedure WMVScroll(var Message : TWMCommand); message WM_VSCROLL; 
          procedure WMKeyDown(var Message : TWMCommand); message WM_KEYDOWN; 
        protected 
          procedure DrawItem(Index: Integer; Rect: TRect; 
            State: TOwnerDrawState); override; 
        public 
          constructor Create(AComponent : TComponent); override; 
          destructor Destroy; override; 
        published 
          property Align; 
          property Anchors; 
          property BiDiMode; 
          property BorderStyle; 
          property Color; 
          property Columns; 
          property Constraints; 
          property Ctl3D; 
          property DragCursor; 
          property DragKind; 
          property DragMode; 
          property Enabled; 
          property ExtendedSelect; 
          property Font; 
          property ImeMode; 
          property ImeName; 
          property IntegralHeight; 
          property ItemHeight; 
          property Items; 
          property MultiSelect; 
          property ParentBiDiMode; 
          property ParentColor; 
          property ParentCtl3D; 
          property ParentFont; 
          property ParentShowHint; 
          property PopupMenu; 
          property ShowHint; 
          property Sorted; 
          property TabOrder; 
          property TabStop; 
          property TabWidth; 
          property Visible; 
          property OnClick; 
          property OnDblClick; 
          property OnDragDrop; 
          property OnDragOver; 
          property OnDrawItem; 
          property OnEndDock; 
          property OnEndDrag; 
          property OnEnter; 
          property OnExit; 
          property OnKeyDown; 
          property OnKeyPress; 
          property OnKeyUp; 
          property OnMeasureItem; 
          property OnMouseDown; 
          property OnMouseMove; 
          property OnMouseUp; 
          property OnStartDock; 
          property OnStartDrag; 
        end; 
      
        TForm1 = class(TForm) 
          procedure FormCreate(Sender: TObject); 
        private 
          tblb : TBitmapListBox; 
          { Private declarations } 
        public 
          { Public declarations } 
        end; 
      
      var 
        Form1: TForm1; 
      
      implementation 
      
      {$R *.DFM} 
      
      { TBitmapListBox } 
      
      constructor TBitmapListBox.Create(AComponent: TComponent); 
      var 
        FileStream : TFileStream; 
      begin 
        inherited; 
        FileStream := TFileStream.Create('c:\TEMP\RANDOMNN.BMP', fmOpenRead); 
        FBitmap := TBitmap.Create; 
        FBitmap.LoadFromStream(FileStream); 
        FileStream.Free; 
        Style := lbOwnerDrawFixed; 
      end; 
      
      destructor TBitmapListBox.Destroy; 
      begin 
        FBitmap.Free; 
        inherited; 
      end; 
      
      // 在ListBox的背景上画出位图
      procedure TBitmapListBox.WMEraseBkgnd(var Message: TWmEraseBkgnd); 
      begin 
        BitBlt(Message.DC, 0, 0, Width, Height, FBitmap.Canvas.Handle, 0, 0, SRCCOPY); 
      end; 
      
      // Called to draw an item 
      procedure TBitmapListBox.DrawItem(Index: Integer; Rect: TRect; 
        State: TOwnerDrawState); 
      var 
        Flags: Longint; 
      begin 
        // Put code in here to allow owner drawing of items 
        BitBlt(Canvas.Handle, Rect.Left, Rect.Top, Rect.Right - Rect.Left, Rect.Bottom - Rect.Top, FBitmap.Canvas.Handle, Rect.Left, 
        Rect.Top, SRCCOPY); 
          if Index < Items.Count then 
          begin 
            Flags := DrawTextBiDiModeFlags(DT_SINGLELINE or DT_VCENTER); 
            if not UseRightToLeftAlignment then 
              Inc(Rect.Left, 2) 
            else 
              Dec(Rect.Right, 2); 
            Canvas.Brush.Style := bsClear; 
            DrawText(Canvas.Handle, PChar(Items[Index]), Length(Items[Index]), Rect, 
              Flags); 
          end; 
      end; 
      
      // Override to force a repaint of the entire control, otherwise 
      // the bitmap gets corrupte 
      //重载此消息以强制重画整个构件,否则位图会被覆盖
      procedure TBitmapListBox.WMHScroll(var Message: TWMCommand); 
      begin 
        LockWindowUpdate(Self.Handle); 
        inherited; 
        Invalidate; 
        LockWindowUpdate(0); 
      end; 
      
      // Override to force a repaint of the entire control, otherwise 
      // the bitmap gets corrupte 
      procedure TBitmapListBox.WMVScroll(var Message: TWMCommand); 
      begin 
        LockWindowUpdate(Self.Handle); 
        inherited; 
        Invalidate; 
        LockWindowUpdate(0); 
      end; 
      
      // Override to force a repaint of the entire control, otherwise 
      // the bitmap gets corrupt (only when a scroll happens) 
      procedure TBitmapListBox.WMKeyDown(var Message: TWMCommand); 
      var 
        OldTop : integer; 
      begin 
        OldTop := TopIndex; 
        LockWindowUpdate(Self.Handle); 
        inherited; 
      // Should be able to figure out a better way of only invalidating when 
      // necessary, but I wasn't able to figure out the case when a user hits a letter 
      // like, 'm' in this example 
      //  if OldTop <> TopIndex then 
          Invalidate; 
        LockWindowUpdate(0); 
      end; 
      
      { TForm1 } 
      
      procedure TForm1.FormCreate(Sender: TObject); 
      var 
        i : integer; 
      begin 
        tblb := TBitmapListBox.Create(Self); 
        with tblb do 
        begin 
          Parent := Self; 
          Left := 4; 
          Top := 4; 
          Width := 640; 
          Height := 480; 
          for i := 0 to 500 do 
            Items.Add('Monkey vs. Robot!'); 
        end; 
      end; 
      

  3.   

    同意 xdf_hubei(向太傅) 
    用images 而不是image