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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2011, 14:08   #1
casio23
Форумчанин
 
Аватар для casio23
 
Регистрация: 29.12.2010
Сообщений: 186
Плохо обработчки событий ImageMauseDown???

столкнулся с проблемой,не могу реализовать нажатие на изображение в нужном месте картинки.

На форме есть компонент Timage1, в нем изображение,на нем нарисованы 2 прямоугольные кнопки,и одна круглая. Как сделать так что бы при нажатии на эту нарисованную кнопку происходило какое то событие...


P/S если можно примеры....

СПАСИБО!
casio23 вне форума Ответить с цитированием
Старый 01.11.2011, 14:19   #2
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

1 - лучше использовать OnMouseUp
2 - только проверкой на совпадение координат.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 01.11.2011, 14:25   #3
casio23
Форумчанин
 
Аватар для casio23
 
Регистрация: 29.12.2010
Сообщений: 186
По умолчанию

Цитата:
Сообщение от Johnson Посмотреть сообщение
1 - лучше использовать OnMouseUp
2 - только проверкой на совпадение координат.
можно пример...если не тяжело

и как проверять на совпадение координат если они не известны
casio23 вне форума Ответить с цитированием
Старый 01.11.2011, 14:50   #4
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Примера дать не могу - на работе нет компилятора, а на память все параметры события не помню...
Координаты нажатия передаются в параметрах эвента... что-то вроде X,Y:integer;
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 01.11.2011, 14:55   #5
casio23
Форумчанин
 
Аватар для casio23
 
Регистрация: 29.12.2010
Сообщений: 186
По умолчанию

14:55
Цитата:
Сообщение от Johnson Посмотреть сообщение
Примера дать не могу - на работе нет компилятора, а на память все параметры события не помню...
Координаты нажатия передаются в параметрах эвента... что-то вроде X,Y:integer;

ну вот я делаю вот так

Код:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    if Image1.Picture.Bitmap.Empty then
  begin
    // Выполнять анализ
    ShowMessage('ИЗВЕСТНЫ X = ' + IntToSTr(X) + ', Y = ' + IntToStr(Y));
  end;
end;
ничего не происходит

15:08
Код:
исправил вот так, коорднаты клика показывает

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ShowMessage('Coordinates: X=' + IntToStr(X) +
              ' Y=' + IntToStr(Y));
end;
...но а теперь как сделать так что бы нажималось только по нарисованной кнопке на картинке, ведь если изменить размер окна координаты изменяться

Зачем вы отвечаете с цитированием всего предыдущего поста ?
Вы не видите кнопку справа от кнопки "Цитата" ?
Или вам почему-то не видно пустое окно редактора под последним сообщением ?
За оверквотинг у нас штрафуют, имейте это ввиду.
Дабы не нарушать правила раздела, внимательно их почитайте...

Красные жирные циферки видны ?
Это время, когда вы отправляли свои сообщения друг за другом, подряд.
Читаем правила раздела.
По правилам это приравнивается к флуду.

Читаем правила раздела.
Там подробно написано, как следует оформлять код и что получается, если этого не делать.

Последний раз редактировалось artemavd; 22.05.2014 в 08:20.
casio23 вне форума Ответить с цитированием
Старый 01.11.2011, 16:42   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Буду штрафовать вплоть до бана, раз слова не понимаете...
mihali4 вне форума Ответить с цитированием
Старый 01.11.2011, 16:48   #7
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,885
По умолчанию

У Image есть свойства Top и Left - это координаты размещения верхнего угла имейджа на форме, ещё есть Width и Height - это ширина и высота имейджа.
если хотите можете сделать чисто математически. вычислить где центр окружности (отсчитывая от верхенего левого угла имейджа) и в уравнении окружности посчитать попадает ли точка (координаты курсора) в область окружности. учтите это работает только с идеальной окружностью.
Есть ещё дурной способ - узнать числовое значение цвета на Вашей круглой кнопке и через image1.canvas.pixel[x,y{причем тут потребуется перевод в координаты имейджа}] сравнивать с цветом этой области, если цвета совпадают - значит щелкнули по окружности.
phomm вне форума Ответить с цитированием
Старый 01.11.2011, 18:31   #8
casio23
Форумчанин
 
Аватар для casio23
 
Регистрация: 29.12.2010
Сообщений: 186
По умолчанию

Может есть какой то компонент который как бы "приклеиться" в определенной области картинки?
casio23 вне форума Ответить с цитированием
Старый 02.11.2011, 01:19   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Поместите картинку на панель, и на панель же киньте нужные вам кнопки...
mihali4 вне форума Ответить с цитированием
Старый 02.11.2011, 10:46   #10
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,885
По умолчанию

Есть компонент Tshape, умеющий принимать форму окружности и другие, можно его подсовывать, используя что-то вроде
Код:
ControlAtPos(ClientToScreen(MousePos), True, True);
можно проверять попадание в область контрола.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка событий CoRviN88 Помощь студентам 0 16.12.2010 13:46
Реализация событий в С++ sofen.ru Visual C++ 3 03.11.2010 18:51
хроника событий sw3n Безопасность, Шифрование 0 19.11.2009 19:42
Последовательность событий MAcK Общие вопросы Delphi 2 20.11.2008 14:36
Отлов событий Antoha Общие вопросы Delphi 3 26.10.2008 10:20