Форум: "Основная";
Текущий архив: 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.52 MB
Время: 0.01 c