Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.05.2012, 22:15
lubafffka lubafffka вне форума
Прохожий
 
Регистрация: 01.05.2012
Сообщения: 3
Репутация: 10
По умолчанию onClick в TImage

как сделать так чтобы при нажатии мышью в определенную область TImage (например X от 0 до 100 а Y от 10 до 20) появлялась новая форма
Ответить с цитированием
  #2  
Старый 01.05.2012, 22:18
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Использовать PtInRect.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 01.05.2012, 22:30
lubafffka lubafffka вне форума
Прохожий
 
Регистрация: 01.05.2012
Сообщения: 3
Репутация: 10
По умолчанию

так? а в point что писать?
Код:
procedure TForm1.ImageGistClick(Sender: TObject);

begin
  myRect := Rect(10,100, 35, 0);
  if PtInRect(myRect, Point(?,?))
       then form2.Show;
end;

end.
Ответить с цитированием
  #4  
Старый 01.05.2012, 22:40
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Чтобы не ловить координаты курсора, удобнее использовать MouseDown, там они уже передаются в параметрах.

Это нонсенс:
Код:
  myRect := Rect(10,100, 35, 0);
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 02.05.2012, 00:06
lubafffka lubafffka вне форума
Прохожий
 
Регистрация: 01.05.2012
Сообщения: 3
Репутация: 10
По умолчанию

Код:
procedure TForm1.ImageGistMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; x, y: Integer);
begin
   if (x >= 10 or x <= 35) and (y >= 0 or y <=100) )
   then
   form2.Show;
 end;
что не так? на х и у ругается
Ответить с цитированием
  #6  
Старый 02.05.2012, 00:10
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

скобки
if ((x >= 10) or (x <= 35)) and ((y >= 0) or (y <=100))
Ответить с цитированием
  #7  
Старый 02.05.2012, 00:12
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

можно так =)
if (x in [10..35]) and (y in [0..100])
Ответить с цитированием
  #8  
Старый 02.05.2012, 00:15
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Для использования Rect-а:
Код:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  if PtInRect(Rect(0, 10, 100, 20), Point(X, Y)) then
    MessageDlg('qwerty', mtInformation, [mbOk], 0);
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:04.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025