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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2012, 18:31   #1
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
По умолчанию Определив положение картинки принять за истину

Всем привет!
Делаю тест по информатике и хотелось бы протестировать обучающихся на знание комплектующих.
На форме будет картинка с изображением системного блока (без комплектующих), а сбоку будут картинки с несколькими типами процессоров, жестких дисков и т.д. и вот подскажите как реализовать так чтобы можно было перемещать изображение процессора на место процессора и чтобы программа определила, например материнка у нас с сокетом 775 и имеются картинки image2 - это проц с сокетом АМ2, image3 - это проц с сокетом 775, как реализовать так чтобы пользователь мог перетаскивать картинки и если компонент image3 окажется в некой области на картинке, то например компонент label отобразит верно.
SKS вне форума Ответить с цитированием
Старый 14.01.2012, 19:36   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Долго расписывать нет времени...
Вот, выдрал простой пример из своего блокнота... перемещение картинки по форме
Код:
var    
  x0, y0: integer;
  move: boolean;
  rec: TRect;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if button<>mbLeft then
    move:=false
  else
  begin
    move:=true;
    x0:=x;
    y0:=y;
    rec:=image1.BoundsRect;
  end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if move then
  begin
    Form1.Canvas.DrawFocusRect(rec);
    with rec do
    begin
      left:=Left+x-x0;
      top:=Top+y-y0;
      right:=right+x-x0;
      bottom:=bottom+y-y0;
      x0:=x;
      y0:=y; 
    end;
    Form1.Canvas.DrawFocusRect(rec); 
  end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 Form1.Canvas.DrawFocusRect(rec);
  with image1 do begin
    setbounds(rec.left+x-x0,rec.top+y-y0,width,height); 
    move:=false;
  end;
end;
Ну, и при MouseMove пиши на лейблах все, что угодно
_SERGEYX_ вне форума Ответить с цитированием
Старый 15.01.2012, 04:47   #3
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
По умолчанию

Спасибо!
А как теперь сделать так, чтобы переместив изображение в определенную область программа например показала label1, то есть мне то нужно чтобы учащийся переместил процессор на место процессора, и тогда когда например изображение с процессором image2 будет в определенной области на картинке программа например показала label1, мне вот что основное то нужно.
Если прописать точные координаты, то учащийся переместив изображение хотя бы на 1 пиксел выше, не получит результата и программа засчитает что процессор не "сюда" ставится.
SKS вне форума Ответить с цитированием
Старый 15.01.2012, 05:01   #4
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
По умолчанию

я посмотрел и прописал на кнопке,
if image1.Left=30 then label1.Caption:='верно!';
if image1.top=30 then label1.Caption:='верно!';
ну тут понятно, а как если обучающийся поставит чуть ниже или выше или левее или правее?
SKS вне форума Ответить с цитированием
Старый 15.01.2012, 06:23   #5
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
По умолчанию

Можно ли расширить диапазон распознавания положения картинки?
if image1.Left=30 then label1.Caption:='верно!';
if image1.top=30 then label1.Caption:='верно!';
тут условие будет выполняться если положение картинки точно в заданных координатах, как расширить диапазон например от left=25 до left=35?
SKS вне форума Ответить с цитированием
Старый 15.01.2012, 09:10   #6
TorrentTor
Форумчанин
 
Аватар для TorrentTor
 
Регистрация: 02.11.2011
Сообщений: 105
По умолчанию

Особо не вникая могу предложить
Код:
if (image1.Left>=30) and (image1.Left<=40)then label1.Caption:='верно!';
TorrentTor вне форума Ответить с цитированием
Старый 15.01.2012, 10:03   #7
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
По умолчанию

TorrentTor Спасибо тебе! Работает, остаётся намного доработать и будет замечательно. + тебе!
SKS вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно изменить положение картинки? quarty Общие вопросы Delphi 2 03.01.2011 00:55
Отображение картинки на кнопке WPF. Загрузка картинки из ресурсов. Проблема с Uri. Casper-SC Общие вопросы .NET 0 27.06.2010 23:11
МОНИТОР - положение картинки меняется Altera Компьютерное железо 10 04.04.2008 15:28