Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

Кнопки и иконки   Найти похожие ветки 

 
Gliph   (2002-10-17 01:18) [0]

Люди помогите с иконками и кнопками что то никак не получается
Как вытащить иконку из *.exe и нарисовать ее на кнопке
SpeedButton1.Glyph
Есть Listbox в нем имена exe файлов по клику Listbox"a меняться должен Glyph
кнопки на иконку из exe
Пожалуйста если можно код.


 
NickolayLi   (2002-10-17 01:22) [1]

посмотри Resxplor в демосах он вытаскивает иконки из длл и еще чего то тама


 
Gliph   (2002-10-17 19:49) [2]

>NickolayLi что то ничего не понял я там.
Иконку вроде бы получается вытащить, но как ее на глифе кнопки отобразить или в битмап конвертнуть?
Если можно пример. Спасибо.


 
NickolayLi   (2002-10-17 23:11) [3]

давай с утра 8)

пока.


 
Gliph   (2002-10-18 00:57) [4]

Давай.


 
Glyph   (2002-10-19 00:11) [5]

Что, никто так не делал ил помочь не хотите?


 
Alex4444444444   (2002-10-19 11:25) [6]

Na skol"ko ya ponyal, u Vas icony v TImageList. Togda nuzhno prosto sozdat" nevidimyj TBitmap i risovat" na ego Canvas"e.


 
Glyph   (2002-10-20 00:36) [7]

Иконки в EXE файлах, и просто их на кнопке не нарисовать: TIcon из Exe файла, а Glyph(свойство) - TBitmap на кнопке. Беда!!!!


 
Glyph   (2002-10-20 00:44) [8]

?????????????


 
Rouse_ ©   (2002-10-20 01:47) [9]

На вот написал на скорую руку

procedure TForm1.Button2Click(Sender: TObject);
var
Icon : hIcon;
IconIndex : word;
Ico:TBitmap;
path:String;
pat: array of byte;
begin
Ico:=TBitmap.Create;
path := "c:\project1.exe";
IconIndex:=0;
SetLength(pat,Length(Path));
Move(Path[1],Pat[0],Length(Path));
Icon := ExtractAssociatedIcon(HInstance,PChar(path),IconIndex);
ico.Width := 32;
ico.Height := 32;
DrawIcon(ico.Canvas.Handle, 0, 0, Icon);
SpeedButton1.Glyph := Ico;
Ico.Free;
end;


Желаю успехов


 
Rouse_ ©   (2002-10-20 01:58) [10]

Вообщето желательно чуть по другому

procedure TForm1.Button2Click(Sender: TObject);
var
Icon : hIcon;
IconIndex : word;
Ico:TBitmap;
path:String;
pat: array of byte;
begin
try
Ico:=TBitmap.Create;
path := "c:\project1.exe";
IconIndex:=0;
SetLength(pat,Length(Path));
Move(Path[1],Pat[0],Length(Path));
Icon := ExtractAssociatedIcon(HInstance,PChar(path),IconIndex);
ico.Width := 32;
ico.Height := 32;
DrawIcon(ico.Canvas.Handle, 0, 0, Icon);
SpeedButton1.Glyph := Ico;
finally
Ico.Free;
FreeMemory(@pat);
end;
end;


Желаю успехов


 
Nick N A   (2002-10-20 08:33) [11]

// ListBox1.Style := lbOwnerDrawFixed
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
Var
Icon : hIcon;
IconIndex : word;
s:String;
begin
IconIndex:=0;
with control as TListBox do Begin
Canvas.FillRect(rect);
s:=Items.Strings[index];
Canvas.TextOut(Rect.Left,rect.Top,s);
s:=s+#0;
Icon := ExtractAssociatedIcon
(HInstance,Pchar(@s[1]),IconIndex);
DrawIconEx(Canvas.Handle, 0,Rect.Top, Icon,ItemHeight,ItemHeight,
0,Brush.handle,8 );
end;
end;


 
MetalFan ©   (2002-10-21 09:23) [12]

> Rouse_ ©
хм... а такой вопрос:
как уменьшить ее размер до 16Х16 ?
помогите плз. на кнопку не влазит(


 
Севостьянов Игорь ©   (2002-10-21 11:02) [13]

Масштабируй


 
Севостьянов Игорь ©   (2002-10-21 12:12) [14]

Например вот так:

procedure TForm1.Button1Click(Sender: TObject);
var
IconHandle: hIcon;
IconIndex: Word;
Path: String;
Icon: TBitmap;
begin
Icon := TBitmap.Create;
try
Icon.Width := 16;//32;
Icon.Height := 16;//32;
Path := Application.ExeName;
IconIndex := 0;
IconHandle := ExtractAssociatedIcon(HInstance, PChar(Path), IconIndex);
DrawIconEx(Icon.Canvas.Handle, 0, 0, IconHandle, 16, 16, 0, 0, DI_NORMAL);
SpeedButton1.Glyph := Icon;
finally
Icon.Free;
end;
end;


 
MetalFan ©   (2002-10-21 16:45) [15]


> Севостьянов Игорь ©

thanks )


 
Ricks ©   (2002-10-21 17:35) [16]

Кстати, если именно из exe, то почему все предлагают Extract AssociatedIcon а не ExtractIcon??? Там ведь можно сразу доставать и большую и маленькую. А потом GetIconInfo, получить HBITMAP и потом уже....


 
Севостьянов Игорь ©   (2002-10-21 19:15) [17]

Ты прав, я не предлагал, например, ничего нового просто ответил, как смаштабировать из предложенного варианта.



Страницы: 1 вся ветка

Текущий архив: 2002.12.23;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
1-74689
sndanil
2002-12-12 14:54
2002.12.23
Docking


4-75038
eruc
2002-11-10 07:06
2002.12.23
блокируем все КЛАВИШИ


1-74776
ДмитрийК.
2002-12-11 10:38
2002.12.23
Создание компонентов в runtime и перемещение их по форме


7-75006
calmterror
2002-10-19 22:03
2002.12.23
Запуск программы из сервиса


14-74924
Ежик
2002-11-18 15:57
2002.12.23
Мастаки из Эстонии...