Avatar billede -benne- Nybegynder
10. marts 2002 - 20:05 Der er 5 kommentarer og
2 løsninger

Ikoner i ListBox

Findes der en måde, hvorpå jeg kan sætte et ikon ud for et item i en listbox?
Avatar billede ziron Nybegynder
10. marts 2002 - 20:24 #1
smid en listbox og en knap og brug dette kode:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShellAPI, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    h : HIcon;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.Style := lbOwnerDrawFixed;
  ListBox1.Clear;
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;  Rect: TRect; State: TOwnerDrawState);
begin
  with (control as TListBox) do
  begin
    Canvas.Brush.Style:=bsSolid;
    Canvas.Brush.Color:=Color;

    if odSelected in State then
      Canvas.Brush.color:=clActiveCaption;

    Canvas.Fillrect(rect);
    Canvas.Textout( Rect.Left+20,Rect.Top,Items[Index]);
    h := ExtractIcon(Handle, PChar('c:\windows\system32' + '\Shell32.dll'), 12);


    if h<>0 then
      DrawIconEx(Canvas.Handle,Rect.left+1,rect.top+1,h,16,16,0,0,di_normal);

    if odFocused in state then
      canvas.DrawFocusRect(rect);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items.Add('Edit1.Text');
end;

end.

/ZIRON
Avatar billede stone Forsker
10. marts 2002 - 22:59 #2
shell32.dll - ligger i system
Avatar billede -benne- Nybegynder
10. marts 2002 - 23:13 #3
jeg ændrede det til \WINNT\ i stedet for windows, og så virkede det :)
Avatar billede ziron Nybegynder
11. marts 2002 - 01:18 #4
det var da godt det kan til at virke...

/ZIRON
Avatar billede -benne- Nybegynder
11. marts 2002 - 07:40 #5
Ziron: Du har ikke en metode til at hente det ud af en ImageList i stedet, vel? Eller hvordan jeg får ikonerne ind ind i en .dll?
Avatar billede borrisholt Novice
11. marts 2002 - 08:45 #6
var der ikke en ide at spørge windows hvor den har sit system biblotek ?

Function GetSystemDirectory : String;
begin
SetLength(Result, MAX_PATH);
Windows.GetSystemDirectory(PChar(Result),MAX_PATH);
SetLength(Result, Pred(Pos(#0,Result)));
end;


Jens B
Avatar billede -benne- Nybegynder
14. marts 2002 - 12:49 #7
Jeg bruger en TListView i stedet - den er nemmere at administrere... ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester