Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2009, 22:25   #11
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

хмм... ну у TImage оно присутствует точно... кстати, только что на другом компе отрыл установленную Дельфи - проверил - полный аналог Html'овского OnMouseOn...

З.Ы. У меня, кстати RAD Studio 2009, в других версиях проверить не могу.... но сейчас посмотрел - у всех (по крайней мере стандартных) компонентов есть такое событие....
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.

Последний раз редактировалось goblinyara; 08.02.2009 в 22:29.
goblinyara вне форума Ответить с цитированием
Старый 08.02.2009, 22:27   #12
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Просто далеко не у всех событий есть такие события. Точнее, у многих они почему-то скрыты, т.к. объявлены в разделах класса protected. Посмотри, например, у TLabel - там очень легко проверить "наезд"/"съезд" мыши с помощью OnMouseEnter/OnMouseLeave.
Jeni вне форума Ответить с цитированием
Старый 08.02.2009, 22:30   #13
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

2 Jeni:
Цитата:
Лучше в обработчиках MouseMove проверять, не был ли рисунок уже растянут/сжат, чтобы избежать постоянных изменений
Абсолютно согласен... Щас переделаю...
А вот про:
Цитата:
на этапе разработки поставить у Имиджа свойства Center и Stretch в True - картинка сама будет и растягиваться и центроваться
Image.Center:=True (если не ошибаюсь) делает по центру вставленную картинку и при Image.Stretch=True (растягивание картинки до размеров Image) Image.Center не даст никаких эффектов...

2 goblinyara:
Цитата:
OnMouseEnter
У себя чтот такого не вижу... Это в какой версии Делфи?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 08.02.2009, 22:37   #14
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от DomiNick Посмотреть сообщение
Image.Center:=True (если не ошибаюсь) делает по центру вставленную картинку и при Image.Stretch=True (растягивание картинки до размеров Image) Image.Center не даст никаких эффектов...
Верно, при том алгоритме, что был написал эффекта не будет или будут странные эффекты. Но ведь можно сделать и по-другому: заранее установить размеры TImage 200х200, поместить туда картинку, установить Center=True, а во время работы в обработчиках не менять размеры, а менять свойство Stretch - картинка будет сама растягиваться по всей поверхности Имиджа или сжиматься.
Jeni вне форума Ответить с цитированием
Старый 08.02.2009, 22:43   #15
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

DomiNick, я же написал, что в 2009 RAD Studio
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума Ответить с цитированием
Старый 08.02.2009, 22:52   #16
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

2 Jeni:
Хм... Вот что вы имели ввиду... Теперь понятно...

Но думаю такой вариант не пройдёт:
Во-первых размер вставленной картинки должен будет обязательно равняться "размеру маленького изображения" и его нельзя будет регулировать из программы...
А во-вторых изображение будет увеличиваться при попадании курсора в "большое изображение" - то есть курсор ещё не дополз до "маленького изображения" а картинка уже увеличилась...

2 goblinyara:
Ага... А у меня Делфи 7 - в ней в "Object Inspector" нету такого...
Я просто постоянно забываю обновить страницу до того как отправлять новое сообщение...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 08.02.2009, 23:07   #17
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от DomiNick Посмотреть сообщение
Но думаю такой вариант не пройдёт...
Вот совершенно рабочий вариант с использованием Stretch. Нужно только заранее установить свойство Center в True
Код:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if Image1.Tag = 0 then
    if (X in [50..150]) and (Y in [50..150]) then
      begin
        Image1.Tag := 1;
        Image1.Stretch := True;
      end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if Image1.Tag = 1 then
    begin
      Image1.Tag := 0;
      Image1.Stretch := False;
    end;
end;
Jeni вне форума Ответить с цитированием
Старый 08.02.2009, 23:21   #18
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

а... Ну с проверкой попадания в область-то конечно...
Тогда свой новый вариант уже не стану писать - практически такой же тока меняются размеры...

Кстати, хорошая тема получилась... Можно её и дальше развить:
Изменение размера при перекрытии нескольких картинок\объектов;
Плавное изменение размера;
и.т.д.

Так есть ли в Делфи 7 события OnMouseEnter/OnMouseLeave и как их включать..?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 08.02.2009, 23:26   #19
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

2 DomiNick
Таких событий нету в делфи 7, потому и решил создать такую тему =)
Lemo вне форума Ответить с цитированием
Старый 08.02.2009, 23:32   #20
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

2 Jeni
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if Image1.Tag = 0 then
    if (X in [50..150]) and (Y in [50..150]) then
      begin
        Image1.Tag := 1;
        Image1.Stretch := True;
      end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if Image1.Tag = 1 then
    begin
      Image1.Tag := 0;
      Image1.Stretch := False;
    end;
end;

end.
Все норм функционирует =) Спасибо за помощь!

Последний раз редактировалось Lemo; 08.02.2009 в 23:55.
Lemo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер Image изменяется на размер картинки, а сама она рисуется на области первой картинки RPGer Мультимедиа в Delphi 6 20.10.2008 19:54
Размеры изображения RamireZ Мультимедиа в Delphi 5 05.10.2008 09:48
Изменить размеры Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 16.05.2008 20:14
Изменить размеры страницы принтера Shuraken Win Api 1 30.08.2007 05:14
Как изменять размеры StringGrid Мышкой Inbox Компоненты Delphi 4 30.06.2007 14:34