Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 04:23 06.10.24 
Клубове/ Компютри и Интернет / Delphi Пълен преглед*
Информация за клуба
Тема Re: extracticonex? [re: v_automation]
АвторP (Нерегистриран) 
Публикувано22.04.03 19:48  



//Дефиницията е една и съща в всички варианти
// на Delphi и се намира в ShellAPI
//Просто си пишеш собствена дефиниция на функцията



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ImgList, ExtCtrls, StdCtrls,shellapi;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
TxtPathToFile: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public

{ Public declarations }
end;

var
Form1: TForm1;

implementation

type ThIconArray = array[0..0] of hIcon;
type PhIconArray = ^ThIconArray;

function ExtractIconEx_Main(lpszFile: PChar; nIconIndex: Integer;
phiconLarge: PhIconArray;phiconSmall:PhIconArray;nIcons: UINT): integer; stdcall;
external 'shell32.dll' name 'ExtractIconExA';
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var
NumIcons : integer;
pTheLargeIcons : phIconArray;
pTheSmallIcons : phIconArray;
LargeIconWidth : integer;
SmallIconWidth : integer;
SmallIconHeight : integer;
i : integer;
TheIcon : TIcon;
TheBitmap : TBitmap;
begin


NumIcons :=
ExtractIconEx_Main(PChar(TxtPathToFile.Text) ,
-1,
nil,
nil,
0);
if NumIcons > 0 then
begin
LargeIconWidth := GetSystemMetrics(SM_CXICON);
SmallIconWidth := GetSystemMetrics(SM_CXSMICON);
SmallIconHeight := GetSystemMetrics(SM_CYSMICON);
GetMem(pTheLargeIcons, NumIcons * sizeof(hIcon));
GetMem(pTheSmallIcons, NumIcons * sizeof(hIcon));
FillChar(pTheLargeIcons^, NumIcons * sizeof(hIcon), #0);
FillChar(pTheSmallIcons^, NumIcons * sizeof(hIcon), #0);

ExtractIconEx_Main(PChar(TxtPathToFile.Text),
0,
pTheLargeIcons,
pTheSmallIcons,
numIcons);

for i := 0 to (NumIcons - 1) do
begin
DrawIcon(Form1.Canvas.Handle,
i * LargeIconWidth,
0,
pTheLargeIcons^);
TheIcon := TIcon. Create;
TheBitmap := TBitmap.Create;
TheIcon.Handle := pTheSmallIcons^;
TheBitmap.Width := TheIcon.Width;
TheBitmap.Height := TheIcon.Height;
TheBitmap.Canvas.Draw(0, 0, TheIcon);
TheIcon.Free;
Form1.Canvas.StretchDraw(Rect(i * SmallIconWidth,
100,
(i + 1) * SmallIconWidth,
100 + SmallIconHeight),
TheBitmap);
TheBitmap.Free;
end;

FreeMem(pTheLargeIcons, NumIcons * sizeof(hIcon));
FreeMem(pTheSmallIcons, NumIcons * sizeof(hIcon));
end;



end;

end.



Цялата тема
ТемаАвторПубликувано
* extracticonex v_automation   17.04.03 15:00
. * Re: extracticonex Eмил   18.04.03 12:12
. * Re: extracticonex P   19.04.03 21:03
. * Re: extracticonex? v_automation   22.04.03 16:54
. * Re: extracticonex? P   22.04.03 19:48
. * Re: extracticonex? v_automation   24.04.03 13:21
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.