delphi: Вопрос по TImage (начинающий)
Кидаю на форму ТImage, потом в Properties указываю рисунок Untitled1.jpg
Вопрос:
Как сделать чтоб при наведении на этот рисунок он поменялся на Untitled2.jpg
Y: Integer);
begin
Image1.Picture.LoadFromFile('имя файла');
end;
Вот такое решение, если что не ясно спросите.
Y: Integer);
begin
Image1.Picture.LoadFromFile('имя файла');
end;
В таком случае, как только мышь пошевелится, картинка поменяется, но не при наведении на неё.
ведь если так Image1.Picture.LoadFromFile('имя файла');
то когда саму программу переместим в другое место будет выдавать что "не найдена картинка"!
а как сделать чтоб Эти две картинки были уже в самой программе сохранены!
Поставь два TImage и при наведении меняй Visible первого на False :)
в смисле одну поверх другой ???
если есть еще варианты пишите!
Используй ресурсы: создай файл с ресурсом, помести туда картинки.
В главном модуле после строки {$R *.dfm} допиши {$R имя_файла_с_ресурсом.res}, подгружай рисунки.
begin
image1.Hint:='picture';
application.OnHint:=DoFunc;
end;
procedure TForm1.DoFunc(Sender: TObject);
begin
with image1.Picture.Bitmap do
begin
if application.Hint='picture' then
Handle:=LoadBitmap(HInstance, 'имя_рисунка1')
else
Handle:=LoadBitmap(HInstance, 'имя_рисунка2');
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
image1.Picture.Bitmap.Handle:=loadbitmap(HInstance, 'имя_рисунка1');
end;
В главном модуле после строки {$R *.dfm} допиши {$R имя_файла_с_ресурсом.res}, подгружай рисунки.
Аха понял, спасибо!
А вот еще один вопрос:D
Допустим я кинул на форму TImage, потом загрузил картинку( Image1.Picture.LoadFromFile('имя файла'); ) и как сделать чтоб при DoubleClick она открылась (запустилась) ???
Можно создать временный файл и запустить его:
begin
image1.Picture.SaveToFile('temp.jpg');
shellexecute(handle, 'open', 'temp.jpg', nil, nil, sw_show);
end;
begin
if fileexists('temp.jpg') then
deletefile('temp.jpg');
end;
begin
image1.Picture.SaveToFile('temp.jpg');
shellexecute(handle, 'open', 'temp.jpg', nil, nil, sw_show);
end;
begin
if fileexists('temp.jpg') then
deletefile('temp.jpg');
end;
хмм... ошибка
Undeclared identifier: 'shellexecute'
Undeclared identifier: 'shellexecute'
Нужно добавить в раздел uses ShellApi.
Это с какого кипариса? Обработчик-то назначен только конкретному TImage...
Хорошо, я был не прав. По постановке изначального вопроса твоё решение правильное :)
Кидаю на форму ТImage, потом в Properties указываю рисунок Untitled1.jpg
Вопрос:
Как сделать чтоб при наведении на этот рисунок он поменялся на Untitled2.jpg
обобщу написанное:
procedure TForm1.FormCreate(Sender: TObject);
begin
if SysUtils.FileExists('1.bmp') then
Form1.Image1.Picture.LoadFromFile('1.bmp')
else
showmessage('File not found :((');
end;
//отлавливать момент наведения курсора на рис (а также его уход с компонента)
//можно с помощью
// procedure CMMouseEnter (var message: TMessage); message CM_MOUSEENTER;
// procedure CMMouseLeave (var message: TMessage); message CM_MOUSELEAVE;
// но об этом сейчас не хочу, если сильно интересует - в нете много...
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if SysUtils.FileExists('2.bmp') then
Form1.Image1.Picture.LoadFromFile('2.bmp')
else
showmessage('File not found :(( again');
end;
procedure TForm1.Image1DblClick(Sender: TObject);
begin
shellexecute(handle, 'open', '2.bmp', nil, nil, sw_show);
end;
end.
И ещё нужно было взять в учет, что рисунки в ресурсах EXE'шника.