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
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?
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