Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

delphi: Вопрос по TImage (начинающий)

2.2K
18 февраля 2007 года
00mike00
82 / / 17.09.2006
Действие:
Кидаю на форму ТImage, потом в Properties указываю рисунок Untitled1.jpg

Вопрос:
Как сделать чтоб при наведении на этот рисунок он поменялся на Untitled2.jpg
8
18 февраля 2007 года
mfender
3.5K / / 15.06.2005
Ну самое простое:

 
Код:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Image1.Picture.LoadFromFile('имя файла');
end;
9.0K
18 февраля 2007 года
Toxin_F
93 / / 03.01.2007
Цитата: 00mike00
Как сделать чтоб при наведении на этот рисунок он поменялся на Untitled2.jpg



Вот такое решение, если что не ясно спросите.

9.0K
18 февраля 2007 года
Toxin_F
93 / / 03.01.2007
Цитата: mfender
Ну самое простое:

 
Код:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Image1.Picture.LoadFromFile('имя файла');
end;



В таком случае, как только мышь пошевелится, картинка поменяется, но не при наведении на неё.

2.2K
18 февраля 2007 года
00mike00
82 / / 17.09.2006
извините плохо спросил.:)
ведь если так Image1.Picture.LoadFromFile('имя файла');
то когда саму программу переместим в другое место будет выдавать что "не найдена картинка"!
а как сделать чтоб Эти две картинки были уже в самой программе сохранены!
9.0K
18 февраля 2007 года
Toxin_F
93 / / 03.01.2007
Цитата: 00mike00
а как сделать чтоб Эти две картинки были уже в самой программе сохранены!


Поставь два TImage и при наведении меняй Visible первого на False :)

2.2K
18 февраля 2007 года
00mike00
82 / / 17.09.2006
Цитата: Toxin_F
Поставь два TImage и при наведении меняй Visible первого на False :)



в смисле одну поверх другой ???
если есть еще варианты пишите!

9.0K
18 февраля 2007 года
Toxin_F
93 / / 03.01.2007
Цитата: 00mike00
а как сделать чтоб Эти две картинки были уже в самой программе сохранены!


Используй ресурсы: создай файл с ресурсом, помести туда картинки.
В главном модуле после строки {$R *.dfm} допиши {$R имя_файла_с_ресурсом.res}, подгружай рисунки.

Код:
procedure TForm1.FormCreate(Sender: TObject);
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;
2.2K
18 февраля 2007 года
00mike00
82 / / 17.09.2006
Цитата: Toxin_F
Используй ресурсы: создай файл с ресурсом, помести туда картинки.
В главном модуле после строки {$R *.dfm} допиши {$R имя_файла_с_ресурсом.res}, подгружай рисунки.


Аха понял, спасибо!

А вот еще один вопрос:D
Допустим я кинул на форму TImage, потом загрузил картинку( Image1.Picture.LoadFromFile('имя файла'); ) и как сделать чтоб при DoubleClick она открылась (запустилась) ???

9.0K
18 февраля 2007 года
Toxin_F
93 / / 03.01.2007
Цитата: 00mike00
и как сделать чтоб при DoubleClick она открылась (запустилась) ???


Можно создать временный файл и запустить его:

 
Код:
procedure TForm1.Image1DblClick(Sender: TObject);
begin
  image1.Picture.SaveToFile('temp.jpg');
  shellexecute(handle, 'open', 'temp.jpg', nil, nil, sw_show);
end;
, а потом удалить:
 
Код:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if fileexists('temp.jpg') then
    deletefile('temp.jpg');
end;
2.2K
18 февраля 2007 года
00mike00
82 / / 17.09.2006
Цитата: Toxin_F
Можно создать временный файл и запустить его:
 
Код:
procedure TForm1.Image1DblClick(Sender: TObject);
begin
  image1.Picture.SaveToFile('temp.jpg');
  shellexecute(handle, 'open', 'temp.jpg', nil, nil, sw_show);
end;
, а потом удалить:
 
Код:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if fileexists('temp.jpg') then
    deletefile('temp.jpg');
end;


хмм... ошибка
Undeclared identifier: 'shellexecute'

9.0K
19 февраля 2007 года
Toxin_F
93 / / 03.01.2007
Цитата: 00mike00
хмм... ошибка
Undeclared identifier: 'shellexecute'


Нужно добавить в раздел uses ShellApi.

8
19 февраля 2007 года
mfender
3.5K / / 15.06.2005
Цитата: Toxin_F
В таком случае, как только мышь пошевелится, картинка поменяется, но не при наведении на неё.


Это с какого кипариса? Обработчик-то назначен только конкретному TImage...

9.0K
19 февраля 2007 года
Toxin_F
93 / / 03.01.2007
Цитата: mfender
Это с какого кипариса? Обработчик-то назначен только конкретному TImage...


Хорошо, я был не прав. По постановке изначального вопроса твоё решение правильное :)

344
20 февраля 2007 года
Delpher
493 / / 14.08.2005
Цитата: 00mike00
Действие:
Кидаю на форму ТImage, потом в Properties указываю рисунок Untitled1.jpg

Вопрос:
Как сделать чтоб при наведении на этот рисунок он поменялся на Untitled2.jpg




обобщу написанное:

Код:
uses ShellAPI;
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.
9.0K
20 февраля 2007 года
Toxin_F
93 / / 03.01.2007
Цитата: Delpher
обобщу написанное:


И ещё нужно было взять в учет, что рисунки в ресурсах EXE'шника.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог