Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Система";
Поточний архів: 2002.12.23;
Завантажити: [xml.tar.bz2];

Вниз

Кнопки і іконки Знайти схожі гілки


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;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.61 MB
Час: 0.032 c
3-74554
ALxx
2002-12-03 12:43
2002.12.23
Сума в FreeReport (FastReport).


8-74858
SaschaN
2002-09-07 13:00
2002.12.23
Сделать mp3.


1-74771
oddboy
2002-12-11 07:55
2002.12.23
Як динамічно створити CheckBox?


4-75055
_pavel_
2002-11-11 11:09
2002.12.23
Обробляти


7-75022
sego
2002-10-18 10:07
2002.12.23
чи можна програмно відкрити доступ до дисків.





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська