Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Вниз

Загрука значка 16x16 в Image1   Найти похожие ветки 

 
Supreme   (2002-11-29 17:28) [0]

Как в Image1 загрузить значок (иконку) размером 16x16?


 
Darkwin   (2002-11-29 17:30) [1]

If OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;


 
Supreme   (2002-11-29 21:16) [2]

>Darkwin

ага, именно рисунок значка размером именно 16х16, как на панели быстрого запуска, да?? =)


 
ION T   (2002-11-29 21:45) [3]

класс TIcon...


 
Supreme   (2002-11-29 22:02) [4]

можно пример?


 
apay   (2002-11-29 22:32) [5]

Icon := TIcon.Create;
Icon.Handle := LoadImage( HInstance, "MYICON", IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR );

и никаких гвоздей :)


 
Supreme   (2002-12-07 17:21) [6]

А как это использовать, чтобы оно в image1 появилось? и если файл имеет расширение .lnk ?? (т.е. как в панели быстрого запуска)


 
Supreme   (2002-12-08 16:56) [7]

??


 
ION T   (2002-12-08 18:57) [8]

.lnk это особый вид графических файлов которые обрабатываются секретными морфирующими участками кода ядра написанного для не менее секретного морфирующего виртуального процесора с рандомно генерящимся набором микрокомманд...в общем шансов просмотреть его у тебя мало, а уж куда-то вывести и подавно%)


 
Supreme   (2002-12-10 17:50) [9]

OK. А как например из .exe-файла вытащить его иконку 16x16 и поместить в Image1??


 
Alexander Vasjuk   (2002-12-10 18:15) [10]

LoadImage не работает в NT


 
Supreme   (2002-12-12 17:06) [11]

Так как?


 
esu   (2002-12-12 20:05) [12]

Где-то в NT столкнулся, что маленькая иконка возвращается все равно 32x32, только с худшим качеством. Скретчить видимо нужно.


 
Supreme   (2002-12-12 20:37) [13]

А мож у кого то есть исходник, если раньше сталкивался? Если, да, помогите плиз!


 
Matolch   (2002-12-13 08:35) [14]

function TMainForm.GetIcon(FileName: string; const Large: boolean): TIcon;
var
HL, HS: HICON;
ResPChar: array [0..MAX_PATH] of char;
IconIndex: Word;
begin
Result := TIcon.Create;
if AnsiUpperCase(ExtractFileExt(FileName)) <> ".LNK" then
begin
FindExecutable(PChar(FileName), "C:\", ResPChar);
ExtractIconEx(ResPChar, 0, HL, HS, 1);
if Large
then
Result.Handle := HL
else
Result.Handle := HS;
end
else begin
IconIndex := 0;
Result.Handle := ExtractAssociatedIcon(HInstance, PChar(FileName),IconIndex);
end
end;


PS: Thanx to Masters И.Ш., A.P.


 
Matolch   (2002-12-13 08:37) [15]

Uses ShellAPI;


 
Supreme   (2002-12-13 09:30) [16]

Спасибо конечно. Но а мож можно вытащить иконку из exe-файла, как это делают
многие программы. Типа открываешь exe-файл, а тебе в Image1 идёт его иконка 16х16,
а в Edit1 - путь к той программе. Вот собственно основная проблема.


 
Matolch   (2002-12-13 10:15) [17]

Пли-из:

> FindExecutable(PChar(FileName), "C:\", ResPChar);
> ExtractIconEx(ResPChar, 0, HL, HS, 1);


где FileName - имя открываемого тобой файла, результат можещ увидеть таким образом:


> FindExecutable(PChar(FileName), "C:\", ResPChar);
> Caption := ResPChar;
> ExtractIconEx(ResPChar, 0, HL, HS, 1);

HL - Handle БОЛЬШОЙ иконки, HS - ма-аленькой.
Почитай справку, там конечно, на какой-то тарабарщине всё написано, но если долго смотреть, становится понятно.


 
Matolch   (2002-12-13 10:26) [18]

Дальше - так:

procedure TMainForm.Button237Click(Sender: TObject);
var HochuIconkuBlin: TIcon;
BolshayaIconka: boolean;
MoyFail: string;
begin
MoyFail := "C:\Маи дакументы\Мой файл, из которого я хочу блин извлечь иконку выполняющего этот мой файл приложения";
BolshayaIconka := TRUE; // если FALSE тогда получишь не большую иконку (маленькую)
HochuIconkuBlin := GetIcon(MoyFail,BolshayaIconka);
Canvas.Draw(0,0,HochuIconkuBlin);
end;








 
Игорь Шевченко   (2002-12-13 10:29) [19]

Alexander Vasjuk (10.12.02 18:15)

> LoadImage не работает в NT


Где такая трава растет, поделись ?


 
Supreme   (2002-12-13 13:16) [20]

сделал всё, как написано, а при компиляции пишет:
Function needs reult type


 
Matolch   (2002-12-13 14:45) [21]

Покажи код, блин


 
Supreme   (2002-12-14 10:48) [22]

unit Unit1;

interface

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

type
TMainForm = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;

implementation

{$R *.dfm}
function TMainForm.GetIcon(FileName: string; const Large: boolean): TIcon;
var
HL, HS: HICON;
ResPChar: array [0..MAX_PATH] of char;
IconIndex: Word;
begin
Result := TIcon.Create;
if AnsiUpperCase(ExtractFileExt(FileName)) <> ".LNK" then
begin
FindExecutable(PChar(FileName), "C:\", ResPChar);
ExtractIconEx(ResPChar, 0, HL, HS, 1);
if Large
then
Result.Handle := HL
else
Result.Handle := HS;
end
else begin
IconIndex := 0;
Result.Handle := ExtractAssociatedIcon(HInstance, PChar(FileName),IconIndex);
end
end;

procedure TMainForm.Button1Click(Sender: TObject);
var HochuIconkuBlin: TIcon;
BolshayaIconka: boolean;
MoyFail: string;
begin
MoyFail := "E:\Windows\calc.exe";
BolshayaIconka := TRUE;
HochuIconkuBlin := GetIcon(MoyFail,BolshayaIconka);
Canvas.Draw(0,0,HochuIconkuBlin);
end;

end.


 
Supreme   (2002-12-14 22:04) [23]

Ну так как?


 
Matolch   (2002-12-15 20:14) [24]


> Matolch © (13.12.02 08:37)
> Uses ShellAPI;

Извини, забросил. Занят был типа.


 
Matolch   (2002-12-15 20:35) [25]

И нафига тебе тогда Image1, скажи, пожалста, если ты его не используешь?

> TMainForm = class(TForm)
> Image1: TImage;
> ....................
> HochuIconkuBlin := GetIcon(MoyFail,BolshayaIconka); {хотеть не вредно}
> Canvas.Draw(0,0,HochuIconkuBlin);

Так ты рисуешь на канвасе формы, а не на имидже.
И вообще, имидж (образ, изображение) нужен для того, чтобы в него загружать изображения из файла (напр.), для рисования он пригоден. Но не очень. PaintBox (прямоугольник для рисования) - гораздо лучше.

Добавь в список Uses модуль ShellAPI. Именно поэтому у тебя при компилякции ничего не получается.



 
Supreme   (2002-12-16 16:03) [26]

Не, мне надо потом Image использовать. Типа OnMouseDown, OnMouseMove


 
Matolch   (2002-12-16 20:37) [27]

Уперся, что-ли... Смотрел хоть, или не нашел? PaintBox тоже

> Типа OnMouseDown, OnMouseMove



 
Supreme   (2002-12-17 16:40) [28]

Короче, мне в итоге нужно сделать какбы панель быстрого запуска как в винде. Вот я и хочу в Image1 загрузить иконку выбранного файла, а потом на событии OnClick запускать прогу.


 
Supreme   (2002-12-18 21:09) [29]

Ну так как?


 
Supreme   (2002-12-23 12:39) [30]

??


 
Supreme   (2002-12-23 22:27) [31]

Ну пожалуйста, очень надо. Спрошу конкретно:
Нужно из указанного exe-файла загрузить его значок размером только 16х16 в Image1


 
bak   (2002-12-24 08:49) [32]

а в вынях вроде не в имидж, а во что-то вроде СпидБуттон"а грузят ...


 
Supreme   (2002-12-24 13:06) [33]

Ну так можете помочь?


 
Supreme   (2002-12-24 18:16) [34]

ple-e-e-e-e-e-ease.........


 
Supreme   (2002-12-25 14:00) [35]

Люди, ну где вы? Нужна помощь!! Неужели никто ни сталкивался с этим?


 
Supreme   (2002-12-26 19:14) [36]

Если нет, так и скажите нет и я отстану, не буду форум засорять...


 
Supreme   (2002-12-27 15:47) [37]

Спасибо!


 
DiHLoS   (2002-12-27 16:06) [38]

Попробуй так:

uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
var
FileName: string;
FileInfo: _SHFILEINFOA;
begin
FileName := "c:\windows\notepad.exe";
ShGetFileInfo(PChar(FileName),0, FileInfo, Sizeof(FileInfo), SHGFI_ICON+SHGFI_SMALLICON);
Image1.Picture.Icon.Handle:=FileInfo.hIcon;
end;


 
Supreme   (2002-12-27 20:01) [39]

Спасибо! И где ты раньше был? :-))



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

Форум: "Основная";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.67 MB
Время: 0.052 c
8-24977
seemann
2002-09-21 17:11
2003.01.09
Bass.dll


1-24838
n/a.STealth
2002-12-25 15:15
2003.01.09
TNotifyEvent


1-24970
grigoriy99
2002-12-25 16:07
2003.01.09
ActiveX


14-25039
JurMax
2002-12-18 22:29
2003.01.09
Компонент типа DateTimePicker для БД


1-24892
alxx
2002-12-25 17:07
2003.01.09
Курсы вылют





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский